Skip to content
OFFICIAL SS DOCUMENTATION

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
API 1.7.0
MIT
source

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

Public signature
export function advanceTheta(double[] capacity, double[] stiffness, double[] previous, double[] previousSource, double[] currentSource, double time, double timeStep, double theta, DirichletConstraints prescribed) -> TransientStep

Parameters: capacity: double[], stiffness: double[], previous: double[], previousSource: double[], currentSource: double[], time: double, timeStep: double, theta: double, prescribed: DirichletConstraints


Public signature
export function applySparseDirichlet(CsrMatrix matrix, double[] rightValue, DirichletConstraints constraintsValue) -> LinearSystem

Parameters: matrix: CsrMatrix, rightValue: double[], constraintsValue: DirichletConstraints


FEM.assemble

function
Public signature
export function assemble(SteadyProblem problem) -> LinearSystem

Parameters: problem: SteadyProblem


Public signature
export function assembleBoundaryLoads2D(double[] x, double[] y, int[][] facets, double[][] tractions, double thickness) -> BoundaryVector

Parameters: x: double[], y: double[], facets: int[][], tractions: double[][], thickness: double


Public signature
export function assembleSparse(SteadyProblem problem, double zeroTolerance) -> CsrMatrix

Parameters: problem: SteadyProblem, zeroTolerance: double


Public signature
export function axialBarElement(double firstCoordinate, double secondCoordinate, double youngModulus, double area, double bodyForce) -> ElementData

Parameters: firstCoordinate: double, secondCoordinate: double, youngModulus: double, area: double, bodyForce: double


Public signature
export function beamDynamicElement(double elementLength, double youngModulus, double secondMoment, double massPerLength)->BeamDynamicElement

Parameters: elementLength: double, youngModulus: double, secondMoment: double, massPerLength: double


Public signature
export record BeamDynamicElement(public double[] stiffness, public double[] mass)

Parameters: stiffness: double[], mass: double[]


Public signature
export function beamElement(double elementLength, double youngModulus, double secondMoment, double uniformLoad) -> ElementData

Parameters: elementLength: double, youngModulus: double, secondMoment: double, uniformLoad: double


Public signature
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


Public signature
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


Public signature
export interface BoundaryTraction2D

Public signature
export record BoundaryVector(public double[] values, public double resultantX, public double resultantY, public double moment)

Parameters: values: double[], resultantX: double, resultantY: double, moment: double


Public signature
export function cantileverBeamModes(double lengthValue, double youngModulus, double secondMoment, double massPerLength, int elements, double tolerance, int maximumIterations)->BeamModes

Parameters: lengthValue: double, youngModulus: double, secondMoment: double, massPerLength: double, elements: int, tolerance: double, maximumIterations: int


Public signature
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


Public signature
export record ElementEnergyBatch(public double[] values)

Parameters: values: double[]


Public signature
export interface ElementKernel

Public signature
export function femElementEnergyCpu(double[] gradients, double[] weights, double modulusArea) -> ElementEnergyBatch

Parameters: gradients: double[], weights: double[], modulusArea: double


Public signature
export function femElementEnergyCuda(double[] gradients, double[] weights, double modulusArea) -> ElementEnergyBatch

Parameters: gradients: double[], weights: double[], modulusArea: double


Public signature
export function femElementEnergyOpenCl(double[] gradients, double[] weights, double modulusArea) -> ElementEnergyBatch

Parameters: gradients: double[], weights: double[], modulusArea: double


Public signature
export function geometricTruss2D(double x0, double y0, double x1, double y1, double u0x, double u0y, double u1x, double u1y, double modulusArea) -> GeometricTruss2D

Parameters: x0: double, y0: double, x1: double, y1: double, u0x: double, u0y: double, u1x: double, u1y: double, modulusArea: double


Public signature
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


Public signature
export function gradedQuarterAnnulusMesh(double innerRadius, double outerRadius, int radialElements, int angularElements, double radialExponent) -> StructuredQuadMesh

Parameters: innerRadius: double, outerRadius: double, radialElements: int, angularElements: int, radialExponent: double


Public signature
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


Public signature
export function lineShape(double xi) -> LineShape

Parameters: xi: double


Public signature
export record LineShape(public double[] values, public double[] derivatives)

Parameters: values: double[], derivatives: double[]


Public signature
export interface LineSource

Public signature
export function mappedEdgeConstraints(StructuredQuadMesh mesh, string edge, bool constrainX, bool constrainY) -> DirichletConstraints

Parameters: mesh: StructuredQuadMesh, edge: string, constrainX: bool, constrainY: bool


Public signature
export function mappedEdgeTraction(StructuredQuadMesh mesh, string edge, double thickness, BoundaryTraction2D traction) -> BoundaryVector

Parameters: mesh: StructuredQuadMesh, edge: string, thickness: double, traction: BoundaryTraction2D


Public signature
export function mixedBoundaryConditions2D(int dofCount, int[] essentialDofs, double[] essentialValues, string[] groups, string[] kinds, double[] valueX, double[] valueY, double[] robinCoefficients) -> MixedBoundaryConditions2D

Parameters: dofCount: int, essentialDofs: int[], essentialValues: double[], groups: string[], kinds: string[], valueX: double[], valueY: double[], robinCoefficients: double[]


Public signature
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[]


Public signature
export function nonlinearAxialBar(double[] displacement, double elementLength, double area, double linearModulus, double cubicModulus, double[] externalLoad) -> NonlinearElement

