meowvery / FEMcell helpback to FEMcell

FEMcell: how to use it

  1. the screen
  2. load an example
  3. import CAD or a mesh, or build a body
  4. thickness and material
  5. meshing
  6. element type and integration
  7. picking where things go
  8. supports, springs, enforced displacement
  9. links and MPCs
  10. contact
  11. large deflection
  12. loads
  13. reading results
  14. modal and buckling
  15. limits

01the screen

Toolbar: examples, import, open json, save json, then mesh, solve and results. Models save and open as JSON files.

Left list: mesh settings, then bodies, points, sets, links (rbe2 / rbe3), mpcs (tie / equation), supports, loads, load cases, combinations, contact and analysis. Each group has a + add button. Pick an item to edit it.

Right panel: edits whatever is selected.

Show and hide: ctrl+b hides the selection, ctrl+shift+b shows only the selection and ctrl+shift+u shows everything. This works on bodies, elements and markers. Each body in the tree has an eye toggle, and mesh lines have their own toggle. Drag panel edges to resize them; the legend can be dragged too.

View: the mouse works as in NX. Middle-drag rotates freely, with no stop at the poles. Press and hold the middle button on the model for a moment to rotate about that point (a small cyan marker shows it); otherwise the view rotates about its centre. shift+middle-drag or middle+right drag pans. ctrl+middle-drag or left+middle drag zooms; scroll zooms toward the cursor. Left click picks and left-drag box-picks. A right click opens a small view menu: fit, iso, top, front, side, reset. f or ctrl+f fits the view and home resets to iso. On a trackpad, alt+drag rotates and alt+shift+drag pans. Two-finger pinch zooms and pans on touch. Over the view, scroll and pinch move the model only, not the page. On screens wider than 900 px the page itself doesn't scroll: each panel scrolls on its own. The iso, top, front and side buttons snap the camera, and fit brings the whole model back. bg sets a background image, GIF or video from a file or link, with opacity and speed sliders. It can also put one GIF on every element, tinted with the contour colour and playing faster at higher stress.

Units: set per model by units in the model file: N-mm-MPa (default, also written SI or mm), N-m-Pa, lbf-in-psi or consistent (no unit labels). Every length, force, stress, stiffness and density in the file is read in that system. Imports and the examples use N-mm-MPa.

On a phone the three panels become tabs: model (the list), view (3D) and edit (properties).

02load an example

Press examples, pick one and press solve. Each one shows its hand-calc values under reference values.

03import CAD or a mesh, or build a body

Press import (STEP, IGES, STL or OBJ) or drop the file on the page. A dropped .json opens as a model.

STEP and IGES

itemwhat the code does
extensions.step, .stp, .iges, .igs. A dropped .p21 is read as STEP; the file picker doesn't list it.
what importsSheet (surface) bodies only, as shell mid-surfaces. Each one becomes a cad body that keeps its CAD faces and edges.
solidsAny closed (watertight) body counts as a solid and is skipped: "error: solid bodies aren't supported; export sheet/surface bodies (names)." Sheet bodies in the same file still import. A file with only solids imports nothing. Mid-surfaces aren't extracted from solids.
size limit25 MB per file.
file checksBefore reading, the file is checked for these errors: empty, not a STEP / IGES file, an STL saved as .step, or a STEP file cut short (no END-ISO-10303-21). A file the CAD kernel can't read gives "could not be read as STEP/IGES".
progressA progress card shows the stage (loading the CAD kernel, reading, finding faces and edges) and elapsed time. cancel stops the import.

Import report, shown before anything is added:

