Ejemplo n.º 1
0
def test1():
    open("/tmp/t2.geo","w").write("""\
    Point(1) = {0.1, 0.1, 0, 0.1};
    Point(2) = {0.6, 0.1, 0, 0.1};
    Point(3) = {0.6, 0.6, 0, 0.1};
    Point(4) = {0.1, 0.6, 0, 0.1};
    Point(6) = {0.1, 0.6, -0.5, 0.1};
    Point(7) = {0.1, -0, -0.5, 0.1};
    Point(8) = {-0.9, 0.6, -0.5, 0.1};
    Point(9) = {-0.9, 0, -0.5, 0.1};
    Point(13) = {-0.9, 0.1, 0, 0.1};
    Point(17) = {-0.9, 0.6, 0, 0.1};
    Line (1) = {3, 4};
    Line (2) = {4, 1};
    Line (3) = {1, 2};
    Line (4) = {2, 3};
    Line (7) = {6, 3};
    Line (8) = {6, 7};
    Line (9) = {2, 7};
    Line (10) = {1, 7};
    Line (11) = {4, 6};
    Line (25) = {8, 9};
    Line (26) = {9, 13};
    Line (27) = {13, 17};
    Line (28) = {17, 8};
    Line (30) = {6, 8};
    Line (31) = {7, 9};
    Line (35) = {1, 13};
    Line (39) = {4, 17};
    Line Loop (1000013) = {8, -10, -2, 11};
    Plane Surface (13) = {1000013};
    Line Loop (1000015) = {7, 1, 11};
    Plane Surface (15) = {1000015};
    Line Loop (1000017) = {9, -10, 3};
    Plane Surface (17) = {1000017};
    Line Loop (1000019) = {8, -9, 4, -7};
    Plane Surface (19) = {1000019};
    Line Loop (1000021) = {1, 2, 3, 4};
    Plane Surface (21) = {1000021};
    Line Loop (1000032) = {8, 31, -25, -30};
    Ruled Surface (32) = {1000032};
    Line Loop (1000036) = {-10, 35, -26, -31};
    Ruled Surface (36) = {1000036};
    Line Loop (1000040) = {-2, 39, -27, -35};
    Ruled Surface (40) = {1000040};
    Line Loop (1000044) = {11, 30, -28, -39};
    Ruled Surface (44) = {1000044};
    Line Loop (1000045) = {25, 26, 27, 28};
    Plane Surface (45) = {1000045};
    Surface Loop (1000023) = {19, 13, 17, 21, 15};
    Volume (23) = {1000023};
    Surface Loop(1000046) = {44,-13,32,36,40,45};
    Volume(24) = {1000046};
    Physical Volume(100)={23,24};
""")

    g=geom.read_gmsh("/tmp/t2.geo")
    geom.write_tetgen(g,"/tmp/t2.smesh")
Ejemplo n.º 2
0
def mesh():
    meshgeometry="../meshes/t.geo"

    pexpect.run("gmsh -0 %s -o tmp/x.geo"%(meshgeometry))
    g=geom.read_gmsh("../tmp/x.geo")
    g.printinfo()
    geom.write_tetgen(g,"../tmp/t.poly")
    geom.runtetgen("/home/ondra/femgeom/tetgen/tetgen","../tmp/t.poly",
            a=0.001,Q=0.8)
    m=geom.read_tetgen("../tmp/t.1")
    m.printinfo()
    m.writemsh("../tmp/t12.msh")
    m.writexda("../tmp/in.xda")
    m.writeregions("../tmp/t12.regions")
    m.writeBC("../tmp/t12.boundaries")
