awatif-fem
Version:
Awatif Finite Element Method (FEM) Solver
53 lines (46 loc) • 1.75 kB
text/typescript
import { State } from "vanjs-core";
// Analytical Model
export type Mesh = {
nodes?: State<Node[]>;
elements?: State<Element[]>;
nodeInputs?: State<NodeInputs>;
elementInputs?: State<ElementInputs>;
deformOutputs?: State<DeformOutputs>;
analyzeOutputs?: State<AnalyzeOutputs>;
};
// The geometry of any structure can be represented by these two entities:
export type Node = [number, number, number]; // position coordinates [x,y,z]
export type Element = number[]; // indices of the nodes list
export type NodeInputs = {
supports?: Map<
number,
[boolean, boolean, boolean, boolean, boolean, boolean]
>;
loads?: Map<number, [number, number, number, number, number, number]>;
};
export type ElementInputs = {
elasticities?: Map<number, number>;
elasticitiesOrthogonal?: Map<number, number>;
shearModuli?: Map<number, number>;
areas?: Map<number, number>;
momentsOfInertiaZ?: Map<number, number>;
momentsOfInertiaY?: Map<number, number>;
torsionalConstants?: Map<number, number>;
thicknesses?: Map<number, number>;
poissonsRatios?: Map<number, number>;
};
export type DeformOutputs = {
deformations?: Map<number, [number, number, number, number, number, number]>;
reactions?: Map<number, [number, number, number, number, number, number]>;
};
export type AnalyzeOutputs = {
normals?: Map<number, [number, number]>;
shearsY?: Map<number, [number, number]>;
shearsZ?: Map<number, [number, number]>;
torsions?: Map<number, [number, number]>;
bendingsY?: Map<number, [number, number]>;
bendingsZ?: Map<number, [number, number]>;
bendingXX?: Map<number, [number, number, number]>;
bendingYY?: Map<number, [number, number, number]>;
bendingXY?: Map<number, [number, number, number]>;
};