def test_plot_local_solution_unconformity(): from pygeoiga.nurb.cad import make_unconformity_model from pygeoiga.nurb.nrb_to_gmsh import convert_geometry_mp_to_gmsh geometry = make_unconformity_model(refine=False) mesh, script, physical_tag_id = convert_geometry_mp_to_gmsh( geometry, size=50, save_geo=datapath + "unconformity_model.geo", save_msh=datapath + "unconformity_model.msh") from pygeoiga.FE_solvers.run_fenics import convert_msh_to_xdmf, run_simulation input = datapath + "unconformity_model.msh" convert_msh_to_xdmf(input) nodal_coordinates, temperature_nodes = run_simulation( input, topology_info=physical_tag_id, top_bc=10, bot_bc=40, geometry=geometry, show=False) from pygeoiga.plot.solution_mpl import p_temperature fig, ax = plt.subplots() ax.set_aspect("equal") ax = p_temperature(nodal_coordinates[:, 0], nodal_coordinates[:, 1], temperature_nodes, vmin=temperature_nodes.min(), vmax=temperature_nodes.max(), ax=ax, point=True, fill=False) fig.show()
def test_mesh_mp_unconformity(): from pygeoiga.nurb.cad import make_unconformity_model geometry = make_unconformity_model() mesh, script, physical_tag_id = convert_geometry_mp_to_gmsh( geometry, size=10, save_geo=data_path + "unconformity_model.geo", save_msh=data_path + "unconformity_model.msh") print(script, physical_tag_id) plot_mesh(mesh)
def test_mesh_mp_fault(): from pygeoiga.nurb.cad import make_fault_model geometry = make_fault_model(refine=False) mesh, script, physical_tag_id = convert_geometry_mp_to_gmsh( geometry, size=50, save_geo=data_path + "fault_model.geo", save_msh=data_path + "fault_model.msh") print(script, physical_tag_id) plot_mesh(mesh)
def test_mesh_mp_salt_dome(): from pygeoiga.nurb.cad import make_salt_dome geometry = make_salt_dome(refine=False) mesh, script, physical_tag_id = convert_geometry_mp_to_gmsh( geometry, size=100, save_geo=data_path + "salt_dome_model.geo", save_msh=data_path + "salt_dome_model.msh", mesh_file_type="msh2") print(script, physical_tag_id) plot_mesh(mesh)
def test_mesh_mp_3_layer(): from pygeoiga.nurb.cad import make_3_layer_patches geometry = make_3_layer_patches() mesh, script, physical_tag_id = convert_geometry_mp_to_gmsh( geometry, size=50, save_geo=data_path + "3_layer_anticline.geo", save_msh=data_path + "3_layer_anticline.msh", mesh_file_type="msh2") print(script, physical_tag_id) plot_mesh(mesh)
def test_plot_local_solution_salt(): from pygeoiga.nurb.cad import make_salt_dome from pygeoiga.nurb.nrb_to_gmsh import convert_geometry_mp_to_gmsh geometry = make_salt_dome(refine=False) mesh, script, physical_tag_id = convert_geometry_mp_to_gmsh( geometry, size=100, save_geo=datapath + "salt_dome_model.geo", save_msh=datapath + "salt_dome_model.msh") from pygeoiga.FE_solvers.run_fenics import convert_msh_to_xdmf, run_simulation, p_temperature_fenics input = datapath + "salt_dome_model.msh" convert_msh_to_xdmf(input) nodal_coordinates, temperature_nodes = run_simulation( input, topology_info=physical_tag_id, top_bc=10, bot_bc=40, geometry=geometry, show=False) from pygeoiga.plot.solution_mpl import p_temperature fig, ax = plt.subplots() ax.set_aspect("equal") ax = p_temperature(nodal_coordinates[:, 0], nodal_coordinates[:, 1], temperature_nodes, vmin=temperature_nodes.min(), vmax=temperature_nodes.max(), ax=ax, point=False, fill=True, contour=False, colorbar=True, levels=100) ax = p_temperature(nodal_coordinates[:, 0], nodal_coordinates[:, 1], temperature_nodes, vmin=temperature_nodes.min(), vmax=temperature_nodes.max(), ax=ax, point=False, fill=False, contour=True, colorbar=False, levels=10) fig.show() print(len(temperature_nodes)) #695 200 #2381 100 fig.savefig(datapath + "salt_dome_model_100.png")
def test_create_script_unconformity(): from pygeoiga.nurb.cad import make_unconformity_model from pygeoiga.nurb.nrb_to_gmsh import convert_geometry_mp_to_gmsh geometry = make_unconformity_model(refine=False) mesh, script, physical_tag_id = convert_geometry_mp_to_gmsh( geometry, size=50, save_geo=datapath + "unconformity_model.geo", save_msh=datapath + "unconformity_model.msh") from pygeoiga.FE_solvers.run_moose import create_script input = datapath + "unconformity_model.msh" create_script(input, topology_info=physical_tag_id, top_bc=10, bot_bc=40, geometry=geometry)
def test_create_script_3_layer(): from pygeoiga.nurb.cad import make_3_layer_patches from pygeoiga.nurb.nrb_to_gmsh import convert_geometry_mp_to_gmsh geometry = make_3_layer_patches(refine=False) mesh, script, physical_tag_id = convert_geometry_mp_to_gmsh( geometry, size=10, save_geo=datapath + "3_layer_anticline.geo", save_msh=datapath + "3_layer_anticline.msh") from pygeoiga.FE_solvers.run_moose import create_script input = datapath + "3_layer_anticline.msh" create_script(input, topology_info=physical_tag_id, bot_bc=10, top_bc=40, geometry=geometry)
def test_run_workflow_3_layer_patch(): from pygeoiga.nurb.cad import make_3_layer_patches from pygeoiga.nurb.nrb_to_gmsh import convert_geometry_mp_to_gmsh geometry = make_3_layer_patches(refine=False) mesh, script, physical_tag_id = convert_geometry_mp_to_gmsh( geometry, size=10, save_geo=datapath + "3_layer_anticline.geo", save_msh=datapath + "3_layer_anticline.msh") from pygeoiga.FE_solvers.run_fenics import convert_msh_to_xdmf, run_simulation input = datapath + "3_layer_anticline.msh" convert_msh_to_xdmf(input) nodal_coordinates, temperature_nodes = run_simulation( input, topology_info=physical_tag_id, top_bc=10, bot_bc=40, geometry=geometry)
def test_run_workflow_unconformity(): #carefull: Is too short the corner so it cannot be plotted from pygeoiga.nurb.cad import make_unconformity_model from pygeoiga.nurb.nrb_to_gmsh import convert_geometry_mp_to_gmsh geometry = make_unconformity_model(refine=False) mesh, script, physical_tag_id = convert_geometry_mp_to_gmsh( geometry, size=50, save_geo=datapath + "unconformity_model.geo", save_msh=datapath + "unconformity_model.msh") from pygeoiga.FE_solvers.run_fenics import convert_msh_to_xdmf, run_simulation input = datapath + "unconformity_model.msh" convert_msh_to_xdmf(input) nodal_coordinates, temperature_nodes = run_simulation( input, topology_info=physical_tag_id, top_bc=10, bot_bc=40, geometry=geometry)
def do_FEM(function, T_t, T_b, knot_ins, size): from pygeoiga.nurb.nrb_to_gmsh import convert_geometry_mp_to_gmsh geometry = function(refine=True, knot_ins=knot_ins) name = "temporal" mesh, script, physical_tag_id = convert_geometry_mp_to_gmsh( geometry, size=size, save_geo=datapath + name + ".geo", save_msh=datapath + name + ".msh") from pygeoiga.FE_solvers.run_fenics import convert_msh_to_xdmf, run_simulation input = datapath + name + ".msh" convert_msh_to_xdmf(input) nodal_coordinates, temperature_nodes, mesh, u = run_simulation( input, topology_info=physical_tag_id, top_bc=T_t, bot_bc=T_b, geometry=geometry, show=False) return nodal_coordinates, temperature_nodes, u