Surface Lattice#

Surface lattice can be a design option for lightweight structural component. It is easy to generate the surface lattice using existing meshes of the geometry. In Artisan 0.1.7, user can use existing conformal lattice generation functionality to morphy 2D geometric surface or strut-based lattice onto the 2D Triangle or Quad elements of meshes. All examples here are stored under //Test_json//SurfaceLattice//.

Strut Surface Lattice#

Here is an example (filename: BallSurfaceLattice.txt) of using customized strut lattice definition to generate surface lattice on a ball.

{"Setup":{  "Type" : "Geometry",
            "Geomfile": ".//sample-obj//sphere.stl",
            "Rot" : [0.0,0.0,0.0],
            "res":[0.005,0.005,0.005],
                            "Padding": 5,
            "onGPU": false,
            "memorylimit": 16106127360
            },
 "WorkFlow":{
      "1": {"Add_Lattice":{
                "la_name": ".//Test_json//SurfaceLattice//SurfaceLattice.mld",
                "size": [0.1,0.1,0.1], "thk":0.02, "Rot":[0.0,0.0,0.0], "Trans":[0.0,0.0,0.0], "Inv": false, "Fill": false,
                "Cube_Request": {}
                }
           },
      "2":{
          "Export": {"outfile": ".//Test_results/BallBasicTetNMesh_Lattice.stl"}
          }
               },
 "PostProcess":{"CombineMeshes": true,
            "RemovePartitionMeshFile": false,
            "RemoveIsolatedParts": true,
            "ExportLazPts": true}
 }

Its customized lattice definition is as following. The file SurfaceLattice.mld tells Artisan to check the lattice definition with mesh file.

{
    "type": "ConformalLattice",
    "definition": {
        "meshfile": ".//sample-obj//sphere.stl",
        "la_name" : ".//Test_json//SurfaceLattice//CustomSurfaceLattice_Strut.txt"
    }
}

The file CustomSurfaceLattice_Strut.txt defines the nodes and connectivity of a lattice unit. It reads the original geometry file sphere.stl as mesh, and morphs the strut lattice onto the elements.

{
    "type": "strut",
    "definition": {
        "pts":
            [[0.3333, 0.3333, 0.0],
             [0.0, 0.0, 0.0],
             [1.0, 0.0, 0.0],
             [0.0, 1.0, 0.0]],
        "cnnt":[
            [0, 1],
            [0, 2],
            [0, 3]],
        "ladomain" : "Triangle"
    }
}

Note that the parameter ladomain is triangle that defines the 2D surface strut lattice in a triangle domain. It is possible to define a Quad domain that requires a 2D quadrilateral elements. One also should notice that, the pts coordinates must lay on the x-y plane, which means the z components of nodes should be same. Here the z component is 0. Then the surface lattice on the ball is as following.

_images/Ball_Surface_Lattice.png

Note

User may take advantage of triangle divisions in the stl/obj/ply file format. User may use mesh lattice setup to read in these geometric information to generate the surface lattice.

Addition example in file Crankhandle_SurfaceLattice.txt shows the same style surface lattice on more complicated geometry.

_images/crankhandle_Surface_Lattice.png

Geometry Surface Lattice#

Geometry surface lattice basically morphs the given 2D geometry onto the given mesh. Here is example (filename: Box_SurfaceLattice.txt) of morphing irregular geometry onto a cube with quadrilateral elements with the unit element as showing below.

_images/Box_Surface_Lattice_unit.png
{"Setup":{  "Type" : "Sample",
            "Sample": {"Domain" : [[0.0,200.0],[0.0,200.0],[0.0,200.0]], "Shape": "Box"},
            "Geomfile": "",
            "Rot" : [0.0,0.0,0.0],
            "res":[1.0,1.0,1.0],
            "Padding": 4,
            "onGPU": false,
            "memorylimit": 1073741824000
            },
 "WorkFlow":{
      "1": {"Add_Lattice":{
                "la_name": ".//Test_json//SurfaceLattice//Box_SurfaceLattice.mld",
                "size": [5.0,5.0,5.0], "thk":1.0, "Rot":[0.0,0.0,0.0], "Trans":[0.0,0.0,0.0], "Inv": false, "Fill": false,
                "Cube_Request": {}
                }
           },
      "2":{
          "Export": {"outfile": ".//Test_results/Box_SurfaceLattice.stl"}
          }
               },
 "PostProcess":{"CombineMeshes": true,
            "RemovePartitionMeshFile": false,
            "RemoveIsolatedParts": true,
            "ExportLazPts": true}
}

The file Box_SurfaceLattice.mld defines the surface lattice using BoxShellMesh.med, as following.

{
 "type": "ConformalLattice",
 "definition": {
    "meshfile": ".//Test_json//SurfaceLattice//BoxShellMesh.med",
    "la_name" : ".//Test_json//SurfaceLattice//CustomSurfaceLattice_Geom.txt"
    }
}

and the lattice definition is in the file CustomSurfaceLattice_Geom.txt. Note the parameter ladomain became Quad. It meant only match to quadrilateral element.

{
    "type": "Geom",
    "definition": {
        "file": ".//sample-obj//SurfacePatch.STL",
        "ladomain": "Quad"
        }
}

Here is the result.

_images/Box_Surface_Lattice.png