Ejemplo n.º 3
0
def mesh():
    meshgeometry = "../meshes/t.geo"

    pexpect.run("gmsh -0 %s -o tmp/x.geo" % (meshgeometry))
    g = geom.read_gmsh("../tmp/x.geo")
    g.printinfo()
    geom.write_tetgen(g, "../tmp/t.poly")
    geom.runtetgen("/home/ondra/femgeom/tetgen/tetgen",
                   "../tmp/t.poly",
                   a=0.001,
                   Q=0.8)
    m = geom.read_tetgen("../tmp/t.1")
    m.printinfo()
    m.writemsh("../tmp/t12.msh")
    m.writexda("../tmp/in.xda")
    m.writeregions("../tmp/t12.regions")
    m.writeBC("../tmp/t12.boundaries")
Ejemplo n.º 4
0
def mesh():
    if len( sys.argv ) == 3:
        geom_filename = sys.argv[1]
        vtk_filename = sys.argv[2]
    if len( sys.argv ) == 2:
        geom_filename = sys.argv[1]
        vtk_filename = "tmp/t.1.vtk"
    else:
        geom_filename = "database/box.geo"
        vtk_filename = "tmp/t.1.vtk"

    os.system( "gmsh -0 %s -o tmp/x.geo" % geom_filename )
    g=geom.read_gmsh("tmp/x.geo")
    g.printinfo()
    geom.write_tetgen(g,"tmp/t.poly")
    geom.runtetgen("tmp/t.poly",a=0.03,Q=1.0,quadratic=False,
                   tetgenpath = tetgen_path)

    m = Mesh.from_file("tmp/t.1.node")
    m.write( vtk_filename, io = "auto" )
Ejemplo n.º 5
0
def test1():
    open("/tmp/t1.geo","w").write("""\
Point(1) = {0.1, 0.1, 0, 0.1};
Point(2) = {0.6, 0.1, 0, 0.1};
Point(3) = {0.6, 0.5, 0, 0.1};
Point(4) = {0.1, 0.5, 0, 0.1};
Point(6) = {0.1, 0.4, -0.5, 0.1};
Point(7) = {0.2, -0, -0.5, 0.1};
Line (1) = {3, 4};
Line (2) = {4, 1};
Line (3) = {1, 2};
Line (4) = {2, 3};
Line (7) = {6, 3};
Line (8) = {6, 7};
Line (9) = {2, 7};
Line (10) = {1, 7};
Line (11) = {4, 6};
    """);
    g=geom.read_gmsh("/tmp/t1.geo")
    geom.write_femlab(g,"/tmp/t2.m",export1D=True)
Ejemplo n.º 6
0
def test1():
    open("/tmp/t1.geo", "w").write(
        """\
Point(1) = {0.1, 0.1, 0, 0.1};
Point(2) = {0.6, 0.1, 0, 0.1};
Point(3) = {0.6, 0.5, 0, 0.1};
Point(4) = {0.1, 0.5, 0, 0.1};
Point(6) = {0.1, 0.4, -0.5, 0.1};
Point(7) = {0.2, -0, -0.5, 0.1};
Line (1) = {3, 4};
Line (2) = {4, 1};
Line (3) = {1, 2};
Line (4) = {2, 3};
Line (7) = {6, 3};
Line (8) = {6, 7};
Line (9) = {2, 7};
Line (10) = {1, 7};
Line (11) = {4, 6};
    """
    )
    g = geom.read_gmsh("/tmp/t1.geo")
    geom.write_femlab(g, "/tmp/t2.m", export1D=True)
Ejemplo n.º 7
0
def mesh(tipr=0.5, mesha=0.01, meshQ=0.8, verbose=False):
    s = "".join(open("afm-templ.geo").readlines())
    meshgeometry = "../tmp/t.geo"
    open(meshgeometry, "w").write(s % (tipr))

    pexpect.run("gmsh -0 %s -o ../tmp/x.geo" % (meshgeometry))
    g = geom.read_gmsh("../tmp/x.geo")
    if verbose: g.printinfo()
    geom.write_tetgen(g, "../tmp/t.poly")
    geom.runtetgen("/home/ondra/femgeom/tetgen/tetgen",
                   "../tmp/t.poly",
                   a=mesha,
                   Q=meshQ,
                   quadratic=True,
                   verbose=verbose)
    m = geom.read_tetgen("../tmp/t.1", verbose)
    if verbose: m.printinfo()
    m.writemsh("../tmp/t12.msh", verbose)
    m.writexda("../tmp/in.xda", verbose)
    m.writeBC("../tmp/t12.boundaries", verbose)

    regions = m.regions
    nele = len(m.elements)
    return regions, nele
