Skip to content
Snippets Groups Projects
Select Git revision
  • 82ef2ab118fb009c015bd2404bcb003f25d6d6d1
  • master default protected
  • steplayer
  • bl
  • pluginMeshQuality
  • fixBugsAmaury
  • hierarchical-basis
  • alphashapes
  • relaying
  • new_export_boris
  • oras_vs_osm
  • reassign_partitions
  • distributed_fwi
  • rename-classes
  • fix/fortran-api-example-t4
  • robust_partitions
  • reducing_files
  • fix_overlaps
  • 3115-issue-fix
  • 3023-Fillet2D-Update
  • convert_fdivs
  • gmsh_4_14_0
  • gmsh_4_13_1
  • gmsh_4_13_0
  • gmsh_4_12_2
  • gmsh_4_12_1
  • gmsh_4_12_0
  • gmsh_4_11_1
  • gmsh_4_11_0
  • gmsh_4_10_5
  • gmsh_4_10_4
  • gmsh_4_10_3
  • gmsh_4_10_2
  • gmsh_4_10_1
  • gmsh_4_10_0
  • gmsh_4_9_5
  • gmsh_4_9_4
  • gmsh_4_9_3
  • gmsh_4_9_2
  • gmsh_4_9_1
  • gmsh_4_9_0
41 results

t5.jl

