diff --git a/Tests/Data/Mechanics/Linear/SimpleMechanics.ipynb b/Tests/Data/Mechanics/Linear/SimpleMechanics.ipynb index 784f8c366c391d35d79cc058b62980f14c1c9ad4..bce8e2129610108b0141c2bba1ac70c99e7a4d49 100644 --- a/Tests/Data/Mechanics/Linear/SimpleMechanics.ipynb +++ b/Tests/Data/Mechanics/Linear/SimpleMechanics.ipynb @@ -29,7 +29,7 @@ "source": [ "import os\n", "\n", - "out_dir = os.environ.get('OGS_TESTRUNNER_OUT_DIR', '_out')\n", + "out_dir = os.environ.get(\"OGS_TESTRUNNER_OUT_DIR\", \"_out\")\n", "if not os.path.exists(out_dir):\n", " os.makedirs(out_dir)" ] @@ -57,97 +57,121 @@ "model = ogs.OGS(PROJECT_FILE=os.path.join(out_dir, f\"{prj_name}.prj\"))\n", "model.geo.add_geom(filename=f\"./square_1x1.gml\")\n", "model.mesh.add_mesh(filename=f\"./square_1x1_quad_1e2.vtu\")\n", - "model.processes.set_process(name=\"SD\",\n", - " type=\"SMALL_DEFORMATION\",\n", - " integration_order=\"2\",\n", - " specific_body_force=\"0 0\")\n", - "model.processes.set_constitutive_relation(type=\"LinearElasticIsotropic\",\n", - " youngs_modulus=\"E\",\n", - " poissons_ratio=\"nu\")\n", - "model.processes.add_process_variable(process_variable=\"process_variable\",\n", - " process_variable_name=\"displacement\")\n", - "model.processes.add_process_variable(secondary_variable=\"sigma\",\n", - " output_name=\"sigma\")\n", - "model.timeloop.add_process(process=\"SD\",\n", - " nonlinear_solver_name=\"basic_newton\",\n", - " convergence_type=\"DeltaX\",\n", - " norm_type=\"NORM2\",\n", - " abstol=\"1e-15\",\n", - " time_discretization=\"BackwardEuler\")\n", - "model.timeloop.set_stepping(process=\"SD\", type=\"FixedTimeStepping\",\n", - " t_initial=\"0\",\n", - " t_end=\"1\",\n", - " repeat=\"4\",\n", - " delta_t=\"0.25\")\n", - "model.timeloop.add_output(type=\"VTK\",\n", - " prefix=prj_name,\n", - " repeat=\"1\",\n", - " each_steps=\"4\",\n", - " variables=[\"displacement\", \"sigma\"])\n", - "model.media.add_property(medium_id=\"0\",\n", - " phase_type=\"Solid\",\n", - " name=\"density\",\n", - " type=\"Constant\",\n", - " value=\"1\")\n", + "model.processes.set_process(\n", + " name=\"SD\",\n", + " type=\"SMALL_DEFORMATION\",\n", + " integration_order=\"2\",\n", + " specific_body_force=\"0 0\",\n", + ")\n", + "model.processes.set_constitutive_relation(\n", + " type=\"LinearElasticIsotropic\", youngs_modulus=\"E\", poissons_ratio=\"nu\"\n", + ")\n", + "model.processes.add_process_variable(\n", + " process_variable=\"process_variable\", process_variable_name=\"displacement\"\n", + ")\n", + "model.processes.add_process_variable(secondary_variable=\"sigma\", output_name=\"sigma\")\n", + "model.timeloop.add_process(\n", + " process=\"SD\",\n", + " nonlinear_solver_name=\"basic_newton\",\n", + " convergence_type=\"DeltaX\",\n", + " norm_type=\"NORM2\",\n", + " abstol=\"1e-15\",\n", + " time_discretization=\"BackwardEuler\",\n", + ")\n", + "model.timeloop.set_stepping(\n", + " process=\"SD\",\n", + " type=\"FixedTimeStepping\",\n", + " t_initial=\"0\",\n", + " t_end=\"1\",\n", + " repeat=\"4\",\n", + " delta_t=\"0.25\",\n", + ")\n", + "model.timeloop.add_output(\n", + " type=\"VTK\",\n", + " prefix=prj_name,\n", + " repeat=\"1\",\n", + " each_steps=\"4\",\n", + " variables=[\"displacement\", \"sigma\"],\n", + ")\n", + "model.media.add_property(\n", + " medium_id=\"0\", phase_type=\"Solid\", name=\"density\", type=\"Constant\", value=\"1\"\n", + ")\n", "model.parameters.add_parameter(name=\"E\", type=\"Constant\", value=\"1\")\n", "model.parameters.add_parameter(name=\"nu\", type=\"Constant\", value=\"0.3\")\n", - "model.parameters.add_parameter(name=\"displacement0\",\n", - " type=\"Constant\",\n", - " values=\"0 0\")\n", + "model.parameters.add_parameter(name=\"displacement0\", type=\"Constant\", values=\"0 0\")\n", "model.parameters.add_parameter(name=\"dirichlet0\", type=\"Constant\", value=\"0\")\n", "model.parameters.add_parameter(name=\"dirichlet1\", type=\"Constant\", value=\"0.05\")\n", - "model.processvars.set_ic(process_variable_name=\"displacement\",\n", - " components=\"2\",\n", - " order=\"1\",\n", - " initial_condition=\"displacement0\")\n", - "model.processvars.add_bc(process_variable_name=\"displacement\",\n", - " geometrical_set=\"square_1x1_geometry\",\n", - " geometry=\"left\",\n", - " type=\"Dirichlet\",\n", - " component=\"0\",\n", - " parameter=\"dirichlet0\")\n", - "model.processvars.add_bc(process_variable_name=\"displacement\",\n", - " geometrical_set=\"square_1x1_geometry\",\n", - " geometry=\"bottom\",\n", - " type=\"Dirichlet\",\n", - " component=\"1\",\n", - " parameter=\"dirichlet0\")\n", - "model.processvars.add_bc(process_variable_name=\"displacement\",\n", - " geometrical_set=\"square_1x1_geometry\",\n", - " geometry=\"top\",\n", - " type=\"Dirichlet\",\n", - " component=\"1\",\n", - " parameter=\"dirichlet1\")\n", - "model.nonlinsolvers.add_non_lin_solver(name=\"basic_newton\",\n", - " type=\"Newton\",\n", - " max_iter=\"4\",\n", - " linear_solver=\"general_linear_solver\")\n", - "model.linsolvers.add_lin_solver(name=\"general_linear_solver\",\n", - " kind=\"lis\",\n", - " solver_type=\"cg\",\n", - " precon_type=\"jacobi\",\n", - " max_iteration_step=\"10000\",\n", - " error_tolerance=\"1e-16\")\n", - "model.linsolvers.add_lin_solver(name=\"general_linear_solver\",\n", - " kind=\"eigen\",\n", - " solver_type=\"CG\",\n", - " precon_type=\"DIAGONAL\",\n", - " max_iteration_step=\"10000\",\n", - " error_tolerance=\"1e-16\")\n", - "model.linsolvers.add_lin_solver(name=\"general_linear_solver\",\n", - " kind=\"petsc\",\n", - " prefix=\"sd\",\n", - " solver_type=\"cg\",\n", - " precon_type=\"bjacobi\",\n", - " max_iteration_step=\"10000\",\n", - " error_tolerance=\"1e-16\")\n", + "model.processvars.set_ic(\n", + " process_variable_name=\"displacement\",\n", + " components=\"2\",\n", + " order=\"1\",\n", + " initial_condition=\"displacement0\",\n", + ")\n", + "model.processvars.add_bc(\n", + " process_variable_name=\"displacement\",\n", + " geometrical_set=\"square_1x1_geometry\",\n", + " geometry=\"left\",\n", + " type=\"Dirichlet\",\n", + " component=\"0\",\n", + " parameter=\"dirichlet0\",\n", + ")\n", + "model.processvars.add_bc(\n", + " process_variable_name=\"displacement\",\n", + " geometrical_set=\"square_1x1_geometry\",\n", + " geometry=\"bottom\",\n", + " type=\"Dirichlet\",\n", + " component=\"1\",\n", + " parameter=\"dirichlet0\",\n", + ")\n", + "model.processvars.add_bc(\n", + " process_variable_name=\"displacement\",\n", + " geometrical_set=\"square_1x1_geometry\",\n", + " geometry=\"top\",\n", + " type=\"Dirichlet\",\n", + " component=\"1\",\n", + " parameter=\"dirichlet1\",\n", + ")\n", + "model.nonlinsolvers.add_non_lin_solver(\n", + " name=\"basic_newton\",\n", + " type=\"Newton\",\n", + " max_iter=\"4\",\n", + " linear_solver=\"general_linear_solver\",\n", + ")\n", + "model.linsolvers.add_lin_solver(\n", + " name=\"general_linear_solver\",\n", + " kind=\"lis\",\n", + " solver_type=\"cg\",\n", + " precon_type=\"jacobi\",\n", + " max_iteration_step=\"10000\",\n", + " error_tolerance=\"1e-16\",\n", + ")\n", + "model.linsolvers.add_lin_solver(\n", + " name=\"general_linear_solver\",\n", + " kind=\"eigen\",\n", + " solver_type=\"CG\",\n", + " precon_type=\"DIAGONAL\",\n", + " max_iteration_step=\"10000\",\n", + " error_tolerance=\"1e-16\",\n", + ")\n", + "model.linsolvers.add_lin_solver(\n", + " name=\"general_linear_solver\",\n", + " kind=\"petsc\",\n", + " prefix=\"sd\",\n", + " solver_type=\"cg\",\n", + " precon_type=\"bjacobi\",\n", + " max_iteration_step=\"10000\",\n", + " error_tolerance=\"1e-16\",\n", + ")\n", "try:\n", " model.write_input()\n", - " model.run_model(logfile=os.path.join(out_dir, f\"{prj_name}.txt\"), args=f\"-o {out_dir}\")\n", + " model.run_model(\n", + " logfile=os.path.join(out_dir, f\"{prj_name}.txt\"), args=f\"-o {out_dir}\"\n", + " )\n", "except Exception as inst:\n", " print(f\"{type(inst)}: {inst.args[0]}\")\n", "\n", "from datetime import datetime\n", + "\n", "print(datetime.now())" ] }, @@ -183,19 +207,52 @@ "\n", "pvdfile = vtuIO.PVDIO(f\"{out_dir}/{prj_name}.pvd\", interpolation_backend=\"scipy\", dim=2)\n", "time = pvdfile.timesteps\n", - "points={'pt0': (0.3,0.5,0.0), 'pt1': (0.24,0.21,0.0)}\n", - "displacement_linear = pvdfile.read_time_series(\"displacement\", points, interpolation_method=\"linear\")\n", - "displacement_nearest = pvdfile.read_time_series(\"displacement\", points, interpolation_method=\"nearest\")\n", + "points = {\"pt0\": (0.3, 0.5, 0.0), \"pt1\": (0.24, 0.21, 0.0)}\n", + "displacement_linear = pvdfile.read_time_series(\n", + " \"displacement\", points, interpolation_method=\"linear\"\n", + ")\n", + "displacement_nearest = pvdfile.read_time_series(\n", + " \"displacement\", points, interpolation_method=\"nearest\"\n", + ")\n", "\n", "import matplotlib.pyplot as plt\n", - "plt.plot(time, displacement_linear[\"pt0\"][:,0], \"b-\", label=\"$u_x$ pt0 linear interpolated\")\n", - "plt.plot(time, displacement_nearest[\"pt0\"][:,0], \"b--\", label=\"$u_x$ pt0 closest point value\")\n", - "plt.plot(time, displacement_linear[\"pt0\"][:,1], \"g-\", label=\"$u_y$ pt0 linear interpolated\")\n", - "plt.plot(time, displacement_nearest[\"pt0\"][:,1], \"g--\", label=\"$u_y$ pt0 closest point value\")\n", - "plt.plot(time, displacement_linear[\"pt1\"][:,0], \"r-\", label=\"$u_x$ pt1 linear interpolated\")\n", - "plt.plot(time, displacement_nearest[\"pt1\"][:,0], \"r--\", label=\"$u_x$ pt1 closest point value\")\n", - "plt.plot(time, displacement_linear[\"pt1\"][:,1], \"m-\", label=\"$u_y$ pt1 linear interpolated\")\n", - "plt.plot(time, displacement_nearest[\"pt1\"][:,1], \"m--\", label=\"$u_y$ pt1 closest point value\")\n", + "\n", + "plt.plot(\n", + " time, displacement_linear[\"pt0\"][:, 0], \"b-\", label=\"$u_x$ pt0 linear interpolated\"\n", + ")\n", + "plt.plot(\n", + " time,\n", + " displacement_nearest[\"pt0\"][:, 0],\n", + " \"b--\",\n", + " label=\"$u_x$ pt0 closest point value\",\n", + ")\n", + "plt.plot(\n", + " time, displacement_linear[\"pt0\"][:, 1], \"g-\", label=\"$u_y$ pt0 linear interpolated\"\n", + ")\n", + "plt.plot(\n", + " time,\n", + " displacement_nearest[\"pt0\"][:, 1],\n", + " \"g--\",\n", + " label=\"$u_y$ pt0 closest point value\",\n", + ")\n", + "plt.plot(\n", + " time, displacement_linear[\"pt1\"][:, 0], \"r-\", label=\"$u_x$ pt1 linear interpolated\"\n", + ")\n", + "plt.plot(\n", + " time,\n", + " displacement_nearest[\"pt1\"][:, 0],\n", + " \"r--\",\n", + " label=\"$u_x$ pt1 closest point value\",\n", + ")\n", + "plt.plot(\n", + " time, displacement_linear[\"pt1\"][:, 1], \"m-\", label=\"$u_y$ pt1 linear interpolated\"\n", + ")\n", + "plt.plot(\n", + " time,\n", + " displacement_nearest[\"pt1\"][:, 1],\n", + " \"m--\",\n", + " label=\"$u_y$ pt1 closest point value\",\n", + ")\n", "plt.legend()\n", "plt.xlabel(\"t\")\n", "plt.ylabel(\"u\")"