Beispiel #1
0
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()
Beispiel #2
0
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)
Beispiel #3
0
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)
Beispiel #4
0
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)
Beispiel #5
0
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)
Beispiel #6
0
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")
Beispiel #7
0
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)
Beispiel #8
0
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)
Beispiel #9
0
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)
Beispiel #10
0
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