itemwhat it shows or sets
body tablePer sheet body: name, faces, edges, area (mm²) and bounding box (mm), all as read and before any units override. Unnamed bodies get the file name, or the file name plus a number.
read timeSeconds for the whole read.
file unitsDefaults to the unit in the file header (STEP length unit; IGES unit flag), shown in brackets, or "none, read as mm". Geometry is converted to mm on read, then to the model's length unit. Picking mm, cm, m, inch or ft rescales by that unit over the header unit.
thicknessIn the model length unit. Default 2, or 0.063 when the model is in inches.
weld bodies whose edges lie on another bodyShown when there's more than one body, on by default. Adds a weld connection for each pair where a free edge of one body lies on the other. The edge is imprinted on the other body's faces, so the two meshes share nodes.
import n bodies / cancelAdds the bodies to the open model, or starts a new N-mm-MPa model if none is open.

Imported CAD bodies are 6061-T6 with Q4 elements, quad shape and element size = bounding-box diagonal / 40. Curved edges get at least one division per 18° of turn. Four-sided CAD faces get a structured all-quad mesh. To size CAD edges, pick edges, a chain or a loop and choose edge sizing on the selection bar: set an element size (a maximum: the count rounds up) or a number of elements (1 to 2000 per edge; closed edges such as a hole need 3 or more), with an optional bias ratio (largest / smallest element, 1 to 1000; small at the start, the end, the middle or both ends). On a chain or loop, the start follows the chain from the first picked edge, and an arrow beside each edge points from the small elements to the large ones; the flip boxes turn single edges round. An edge split by a weld keeps its count and bias, with a node moved onto the split. If an edge is in two edge sizings, a number of elements beats a size, the smaller size wins, the later number wins, and the winner's bias is used. Edge sizing is saved by edge name, so it holds through a remesh, and the seed marks show where the mesh nodes will go. Selectors: body/face:Fn, body/edge:En and body/boundary. Edge seeds use the key edge:En. If a free edge lies on another CAD body with no weld between them, solving gives a heads-up naming the edge.

STL and OBJ

A surface mesh comes in as the mid-surface of a shell body named part, 2 mm thick, 6061-T6, T3 elements. Nodes closer than the merge tolerance are joined. Units are read as mm, so a part 25.4× too small was exported in inches. Limit: 60k nodes per import. A closed solid STL comes in as its outer skin.

Build: flat plate, bent plate (bracket), cylinder or tube, cone, curved roof, box with any faces open, hemisphere (dome) or sphere. Built bodies have named edges and holes, so supports, loads and refinements can snap to them. Holes are available on plate and bent plate bodies.

04thickness and material

Set thickness per body. It's the full wall thickness, centred on the mid-surface. Pick a material from the list. The list gives typical E, Poisson's ratio and density with a source for each. Allowables come from public-domain MIL-HDBK-5J where we have them.

For your own material, right-click Materials in the tree (or press +) and enter E, Poisson's ratio, density and, optionally, Fty and Ftu. duplicate as custom copies a built-in so you can edit it. Custom materials are saved in the model and in a library in this browser, which you can import and export as a file. The allowable check uses a custom material's Fty and Ftu when they're given. Density is in kg/m³; E, Fty and Ftu follow the model's units. A copy of a built-in keeps "user, copied from" and the original citation in its source. Built-in ids (for example the 5J fem- ids) can't be reused: a custom material or library entry with one is given a new custom- id. E must be between 0.0001 and 2,000,000 MPa, Fty can't be more than Ftu, and names must differ. The stress check also gives max von Mises / Ftu for a custom material with Ftu.

Rigid parts: set stiffness behavior to rigid in a part's details. The part moves as one piece tied to its centroid, or to a reference point you pick; supports, loads, gravity, contact and welds still act on it. Its mass, centroid and inertia show under resolved. Results show its displacement and no stress (blank in the csv). Rigid parts welded together move as one about one reference point; giving them different points is an error. In buckling, the part adds no stiffness of its own; the loads it carries turn with it. With large deflection on, it turns with its reference point at any angle; supports, links and welds on it stay small-rotation.

05meshing

Open the mesh panel with mesh on the toolbar or mesh settings at the top of the left list. Each body also has a mesh block in its own properties. Geometry and mesh edits remesh automatically. Any edit marks the last results out of date.

mesh panel

