BELFEM 0.9.0
Berkeley Lab Finite Element Framework
Loading...
Searching...
No Matches
pancake.fem Namespace Reference

Classes

class  FemError
class  GeoWriter
class  Domain
class  BoxDomain
class  WedgeDomain
class  PancakeMesh

Functions

 read_msh2 (path)
 run_gmsh (args, cwd, timeout, verbose=False)
 _quad_tris (p00, p10, p11, p01)
 _classify_2d (gnodes, gelems)
 _probe (spiral, inner, outer, release)
 leads_to_plane (spiral, inner, outer, float z_top, float release=0.0)
 leads_to_cylinder (spiral, inner, outer, WedgeDomain wedge, float release=0.0)

Variables

list _KUHN

Detailed Description

FEM mesh of a tape stack along a pancake base curve, BELFEM conventions.

Follows the CORC pipeline (old/python/corc): every surface that gmsh must
respect is generated as a structured triangulation in Python, the air volume
is filled by ``gmsh -3`` over the merged shell, and the result is written as
msh2 with named physical groups plus a matching ``topology`` section.

Structure (compare tapestack3d.geo):

    tape k  (k = 1..N)       thin shell, physical Tape_k
    slab k  (k = 1..N-1)     conductor volume between tape k and k+1,
                             physical Volume_{k+1}, meshed as structured tets
    air                      Volume_1, tets from gmsh
    DomainBoundary           domain faces without terminals or periodicity
    <terminal face>          domain face carrying the two stack end faces as holes
                             (DomainTop for the box, DomainOuter for the wedge)
    DomainLower/Upper        periodic pair of the wedge (master / slave)
    SolderInner_k/Outer_k    end faces of slab k (terminals)
    WallLeft_k/Right_k       tip walls of slab k (conductor-air interface)

The domain is supplied as a `Domain` object (BoxDomain, WedgeDomain).  It
meshes its faces with gmsh -2, reuses the stack nodes on the hole outlines
and, for periodic faces, provides the node pairs and the vertex triples
BELFEM derives the affine map from.

Function Documentation

◆ _classify_2d()

_classify_2d ( gnodes,
gelems )
protected
Split a planar gmsh mesh into per-surface (points, local tris).

◆ _probe()

_probe ( spiral,
inner,
outer,
release )
protected

◆ _quad_tris()

_quad_tris ( p00,
p10,
p11,
p01 )
protected
Two triangles of a grid quad, split along the (0,0)-(1,1) diagonal (Kuhn rule).

◆ leads_to_cylinder()

leads_to_cylinder ( spiral,
inner,
outer,
WedgeDomain wedge,
float release = 0.0 )
PancakeCurve whose leads end with a straight on the outer cylinder of the wedge.

The last user segment of each lead must leave (approximately) radially, i.e.
in the +x direction away from the axis at x = -R0.

◆ leads_to_plane()

leads_to_plane ( spiral,
inner,
outer,
float z_top,
float release = 0.0 )
PancakeCurve whose leads end with a vertical straight at z = z_top (box domain).

◆ read_msh2()

read_msh2 ( path)

◆ run_gmsh()

run_gmsh ( args,
cwd,
timeout,
verbose = False )
Run the gmsh binary.  verbose=True streams gmsh's output to the terminal,
otherwise it is captured and shown only when gmsh fails.

Variable Documentation

◆ _KUHN

list pancake.fem._KUHN
protected
Initial value:
= [((1, 0, 0), (1, 1, 0)), ((1, 0, 0), (1, 0, 1)),
((0, 1, 0), (1, 1, 0)), ((0, 1, 0), (0, 1, 1)),
((0, 0, 1), (1, 0, 1)), ((0, 0, 1), (0, 1, 1))]