Blame
  • t5.jl 4.04 KiB
    # This file reimplements gmsh/tutorial/t5.geo in Julia.
    
    import gmsh
    
    model = gmsh.model
    factory = model.geo
    
    gmsh.initialize()
    gmsh.option.setNumber("General.Terminal", 1)
    
    model.add("t5")
    
    lcar1 = .1
    lcar2 = .0005
    lcar3 = .055
    
    factory.addPoint(0.5,0.5,0.5, lcar2, 1)
    factory.addPoint(0.5,0.5,0, lcar1, 2)
    factory.addPoint(0,0.5,0.5, lcar1, 3)
    factory.addPoint(0,0,0.5, lcar1, 4)
    factory.addPoint(0.5,0,0.5, lcar1, 5)
    factory.addPoint(0.5,0,0, lcar1, 6)
    factory.addPoint(0,0.5,0, lcar1, 7)
    factory.addPoint(0,1,0, lcar1, 8)
    factory.addPoint(1,1,0, lcar1, 9)
    factory.addPoint(0,0,1, lcar1, 10)
    factory.addPoint(0,1,1, lcar1, 11)
    factory.addPoint(1,1,1, lcar1, 12)
    factory.addPoint(1,0,1, lcar1, 13)
    factory.addPoint(1,0,0, lcar1, 14)
    
    factory.addLine(8,9, 1);   factory.addLine(9,12, 2)
    factory.addLine(12,11, 3); factory.addLine(11,8, 4)
    factory.addLine(9,14, 5);  factory.addLine(14,13, 6)
    factory.addLine(13,12, 7); factory.addLine(11,10, 8)
    factory.addLine(10,13, 9); factory.addLine(10,4, 10)
    factory.addLine(4,5, 11);  factory.addLine(5,6, 12)
    factory.addLine(6,2, 13);  factory.addLine(2,1, 14)
    factory.addLine(1,3, 15);  factory.addLine(3,7, 16)
    factory.addLine(7,2, 17);  factory.addLine(3,4, 18)
    factory.addLine(5,1, 19);  factory.addLine(7,8, 20)
    factory.addLine(6,14, 21);
    
    factory.addCurveLoop([-11,-19,-15,-18], 22)
    factory.addPlaneSurface([22], 23)
    factory.addCurveLoop([16,17,14,15], 24)
    factory.addPlaneSurface([24], 25)
    factory.addCurveLoop([-17,20,1,5,-21,13], 26)
    factory.addPlaneSurface([26], 27)
    factory.addCurveLoop([-4,-1,-2,-3], 28)
    factory.addPlaneSurface([28], 29)
    factory.addCurveLoop([-7,2,-5,-6], 30)
    factory.addPlaneSurface([30], 31)
    factory.addCurveLoop([6,-9,10,11,12,21], 32)
    factory.addPlaneSurface([32], 33)
    factory.addCurveLoop([7,3,8,9], 34)
    factory.addPlaneSurface([34], 35)
    factory.addCurveLoop([-10,18,-16,-20,4,-8], 36)
    factory.addPlaneSurface([36], 37)
    factory.addCurveLoop([-14,-13,-12,19], 38)
    factory.addPlaneSurface([38], 39)
    
    shells = []
    
    # When the tag is not specified, a new one is automatically provided
    sl = factory.addSurfaceLoop([35,31,29,37,33,23,39,25,27])
    push!(shells, sl)
    
    function cheeseHole(x, y, z, r, lc, shells)
        p1 = factory.addPoint(x,  y,  z,   lc)
        p2 = factory.addPoint(x+r,y,  z,   lc)
        p3 = factory.addPoint(x,  y+r,z,   lc)
        p4 = factory.addPoint(x,  y,  z+r, lc)
        p5 = factory.addPoint(x-r,y,  z,   lc)
        p6 = factory.addPoint(x,  y-r,z,   lc)
        p7 = factory.addPoint(x,  y,  z-r, lc)
    
        c1 = factory.addCircleArc(p2,p1,p7)
        c2 = factory.addCircleArc(p7,p1,p5)
        c3 = factory.addCircleArc(p5,p1,p4)
        c4 = factory.addCircleArc(p4,p1,p2)
        c5 = factory.addCircleArc(p2,p1,p3)
        c6 = factory.addCircleArc(p3,p1,p5)
        c7 = factory.addCircleArc(p5,p1,p6)
        c8 = factory.addCircleArc(p6,p1,p2)
        c9 = factory.addCircleArc(p7,p1,p3)
        c10 = factory.addCircleArc(p3,p1,p4)
        c11 = factory.addCircleArc(p4,p1,p6)
        c12 = factory.addCircleArc(p6,p1,p7)
    
        l1 = factory.addCurveLoop([c5,c10,c4])
        l2 = factory.addCurveLoop([c9,-c5,c1])
        l3 = factory.addCurveLoop([c12,-c8,-c1])
        l4 = factory.addCurveLoop([c8,-c4,c11])
        l5 = factory.addCurveLoop([-c10,c6,c3])
        l6 = factory.addCurveLoop([-c11,-c3,c7])
        l7 = factory.addCurveLoop([-c2,-c7,-c12])
        l8 = factory.addCurveLoop([-c6,-c9,c2])
    
        s1 = factory.addSurfaceFilling([l1])
        s2 = factory.addSurfaceFilling([l2])
        s3 = factory.addSurfaceFilling([l3])
        s4 = factory.addSurfaceFilling([l4])
        s5 = factory.addSurfaceFilling([l5])
        s6 = factory.addSurfaceFilling([l6])
        s7 = factory.addSurfaceFilling([l7])
        s8 = factory.addSurfaceFilling([l8])
    
        sl = factory.addSurfaceLoop([s1, s2, s3, s4, s5, s6, s7, s8])
        v = factory.addVolume([sl])
        push!(shells, sl)
        return v
    end
    
    x = 0
    y = 0.75; z = 0; r = 0.09
    for t in 1:5
        global x, z
        x += 0.166
        z += 0.166
        v = cheeseHole(x, y, z, r, lcar3, shells)
        model.addPhysicalGroup(3, [v], t)
    end
    
    factory.addVolume(shells, 186);
    
    model.addPhysicalGroup(3, [186], 10);
    factory.synchronize()
    gmsh.fltk.run()
    
    model.mesh.generate(3)
    gmsh.write("t5.msh")
    
    gmsh.finalize()