Ejemplo n.º 8
0
#! /usr/bin/env python

#problem: probably with surface holes, it doesn't work correctly. Also with
# arcs - they approximated by lines.

import sys
sys.path.append("../..")

import pexpect

import geom

pexpect.run("gmsh -0 t.geo -o /tmp/x.geo")
g = geom.read_gmsh("/tmp/x.geo")
g.printinfo()
geom.write_tetgen(g, "/tmp/t.poly")

print "Generating mesh using tetgen..."
geom.runtetgen("/home/ondra/fzu/mesh/tetgen", "/tmp/t.poly")

print "Reading mesh from tetgen..."
m = geom.read_tetgen("/tmp/t.1")
m.writemsh("/tmp/t12.msh")
print "Mesh written to /tmp/t12.msh"
m.writexda("/tmp/in.xda")
print "Mesh written to /tmp/in.xda"
m.writeregions("/tmp/t12.regions")
print "Regions written to /tmp/t12.regions"
m.writeBC("/tmp/t12.boundaries")
print "Boundaries written to /tmp/t12.boundaries"
Ejemplo n.º 9
0
#! /usr/bin/env python

import sys
sys.path.append("../..")

import pexpect

import geom

pexpect.run("gmsh -0 t.geo -o /tmp/x.geo")
g=geom.read_gmsh("/tmp/x.geo")
g.printinfo()
geom.write_tetgen(g,"/tmp/t.poly")

print "Generating mesh using tetgen..."
geom.runtetgen("/home/ondra/fzu/mesh/tetgen","/tmp/t.poly")

print "Reading mesh from tetgen..."
m=geom.read_tetgen("/tmp/t.1")
m.writemsh("/tmp/t12.msh")
print "Mesh written to /tmp/t12.msh"
m.writexda("/tmp/in.xda")
print "Mesh written to /tmp/in.xda"
m.writeregions("/tmp/t12.regions")
print "Regions written to /tmp/t12.regions"
m.writeBC("/tmp/t12.boundaries")
print "Boundaries written to /tmp/t12.boundaries"
Ejemplo n.º 10
0
 def load_geometry(self, meshfile_geo):
     "parses any gmsh *.geo file and loads the geometry"
     pexpect.run("gmsh -0 %s -o %s/x.geo" % (meshfile_geo, self.tmp))
     g = geom.read_gmsh("%s/x.geo" % self.tmp)
     g.printinfo()
     self.g = g
Ejemplo n.º 11
0
 def load_geometry(self, meshfile_geo):
     "parses any gmsh *.geo file and loads the geometry"
     pexpect.run("gmsh -0 %s -o %s/x.geo"%(meshfile_geo,self.tmp))
     g=geom.read_gmsh("%s/x.geo"%self.tmp)
     g.printinfo()
     self.g = g