Parameters: displacement: double[], elementLength: double, area: double, linearModulus: double, cubicModulus: double, externalLoad: double[]


Public signature
export record NonlinearElement(public double[] residual, public double[] tangent, public double strain, public double stress)

Parameters: residual: double[], tangent: double[], strain: double, stress: double


Public signature
export function observedOrder(double coarseError, double fineError) -> double

Parameters: coarseError: double, fineError: double


Public signature
export function patchTest2D(CsrMatrix stiffness, double[] constantStrainField, double[] expectedConstantForces, double[] rigidBodyX, double[] rigidBodyY, int[] interfaceDofs, double tolerance) -> PatchTest2DResult

Parameters: stiffness: CsrMatrix, constantStrainField: double[], expectedConstantForces: double[], rigidBodyX: double[], rigidBodyY: double[], interfaceDofs: int[], tolerance: double


Public signature
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


Public signature
export function planeStressConstitutive(double youngModulus, double poissonRatio) -> double[]

Parameters: youngModulus: double, poissonRatio: double


Public signature
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


Public signature
export function poissonLineElement(double firstCoordinate, double secondCoordinate, double conductivity, double source) -> ElementData

Parameters: firstCoordinate: double, secondCoordinate: double, conductivity: double, source: double


Public signature
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


Public signature
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


Public signature
export function q4PlaneStressElement(double[] x, double[] y, double youngModulus, double poissonRatio, double thickness, double bodyForceX, double bodyForceY) -> Q4ElasticityElement

Parameters: x: double[], y: double[], youngModulus: double, poissonRatio: double, thickness: double, bodyForceX: double, bodyForceY: double


FEM.q4Point

function
Public signature
export function q4Point(double[] x, double[] y, double xi, double eta) -> Q4PointData

Parameters: x: double[], y: double[], xi: double, eta: double


Public signature
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[]


Public signature
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


Public signature
export function quadraticLinePoint(double[] coordinates, double xi) -> QuadraticLinePoint

Parameters: coordinates: double[], xi: double


Public signature
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


Public signature
export function quadraticPoissonElement(double[] coordinates, double conductivity, LineSource source) -> QuadraticElementData

Parameters: coordinates: double[], conductivity: double, source: LineSource


Public signature
export function quadShape(double xi, double eta) -> QuadShape

Parameters: xi: double, eta: double


Public signature
export record QuadShape(public double[] values, public double[] derivativeXi, public double[] derivativeEta)

Parameters: values: double[], derivativeXi: double[], derivativeEta: double[]


Public signature
export function quarterAnnulusMesh(double innerRadius, double outerRadius, int radialElements, int angularElements) -> StructuredQuadMesh

Parameters: innerRadius: double, outerRadius: double, radialElements: int, angularElements: int


Public signature
export function solveEulerBernoulliCantilever(double lengthValue, double youngModulus, double secondMoment, double uniformLoad, int elements, double residualTolerance) -> BeamSolution

Parameters: lengthValue: double, youngModulus: double, secondMoment: double, uniformLoad: double, elements: int, residualTolerance: double


Public signature
export function solvePlaneStress(StructuredQuadMesh mesh, double youngModulus, double poissonRatio, double thickness, BoundaryVector boundary, DirichletConstraints constraintsValue, double absoluteTolerance, double relativeTolerance, int maximumIterations) -> PlaneStressSolution

Parameters: mesh: StructuredQuadMesh, youngModulus: double, poissonRatio: double, thickness: double, boundary: BoundaryVector, constraintsValue: DirichletConstraints, absoluteTolerance: double, relativeTolerance: double, maximumIterations: int


Public signature
export function solveQuadraticPoisson1D(double lengthValue, double conductivity, LineSource source, int elements, double leftValue, double rightValue, double residualTolerance) -> HigherOrderSolution

Parameters: lengthValue: double, conductivity: double, source: LineSource, elements: int, leftValue: double, rightValue: double, residualTolerance: double


Public signature
export function solveSteady(SteadyProblem problem, double residualTolerance) -> SteadySolution

Parameters: problem: SteadyProblem, residualTolerance: double


Public signature
export function steadyProblem(int dofCount, ElementKernel kernel, int elementCount, DirichletConstraints constraints) -> SteadyProblem

Parameters: dofCount: int, kernel: ElementKernel, elementCount: int, constraints: DirichletConstraints


Public signature
export record SteadyProblem(public int dofCount, public ElementKernel kernel, public int elementCount, public DirichletConstraints constraints)

Parameters: dofCount: int, kernel: ElementKernel, elementCount: int, constraints: DirichletConstraints


Public signature
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


Public signature
export function structuredEdgeConstraints(StructuredQuadMesh mesh, string edge, bool constrainX, bool constrainY) -> DirichletConstraints

Parameters: mesh: StructuredQuadMesh, edge: string, constrainX: bool, constrainY: bool


Public signature
export function structuredEdgeTraction(StructuredQuadMesh mesh, string edge, double thickness, double tractionX, double tractionY) -> BoundaryVector

Parameters: mesh: StructuredQuadMesh, edge: string, thickness: double, tractionX: double, tractionY: double


Public signature
export function structuredQuadMesh(double lengthValue, double heightValue, int nx, int ny) -> StructuredQuadMesh

Parameters: lengthValue: double, heightValue: double, nx: int, ny: int


Public signature
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


Public signature
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.