controlwhat it does
global sizeElement size for every body that has no size of its own. In the model's length unit. Blank means each body uses its own size or auto.
shapequad (default) gives Q4 (MITC4), tri gives T3. A body that names its own element type keeps it.
estimateApproximate element count for the current sizes, scaled from the last mesh.
per-body overridesOne row per body: size, shape (global, quad or tri; fixed for imported bodies), number of refine entries and current element count el. If a body has its own size while a global size is set, a heads-up names it and use global clears the body size.
refinementsEvery local refinement in the model, each with at and size. remove deletes one.
preview mesh / meshRun the mesher now and report nodes, elements, the size range used and the number of refinements.

Which size wins: a refinement, then the body size, then the global size, then auto. Auto is 1/20 of the longest side of the body's flat (u, v) layout. An imported body keeps its own triangles unless remesh at this size is ticked.

body mesh block

controlwhat it does
element sizeThis body's size. Blank uses the global size or auto.
mesh shapequad (default) or tri. Built bodies only.
remesh at this sizeSTL and OBJ bodies only. Replaces the imported triangles with an isotropic triangle mesh at the body or global size.
holesPlate and bent plate only: id, centre (u, v in body coordinates; bent plate adds the leg), radius.
local refinementRefinements on this body. + refine refines what is selected in the view; with nothing selected it adds the next unrefined hole, then edge, of this body. New entries get half the body's current size.

refinement targets

atrefines
body/hole:h1around a hole (h* for all holes)
body/edge:x0along a named edge
body/bendacross the bends of a bent plate
body/line:idalong an imprinted line
region:[u0,v0]-[u1,v1]a rectangle in body (u, v) coordinates
box:[x0,y0,z0]-[x1,y1,z1]the part of the body inside a box, in model coordinates. A box that misses the body is skipped with a heads-up.

The refine button on the selection bar does the same as + refine: a named hole, edge, bend or line is used as-is, anything else becomes a box around the picked nodes padded by 0.25 x the body size. Refining something already refined keeps the smaller size. On a mapped mesh the refined size fills the rows and columns that cross the target. On a free mesh the size grows away from the target by 0.3 x the distance until it reaches the body size.

method, seeds (model file only)

key under meshwhat it does
"method": "mapped"Default. Structured grid. A plate or bent plate with holes is meshed in blocks with graded rings around each hole. If the holes are too close to each other, an edge, a line or a bend, it falls back to quad-dominant (tri: free triangles) and says so.
"method": "quad_dominant"Free mesh: triangles merged into quads in pairs. Plate and bent plate only; other bodies stay mapped with a heads-up. "free" means the same.
"all_quad": trueWith quad-dominant and shape quad, makes an all-quad mesh.
"seeds": {"edge": n}Fixes the element count on a named edge, 1 to 2000.

merging

Nodes closer than the merge tolerance are joined into one. Set it on the model row, under advanced (mesh.tol); default 1e-6 x the model size. To keep bodies apart so an MPC can join them, tick keep bodies unmerged on a tie, or set "merge_coincident": false under mesh in the model file. Nodes still merge inside each body.

mesh quality

After a mesh the panel lists mesh quality with the quad and tri counts, then metric, worst, limit and count over. show highlights the elements over a limit.

metriclimitmeasured as
aspect ratio≤ 5longest / shortest midline (quads) or edge (tris)
skew, deg≤ 4590 minus the angle between the quad midlines
tri min angle, deg≥ 20smallest corner of a triangle
warp, deg≤ 10angle between the two halves of a quad
jacobian ratio≥ 0.2smallest / largest corner jacobian of a quad

An inverted or zero-area element is an error and names the element. plot mesh quality (or mesh quality under show) colours each element by its worst metric over its limit, 1 = at the limit. The same check is in results > diagnostics.

Size limits: 1,500,000 elements and 4,000,000 degrees of freedom, or less if the browser runs out of memory. Meshing stops with an error above either. Models over 120,000 degrees of freedom use a multithreaded iterative solver; smaller models, contact, modal and buckling use the direct solver. Chrome runs it on several threads, Safari on one.

