SS.FEM 1.7.0
Physics-independent FEM kernels, mixed 2D boundary declarations and assembly, patch-test diagnostics, consistent-mass beam modal analysis, nonlinear truss, mapped Q4, higher-order line, beam and plane-stress solve contracts
Language compatibility: >=1.0.0 <2.0.0
Runtime compatibility: >=1.0.0 <2.0.0
Dependencies: SS.Discretization >=1.2.0 <2.0.0, SS.LinearAlgebra >=1.2.0 <2.0.0
Public API
FEM.advanceTheta
export function advanceTheta(double[] capacity, double[] stiffness, double[] previous, double[] previousSource, double[] currentSource, double time, double timeStep, double theta, DirichletConstraints prescribed) -> TransientStepParameters: capacity: double[], stiffness: double[], previous: double[], previousSource: double[], currentSource: double[], time: double, timeStep: double, theta: double, prescribed: DirichletConstraints
FEM.applySparseDirichlet
export function applySparseDirichlet(CsrMatrix matrix, double[] rightValue, DirichletConstraints constraintsValue) -> LinearSystemParameters: matrix: CsrMatrix, rightValue: double[], constraintsValue: DirichletConstraints
FEM.assemble
export function assemble(SteadyProblem problem) -> LinearSystemParameters: problem: SteadyProblem
FEM.assembleBoundaryLoads2D
export function assembleBoundaryLoads2D(double[] x, double[] y, int[][] facets, double[][] tractions, double thickness) -> BoundaryVectorParameters: x: double[], y: double[], facets: int[][], tractions: double[][], thickness: double
FEM.assembleSparse
export function assembleSparse(SteadyProblem problem, double zeroTolerance) -> CsrMatrixParameters: problem: SteadyProblem, zeroTolerance: double
FEM.axialBarElement
export function axialBarElement(double firstCoordinate, double secondCoordinate, double youngModulus, double area, double bodyForce) -> ElementDataParameters: firstCoordinate: double, secondCoordinate: double, youngModulus: double, area: double, bodyForce: double
FEM.beamDynamicElement
export function beamDynamicElement(double elementLength, double youngModulus, double secondMoment, double massPerLength)->BeamDynamicElementParameters: elementLength: double, youngModulus: double, secondMoment: double, massPerLength: double
FEM.BeamDynamicElement
export record BeamDynamicElement(public double[] stiffness, public double[] mass)Parameters: stiffness: double[], mass: double[]
FEM.beamElement
export function beamElement(double elementLength, double youngModulus, double secondMoment, double uniformLoad) -> ElementDataParameters: elementLength: double, youngModulus: double, secondMoment: double, uniformLoad: double
FEM.BeamModes
export record BeamModes(public double[] frequenciesHz, public double[] eigenvalues, public double[] modes, public int size, public double residual, public bool converged, public string diagnostic)Parameters: frequenciesHz: double[], eigenvalues: double[], modes: double[], size: int, residual: double, converged: bool, diagnostic: string
FEM.BeamSolution
export record BeamSolution(public double[] coordinates, public double[] deflection, public double[] rotation, public double[] reactions, public double residual, public double strainEnergy, public double externalWork, public bool converged, public string diagnostic)Parameters: coordinates: double[], deflection: double[], rotation: double[], reactions: double[], residual: double, strainEnergy: double, externalWork: double, converged: bool, diagnostic: string
FEM.BoundaryTraction2D
export interface BoundaryTraction2DFEM.BoundaryVector
export record BoundaryVector(public double[] values, public double resultantX, public double resultantY, public double moment)Parameters: values: double[], resultantX: double, resultantY: double, moment: double
FEM.cantileverBeamModes
export function cantileverBeamModes(double lengthValue, double youngModulus, double secondMoment, double massPerLength, int elements, double tolerance, int maximumIterations)->BeamModesParameters: lengthValue: double, youngModulus: double, secondMoment: double, massPerLength: double, elements: int, tolerance: double, maximumIterations: int
FEM.ElementData
export record ElementData(public double[] interpolation, public double[] gradient, public double[] stiffness, public double[] load, public double measure, public string diagnostic)Parameters: interpolation: double[], gradient: double[], stiffness: double[], load: double[], measure: double, diagnostic: string
FEM.ElementEnergyBatch
export record ElementEnergyBatch(public double[] values)Parameters: values: double[]
FEM.ElementKernel
export interface ElementKernelFEM.femElementEnergyCpu
export function femElementEnergyCpu(double[] gradients, double[] weights, double modulusArea) -> ElementEnergyBatchParameters: gradients: double[], weights: double[], modulusArea: double
FEM.femElementEnergyCuda
export function femElementEnergyCuda(double[] gradients, double[] weights, double modulusArea) -> ElementEnergyBatchParameters: gradients: double[], weights: double[], modulusArea: double
FEM.femElementEnergyOpenCl
export function femElementEnergyOpenCl(double[] gradients, double[] weights, double modulusArea) -> ElementEnergyBatchParameters: gradients: double[], weights: double[], modulusArea: double
FEM.geometricTruss2D
export function geometricTruss2D(double x0, double y0, double x1, double y1, double u0x, double u0y, double u1x, double u1y, double modulusArea) -> GeometricTruss2DParameters: x0: double, y0: double, x1: double, y1: double, u0x: double, u0y: double, u1x: double, u1y: double, modulusArea: double
FEM.GeometricTruss2D
export record GeometricTruss2D(public double[] internalForce, public double[] tangent, public double originalLength, public double currentLength, public double axialForce, public double axialStrain)Parameters: internalForce: double[], tangent: double[], originalLength: double, currentLength: double, axialForce: double, axialStrain: double
FEM.gradedQuarterAnnulusMesh
export function gradedQuarterAnnulusMesh(double innerRadius, double outerRadius, int radialElements, int angularElements, double radialExponent) -> StructuredQuadMeshParameters: innerRadius: double, outerRadius: double, radialElements: int, angularElements: int, radialExponent: double
FEM.HigherOrderSolution
export record HigherOrderSolution(public double[] coordinates, public double[] values, public double[] reactions, public double residual, public bool converged, public string diagnostic)Parameters: coordinates: double[], values: double[], reactions: double[], residual: double, converged: bool, diagnostic: string
FEM.lineShape
export function lineShape(double xi) -> LineShapeParameters: xi: double
FEM.LineShape
export record LineShape(public double[] values, public double[] derivatives)Parameters: values: double[], derivatives: double[]
FEM.LineSource
export interface LineSourceFEM.mappedEdgeConstraints
export function mappedEdgeConstraints(StructuredQuadMesh mesh, string edge, bool constrainX, bool constrainY) -> DirichletConstraintsParameters: mesh: StructuredQuadMesh, edge: string, constrainX: bool, constrainY: bool
FEM.mappedEdgeTraction
export function mappedEdgeTraction(StructuredQuadMesh mesh, string edge, double thickness, BoundaryTraction2D traction) -> BoundaryVectorParameters: mesh: StructuredQuadMesh, edge: string, thickness: double, traction: BoundaryTraction2D
FEM.mixedBoundaryConditions2D
export function mixedBoundaryConditions2D(int dofCount, int[] essentialDofs, double[] essentialValues, string[] groups, string[] kinds, double[] valueX, double[] valueY, double[] robinCoefficients) -> MixedBoundaryConditions2DParameters: dofCount: int, essentialDofs: int[], essentialValues: double[], groups: string[], kinds: string[], valueX: double[], valueY: double[], robinCoefficients: double[]
export record MixedBoundaryConditions2D(public DirichletConstraints essential, public string[] groups, public string[] kinds, public double[] valueX, public double[] valueY, public double[] robinCoefficients)Parameters: essential: DirichletConstraints, groups: string[], kinds: string[], valueX: double[], valueY: double[], robinCoefficients: double[]
FEM.nonlinearAxialBar
export function nonlinearAxialBar(double[] displacement, double elementLength, double area, double linearModulus, double cubicModulus, double[] externalLoad) -> NonlinearElementParameters: displacement: double[], elementLength: double, area: double, linearModulus: double, cubicModulus: double, externalLoad: double[]
FEM.NonlinearElement
export record NonlinearElement(public double[] residual, public double[] tangent, public double strain, public double stress)Parameters: residual: double[], tangent: double[], strain: double, stress: double
FEM.observedOrder
export function observedOrder(double coarseError, double fineError) -> doubleParameters: coarseError: double, fineError: double
FEM.patchTest2D
export function patchTest2D(CsrMatrix stiffness, double[] constantStrainField, double[] expectedConstantForces, double[] rigidBodyX, double[] rigidBodyY, int[] interfaceDofs, double tolerance) -> PatchTest2DResultParameters: stiffness: CsrMatrix, constantStrainField: double[], expectedConstantForces: double[], rigidBodyX: double[], rigidBodyY: double[], interfaceDofs: int[], tolerance: double
FEM.PatchTest2DResult
export record PatchTest2DResult(public double constantStrainResidual, public double rigidBodyXResidual, public double rigidBodyYResidual, public double interfaceResidual, public bool passed, public string diagnostic)Parameters: constantStrainResidual: double, rigidBodyXResidual: double, rigidBodyYResidual: double, interfaceResidual: double, passed: bool, diagnostic: string
FEM.planeStressConstitutive
export function planeStressConstitutive(double youngModulus, double poissonRatio) -> double[]Parameters: youngModulus: double, poissonRatio: double
FEM.PlaneStressSolution
export record PlaneStressSolution(public double[] displacement, public double[] reactions, public double[] elementStress, public double[] elementVonMises, public CsrMatrix stiffness, public double[] load, public double freeResidual, public double symmetryError, public double strainEnergy, public double externalWork, public int iterations, public bool converged, public string diagnostic)Parameters: displacement: double[], reactions: double[], elementStress: double[], elementVonMises: double[], stiffness: CsrMatrix, load: double[], freeResidual: double, symmetryError: double, strainEnergy: double, externalWork: double, iterations: int, converged: bool, diagnostic: string
FEM.poissonLineElement
export function poissonLineElement(double firstCoordinate, double secondCoordinate, double conductivity, double source) -> ElementDataParameters: firstCoordinate: double, secondCoordinate: double, conductivity: double, source: double
FEM.q4ConsistentEdgeTraction
export function q4ConsistentEdgeTraction(double x0, double y0, double x1, double y1, double thickness, double tractionX, double tractionY) -> double[]Parameters: x0: double, y0: double, x1: double, y1: double, thickness: double, tractionX: double, tractionY: double
FEM.Q4ElasticityElement
export record Q4ElasticityElement(public double[] constitutive, public double[] stiffness, public double[] bodyLoad, public double area, public Q4PointData center)Parameters: constitutive: double[], stiffness: double[], bodyLoad: double[], area: double, center: Q4PointData
FEM.q4PlaneStressElement
export function q4PlaneStressElement(double[] x, double[] y, double youngModulus, double poissonRatio, double thickness, double bodyForceX, double bodyForceY) -> Q4ElasticityElementParameters: x: double[], y: double[], youngModulus: double, poissonRatio: double, thickness: double, bodyForceX: double, bodyForceY: double
FEM.q4Point
export function q4Point(double[] x, double[] y, double xi, double eta) -> Q4PointDataParameters: x: double[], y: double[], xi: double, eta: double
FEM.Q4PointData
export record Q4PointData(public double[] shape, public double[] derivativeXi, public double[] derivativeEta, public double[] derivativeX, public double[] derivativeY, public double[] jacobian, public double determinant, public double[] b)Parameters: shape: double[], derivativeXi: double[], derivativeEta: double[], derivativeX: double[], derivativeY: double[], jacobian: double[], determinant: double, b: double[]
FEM.QuadraticElementData
export record QuadraticElementData(public double[] stiffness, public double[] load, public double[] quadratureCoordinates, public double[] quadratureWeights, public double[] jacobians, public double measure, public string diagnostic)Parameters: stiffness: double[], load: double[], quadratureCoordinates: double[], quadratureWeights: double[], jacobians: double[], measure: double, diagnostic: string
FEM.quadraticLinePoint
export function quadraticLinePoint(double[] coordinates, double xi) -> QuadraticLinePointParameters: coordinates: double[], xi: double
FEM.QuadraticLinePoint
export record QuadraticLinePoint(public double[] shape, public double[] derivativeXi, public double[] derivativeX, public double coordinate, public double jacobian)Parameters: shape: double[], derivativeXi: double[], derivativeX: double[], coordinate: double, jacobian: double
FEM.quadraticPoissonElement
export function quadraticPoissonElement(double[] coordinates, double conductivity, LineSource source) -> QuadraticElementDataParameters: coordinates: double[], conductivity: double, source: LineSource
FEM.quadShape
export function quadShape(double xi, double eta) -> QuadShapeParameters: xi: double, eta: double
FEM.QuadShape
export record QuadShape(public double[] values, public double[] derivativeXi, public double[] derivativeEta)Parameters: values: double[], derivativeXi: double[], derivativeEta: double[]
FEM.quarterAnnulusMesh
export function quarterAnnulusMesh(double innerRadius, double outerRadius, int radialElements, int angularElements) -> StructuredQuadMeshParameters: innerRadius: double, outerRadius: double, radialElements: int, angularElements: int
export function solveEulerBernoulliCantilever(double lengthValue, double youngModulus, double secondMoment, double uniformLoad, int elements, double residualTolerance) -> BeamSolutionParameters: lengthValue: double, youngModulus: double, secondMoment: double, uniformLoad: double, elements: int, residualTolerance: double
FEM.solvePlaneStress
export function solvePlaneStress(StructuredQuadMesh mesh, double youngModulus, double poissonRatio, double thickness, BoundaryVector boundary, DirichletConstraints constraintsValue, double absoluteTolerance, double relativeTolerance, int maximumIterations) -> PlaneStressSolutionParameters: mesh: StructuredQuadMesh, youngModulus: double, poissonRatio: double, thickness: double, boundary: BoundaryVector, constraintsValue: DirichletConstraints, absoluteTolerance: double, relativeTolerance: double, maximumIterations: int
FEM.solveQuadraticPoisson1D
export function solveQuadraticPoisson1D(double lengthValue, double conductivity, LineSource source, int elements, double leftValue, double rightValue, double residualTolerance) -> HigherOrderSolutionParameters: lengthValue: double, conductivity: double, source: LineSource, elements: int, leftValue: double, rightValue: double, residualTolerance: double
FEM.solveSteady
export function solveSteady(SteadyProblem problem, double residualTolerance) -> SteadySolutionParameters: problem: SteadyProblem, residualTolerance: double
FEM.steadyProblem
export function steadyProblem(int dofCount, ElementKernel kernel, int elementCount, DirichletConstraints constraints) -> SteadyProblemParameters: dofCount: int, kernel: ElementKernel, elementCount: int, constraints: DirichletConstraints
FEM.SteadyProblem
export record SteadyProblem(public int dofCount, public ElementKernel kernel, public int elementCount, public DirichletConstraints constraints)Parameters: dofCount: int, kernel: ElementKernel, elementCount: int, constraints: DirichletConstraints
FEM.SteadySolution
export record SteadySolution(public double[] values, public double[] reactions, public double residual, public bool converged, public string diagnostic)Parameters: values: double[], reactions: double[], residual: double, converged: bool, diagnostic: string
FEM.structuredEdgeConstraints
export function structuredEdgeConstraints(StructuredQuadMesh mesh, string edge, bool constrainX, bool constrainY) -> DirichletConstraintsParameters: mesh: StructuredQuadMesh, edge: string, constrainX: bool, constrainY: bool
FEM.structuredEdgeTraction
export function structuredEdgeTraction(StructuredQuadMesh mesh, string edge, double thickness, double tractionX, double tractionY) -> BoundaryVectorParameters: mesh: StructuredQuadMesh, edge: string, thickness: double, tractionX: double, tractionY: double
FEM.structuredQuadMesh
export function structuredQuadMesh(double lengthValue, double heightValue, int nx, int ny) -> StructuredQuadMeshParameters: lengthValue: double, heightValue: double, nx: int, ny: int
FEM.StructuredQuadMesh
export record StructuredQuadMesh(public double[] x, public double[] y, public int[][] elements, public int nx, public int ny, public double length, public double height)Parameters: x: double[], y: double[], elements: int[][], nx: int, ny: int, length: double, height: double
FEM.TransientStep
export record TransientStep(public double time, public double[] values, public double residual, public bool converged, public string diagnostic)Parameters: time: double, values: double[], residual: double, converged: bool, diagnostic: string
Documentation version
Language 1.0.0, compiler 1.0.0, runtime 1.0.0. This reference is generated from the official SS documentation so package and language details stay consistent with the release.