Ejemplo n.º 12
0
def main():
    version = open( op.join( init_sfepy.install_dir,
                             'VERSION' ) ).readlines()[0][:-1]

    parser = OptionParser( usage = usage, version = "%prog " + version )
    parser.add_option( "--mesh",
                       action = "store_true", dest = "mesh",
                       default = False, help = help['mesh'] )
    parser.add_option( "--2d",
                       action = "store_true", dest = "dim2",
                       default = False, help = help['dim'] )
    parser.add_option( "-o", "", metavar = 'filename',
                       action = "store", dest = "output_filename_trunk",
                       default = "mesh", help = help['filename'] )
    parser.add_option( "--oscillator",
                       action = "store_true", dest = "oscillator",
                       default = False, help = help['oscillator'] )
    parser.add_option( "--well",
                       action = "store_true", dest = "well",
                       default = False, help = help['well'] )
    parser.add_option( "--hydrogen",
                       action = "store_true", dest = "hydrogen",
                       default = False, help = help['hydrogen'] )
    parser.add_option( "--boron",
                       action = "store_true", dest = "boron",
                       default = False, help = help['boron'] )
    parser.add_option( "--dft",
                       action = "store_true", dest = "dft",
                       default = False, help = help['dft'] )
    parser.add_option( "-p", "--plot",
                       action = "store_true", dest = "plot",
                       default = False, help = help['plot'] )

    options, args = parser.parse_args()

    if len( args ) == 1:
        filename_in = args[0];
    elif len( args ) == 0:
        if options.oscillator:
            dim = MeshIO.any_from_filename("tmp/mesh.vtk").read_dimension()
            if dim == 2:
                filename_in = "input/quantum/oscillator2d.py"
            else:
                assert_( dim == 3 )
                filename_in = "input/quantum/oscillator3d.py"
            options.dim = dim
            print "Dimension:", dim
        elif options.well:
            dim = MeshIO.any_from_filename("tmp/mesh.vtk").read_dimension()
            if dim == 2:
                filename_in = "input/quantum/well2d.py"
            else:
                assert_( dim == 3 )
                filename_in = "input/quantum/well3d.py"
            options.dim = dim
            print "Dimension:", dim
        elif options.hydrogen:
            dim = MeshIO.any_from_filename("tmp/mesh.vtk").read_dimension()
            if dim == 2:
                filename_in = "input/quantum/hydrogen2d.py"
            else:
                assert_( dim == 3 )
                filename_in = "input/quantum/hydrogen3d.py"
            options.dim = dim
            print "Dimension:", dim
        elif options.boron:
            dim = MeshIO.any_from_filename("tmp/mesh.vtk").read_dimension()
            if dim == 2:
                filename_in = "input/quantum/boron2d.py"
            else:
                assert_( dim == 3 )
                filename_in = "input/quantum/boron3d.py"
            options.dim = dim
            print "Dimension:", dim
        elif options.mesh:
            try:
                os.makedirs("tmp")
            except OSError, e:
                if e.errno != 17: # [Errno 17] File exists
                    raise
            if options.dim2:
                print "Dimension: 2"
                os.system("cp database/quantum/square.geo tmp/mesh.geo")
                os.system("gmsh -2 tmp/mesh.geo -format mesh")
                os.system("script/mesh_to_vtk.py tmp/mesh.mesh tmp/mesh.vtk")
            else:
                print "Dimension: 3"
                import geom
                from sfepy.fem.mesh import Mesh
                try:
                    from site_cfg import tetgen_path
                except ImportError:
                    tetgen_path = '/usr/bin/tetgen'
                os.system("gmsh -0 database/box.geo -o tmp/x.geo")
                g = geom.read_gmsh("tmp/x.geo")
                g.printinfo()
                geom.write_tetgen(g, "tmp/t.poly")
                geom.runtetgen("tmp/t.poly", a=0.03, Q=1.0, quadratic=False,
                        tetgenpath=tetgen_path)
                m = Mesh.from_file("tmp/t.1.node")
                m.write("tmp/mesh.vtk", io="auto")
            print "Mesh written to tmp/mesh.vtk"
            return
        elif options.dft:
            dim = MeshIO.any_from_filename("tmp/mesh.vtk").read_dimension()
            if dim == 2:
                filename_in = "input/quantum/dft2d.py"
            else:
                assert_( dim == 3 )
                filename_in = "input/quantum/dft3d.py"
            print "Dimension:", dim
            options.dim = dim
        else:
            parser.print_help()
            return