06element type and integration

Each body has its own element type, integration scheme and drilling factor, under the body's advanced settings.

elementwhat runs
Q44-node MITC4 quad. Default for built bodies.
T33-node tri, CST membrane + DKT bending. Default for STL and OBJ imports.
T6Not in this build: runs as T3.
Q8 / Q9Not in this build: run as Q4 (MITC4).

integration (Q4)

schemewhat runs
mitc (default)Assumed transverse shear (MITC4).
full2x2 bilinear membrane with MITC4 shear.
reduced1-point bending with a small hourglass stiffness. Results report the hourglass energy, with a heads-up above 5% of the strain energy.

T3 always uses exact integration. Selective is not offered; files that ask for it run as mitc with a heads-up.

drilling factor: in-plane twist stiffness as a fraction of G·t·A. Default 0.03, range 0.01 to 1.

07picking where things go

Supports, loads, links, MPCs, refinements and sets act on a set of nodes or faces. Pick in the 3D view, type the set, or pick a name from the dropdown, which lists the edges, holes and faces your bodies have.

type thisto get
plate/edge:x0a named edge of a built body
plate/hole:h1the ring of nodes round a hole (h* picks them all)
part/boundaryevery free edge of a body
part/facesall faces of a body
box:[x0,y0,z0]-[x1,y1,z1]everything inside a box, in model coordinates
point:ida point you added, such as a link's control point
node:none mesh node by index
set:ida saved set

A set saved from named geometry follows the model through a remesh. A set saved as raw node or face ids stops matching when the mesh changes; re-pick it.

coordinate systems

The coordinate systems folder under geometry holds global and any local systems. + adds one, from the current pick if there is one. Each system is cartesian or cylindrical (r, θ, z about its z axis).

08supports, springs, enforced displacement

Pick where the support goes, then the kind. Directions 1-3 are moves along x, y, z; 4-6 are rotations about x, y, z.

coordinate system turns the directions of pick directions, symmetry, antisymmetry and enforced displacement into a local system: 1-3 are its x, y, z (r, θ, z when cylindrical). Springs take their k along the local directions too.

If something can still slide or spin, the solve stops and names the node and direction that's free.

09links and MPCs

pickwhat it does
RBE2 (rigid)The ticked directions of the nodes follow one control point rigidly.
RBE3 (spread)Averages the node translations into the control point. Adds no stiffness and can't hold the model up by itself.
tie (equal dof)Pairs each node in set A with the nearest node in set B and makes the ticked directions equal. Tolerance default 1e-3 x the model size. The solve stops and names any node with no partner within it.
equationc1·u1 + c2·u2 + … = c0, each term on one node and one direction. One direction per equation becomes dependent.
kinematic couplingRuns as RBE2.
distributing couplingRuns as RBE3.

Ties, equations and couplings are solved by elimination (default, exact) or penalty (penalty factor default 1e5 x the largest diagonal it touches; 1e3 to 1e7). They are under mpcs in the left list and under mpcs in the model file. The mpc tie example shows the layout. After a solve each MPC lists its equation count, max violation and max force.

10contact

A pair has a surface it lands on (faces) and a pushing side (nodes), and a type: bonded, frictionless, frictional (set μ) or none (kept in the file, off). Advanced: method (penalty default, or augmented lagrange), penalty scale (default 1), search distance (default auto) and initial gap (default from geometry). Contact load steps (default 1), max iterations per step (default 30) and convergence tol (default 1e-4) are under analysis.

10blarge deflection

static structural → analysis settings → large deflection ("analysis": { "large_deflection": true }) makes the static solve geometrically nonlinear: large rotations, small strains.

11loads

Force, moment and gravity take a coordinate system; the components are turned at each node, so in a cylindrical system fθ is tangential everywhere.

Each load and support can belong to one or more load cases. Combinations are factored sums of cases.

12reading results

13limits