SS.Multiphysics 1.4.0
Typed coupled models, conservative nonmatching 1D/2D field transfer, coupled block Jacobians, nonlinear spatial electrothermal/thermoelastic solution, retrying transactional transient advancement, conservation audits, checkpointed monolithic and partitioned solution, and qualified reference formulations
Language compatibility: >=1.0.0 <2.0.0
Runtime compatibility: >=1.0.0 <2.0.0
Dependencies: SS.CFD >=1.0.0 <2.0.0, SS.Electromagnetics >=1.0.0 <2.0.0, SS.Fluids >=1.0.0 <2.0.0, SS.HeatTransfer >=1.0.0 <2.0.0, SS.LinearAlgebra >=1.1.0 <2.0.0, SS.Numerics >=1.0.0 <2.0.0, SS.StructuralMechanics >=1.0.0 <2.0.0
Public API
Multiphysics.advanceMonolithic
export function advanceMonolithic(CoupledSystem system, double[] initial, TimeControls time, SolverControls options) -> TransientSolutionParameters: system: CoupledSystem, initial: double[], time: TimeControls, options: SolverControls
Multiphysics.advancePartitioned
export function advancePartitioned(PartitionedSystem system, double[] initial, TimeControls time, SolverControls options) -> TransientSolutionParameters: system: PartitionedSystem, initial: double[], time: TimeControls, options: SolverControls
export function advanceSpatialThermoelastic(SpatialThermoelasticProblem problem, SpatialThermoelasticCheckpoint initial, double endTime, double timeStep, int maximumSteps, SolverControls options)->SpatialThermoelasticResultParameters: problem: SpatialThermoelasticProblem, initial: SpatialThermoelasticCheckpoint, endTime: double, timeStep: double, maximumSteps: int, options: SolverControls
export function advanceSpatialThermoelasticPartitioned(SpatialThermoelasticProblem problem, SpatialThermoelasticCheckpoint initial, double endTime, double timeStep, int maximumSteps, SolverControls options)->SpatialThermoelasticResultParameters: problem: SpatialThermoelasticProblem, initial: SpatialThermoelasticCheckpoint, endTime: double, timeStep: double, maximumSteps: int, options: SolverControls
export function advanceTransientCoupled2D(double startTime, double endTime, double timeStep, int maximumSteps, int maximumRetries, double[] thermalX, double[] thermalY, double[] structuralX, double[] structuralY, double[] initialTemperatures, double[] initialDisplacements, double ambientTemperature, double jouleHeating, double electricalTemperatureCoefficient, double thermalLoss, double thermalExpansion, double mechanicalStiffness, SolverControls options)->TransientCoupled2DResultParameters: startTime: double, endTime: double, timeStep: double, maximumSteps: int, maximumRetries: int, thermalX: double[], thermalY: double[], structuralX: double[], structuralY: double[], initialTemperatures: double[], initialDisplacements: double[], ambientTemperature: double, jouleHeating: double, electricalTemperatureCoefficient: double, thermalLoss: double, thermalExpansion: double, mechanicalStiffness: double, options: SolverControls
export function assembleCoupledBlockJacobian2D(double[] firstResidual, double[] secondResidual, double[] firstFirst, double[] firstSecond, double[] secondFirst, double[] secondSecond)->CoupledBlockJacobian2DParameters: firstResidual: double[], secondResidual: double[], firstFirst: double[], firstSecond: double[], secondFirst: double[], secondSecond: double[]
export function assembleSpatialThermoelastic(SpatialThermoelasticProblem problem, double[] previousTemperatures, double[] state, double timeStep)->SpatialThermoelasticAssemblyParameters: problem: SpatialThermoelasticProblem, previousTemperatures: double[], state: double[], timeStep: double
Multiphysics.boundary
export function boundary(string name, PhysicalField target, string kind, int[] entities, double[] values, string unitSymbol) -> BoundaryConditionParameters: name: string, target: PhysicalField, kind: string, entities: int[], values: double[], unitSymbol: string
export record BoundaryCondition(public string name, public string field, public string kind, public int[] entities, public double[] values, public string unitSymbol)Parameters: name: string, field: string, kind: string, entities: int[], values: double[], unitSymbol: string
export function conservationAuditCoupled2D(double[] thermalInputs, double[] thermalOutputs, double[] mechanicalInputs, double[] mechanicalOutputs, double[] interfaceSent, double[] interfaceReceived, double tolerance)->CoupledConservationAuditParameters: thermalInputs: double[], thermalOutputs: double[], mechanicalInputs: double[], mechanicalOutputs: double[], interfaceSent: double[], interfaceReceived: double[], tolerance: double
export record ConstitutiveRelation(public string name, public string inputField, public string outputField, public string description)Parameters: name: string, inputField: string, outputField: string, description: string
Multiphysics.controls
export function controls(double absoluteTolerance, double relativeTolerance, int maximumIterations, double relaxation, double divergenceFactor) -> SolverControlsParameters: absoluteTolerance: double, relativeTolerance: double, maximumIterations: int, relaxation: double, divergenceFactor: double
export record CoupledBlockJacobian2D(public double[] residual, public double[] jacobian, public int firstSize, public int secondSize, public double maximumMagnitude, public bool valid)Parameters: residual: double[], jacobian: double[], firstSize: int, secondSize: int, maximumMagnitude: double, valid: bool
export record CoupledConservationAudit(public double thermalResidual, public double mechanicalResidual, public double interfaceResidual, public double totalResidual, public bool conserved, public string diagnostic)Parameters: thermalResidual: double, mechanicalResidual: double, interfaceResidual: double, totalResidual: double, conserved: bool, diagnostic: string
export record CoupledModel(public string name, public PhysicalDomain[] domains, public PhysicalField[] fields, public GoverningEquation[] equations, public ConstitutiveRelation[] relations, public BoundaryCondition[] boundaries, public InterfaceCondition[] interfaces)Parameters: name: string, domains: PhysicalDomain[], fields: PhysicalField[], equations: GoverningEquation[], relations: ConstitutiveRelation[], boundaries: BoundaryCondition[], interfaces: InterfaceCondition[]
export record CoupledSolution(public double[] values, public double[] residualHistory, public double[] conservationHistory, public int iterations, public bool converged, public string diagnostic, public string strategy)Parameters: values: double[], residualHistory: double[], conservationHistory: double[], iterations: int, converged: bool, diagnostic: string, strategy: string
Multiphysics.CoupledSystem
export interface CoupledSystemMultiphysics.domain
export function domain(string name, int spatialDimensions, double measure, string measureUnit, int nodeCount) -> PhysicalDomainParameters: name: string, spatialDimensions: int, measure: double, measureUnit: string, nodeCount: int
export function electroThermalConductor(K ambient, K referenceTemperature, voltage appliedVoltage, m conductorLength, area crossSection, resistivity referenceResistivity, double resistivityTemperatureCoefficient, heatTransferCoefficient convection, area coolingArea, heatRate eddyLossAtReference, SolverControls options) -> ElectroThermalResultParameters: ambient: K, referenceTemperature: K, appliedVoltage: voltage, conductorLength: m, crossSection: area, referenceResistivity: resistivity, resistivityTemperatureCoefficient: double, convection: heatTransferCoefficient, coolingArea: area, eddyLossAtReference: heatRate, options: SolverControls
export record ElectroThermalResult(public K temperature, public A current, public W jouleLoss, public W eddyLoss, public double energyBalance, public int iterations, public bool converged, public string diagnostic)Parameters: temperature: K, current: A, jouleLoss: W, eddyLoss: W, energyBalance: double, iterations: int, converged: bool, diagnostic: string
Multiphysics.equation
export function equation(string name, PhysicalField unknown, string residualUnit, bool transient) -> GoverningEquationParameters: name: string, unknown: PhysicalField, residualUnit: string, transient: bool
Multiphysics.field
export function field(string name, PhysicalDomain owner, string unitSymbol, int components, double[] values, string conservedQuantity) -> PhysicalFieldParameters: name: string, owner: PhysicalDomain, unitSymbol: string, components: int, values: double[], conservedQuantity: string
Multiphysics.fieldResidual
export function fieldResidual(double[] current, double[] target) -> double[]Parameters: current: double[], target: double[]
export record FieldTransfer2D(public double[] values, public double[] sourceIntegrals, public double[] targetIntegrals, public double[] relativeConservationErrors, public double maximumDistance, public int components, public bool conservative)Parameters: values: double[], sourceIntegrals: double[], targetIntegrals: double[], relativeConservationErrors: double[], maximumDistance: double, components: int, conservative: bool
Multiphysics.flexibleChannelFsi
export function flexibleChannelFsi(m channelLength, m width, m initialGap, dynamicViscosity viscosity, volumetricFlow prescribedFlow, wallStiffness complianceStiffness, density fluidDensity, arealMass wallArealMass, SolverControls options) -> FsiResultParameters: channelLength: m, width: m, initialGap: m, viscosity: dynamicViscosity, prescribedFlow: volumetricFlow, complianceStiffness: wallStiffness, fluidDensity: density, wallArealMass: arealMass, options: SolverControls
Multiphysics.fsiPistonStep
export function fsiPistonStep(m previousDisplacement, velocity previousVelocity, Pa appliedPressure, area interfaceArea, kg structuralMass, kg fluidAddedMass, springStiffness stiffness, viscousDamping damping, s timeStep) -> FsiStepResultParameters: previousDisplacement: m, previousVelocity: velocity, appliedPressure: Pa, interfaceArea: area, structuralMass: kg, fluidAddedMass: kg, stiffness: springStiffness, damping: viscousDamping, timeStep: s
Multiphysics.FsiResult
export record FsiResult(public m displacement, public m interfaceGap, public Pa pressureDrop, public volumetricFlow flowRate, public double tractionError, public double kinematicError, public double interfaceWorkError, public double addedMassRatio, public int iterations, public bool converged, public string diagnostic)Parameters: displacement: m, interfaceGap: m, pressureDrop: Pa, flowRate: volumetricFlow, tractionError: double, kinematicError: double, interfaceWorkError: double, addedMassRatio: double, iterations: int, converged: bool, diagnostic: string
export record FsiStepResult(public m displacement, public velocity interfaceVelocity, public acceleration interfaceAcceleration, public Pa fluidPressure, public Pa structuralTraction, public double tractionError, public double kinematicError, public double interfaceWorkError, public double addedMassRatio, public bool converged, public string diagnostic)Parameters: displacement: m, interfaceVelocity: velocity, interfaceAcceleration: acceleration, fluidPressure: Pa, structuralTraction: Pa, tractionError: double, kinematicError: double, interfaceWorkError: double, addedMassRatio: double, converged: bool, diagnostic: string
export record GoverningEquation(public string name, public string field, public string residualUnit, public bool transient)Parameters: name: string, field: string, residualUnit: string, transient: bool
Multiphysics.interfaceCondition
export function interfaceCondition(string name, PhysicalField source, PhysicalField target, string kind, bool conservative) -> InterfaceConditionParameters: name: string, source: PhysicalField, target: PhysicalField, kind: string, conservative: bool
export record InterfaceCondition(public string name, public string sourceField, public string targetField, public string kind, public bool conservative)Parameters: name: string, sourceField: string, targetField: string, kind: string, conservative: bool
Multiphysics.model
export function model(string name, PhysicalDomain[] domains, PhysicalField[] fields, GoverningEquation[] equations, ConstitutiveRelation[] relations, BoundaryCondition[] boundaries, InterfaceCondition[] interfaces) -> CoupledModelParameters: name: string, domains: PhysicalDomain[], fields: PhysicalField[], equations: GoverningEquation[], relations: ConstitutiveRelation[], boundaries: BoundaryCondition[], interfaces: InterfaceCondition[]
export record ModelValidation(public bool valid, public string diagnostic)Parameters: valid: bool, diagnostic: string
export record NonlinearSpatialCoupling2DResult(public double[] temperatures, public double[] displacements, public double[] residualHistory, public int iterations, public bool converged, public string diagnostic)Parameters: temperatures: double[], displacements: double[], residualHistory: double[], iterations: int, converged: bool, diagnostic: string
export function nonMatchingFieldTransfer2D(double[] sourceX, double[] sourceY, double[] sourceValues, double[] sourceWeights, double[] targetX, double[] targetY, double[] targetWeights, int components, bool conservative)->FieldTransfer2DParameters: sourceX: double[], sourceY: double[], sourceValues: double[], sourceWeights: double[], targetX: double[], targetY: double[], targetWeights: double[], components: int, conservative: bool
Multiphysics.PartitionedSystem
export interface PartitionedSystemexport record PhysicalDomain(public string name, public int spatialDimensions, public double measure, public string measureUnit, public int nodeCount)Parameters: name: string, spatialDimensions: int, measure: double, measureUnit: string, nodeCount: int
export record PhysicalField(public string name, public string domain, public string unitSymbol, public int components, public double[] values, public string conservedQuantity)Parameters: name: string, domain: string, unitSymbol: string, components: int, values: double[], conservedQuantity: string
Multiphysics.relation
export function relation(string name, PhysicalField input, PhysicalField output, string description) -> ConstitutiveRelationParameters: name: string, input: PhysicalField, output: PhysicalField, description: string
Multiphysics.relaxedField
export function relaxedField(double[] current, double[] target, double relaxation) -> double[]Parameters: current: double[], target: double[], relaxation: double
Multiphysics.solveMonolithic
export function solveMonolithic(CoupledSystem system, double[] initial, double time, SolverControls options) -> CoupledSolutionParameters: system: CoupledSystem, initial: double[], time: double, options: SolverControls
export function solveNonlinearSpatialCoupling2D(double[] thermalX, double[] thermalY, double[] structuralX, double[] structuralY, double[] initialTemperatures, double[] initialDisplacements, double ambientTemperature, double jouleHeating, double electricalTemperatureCoefficient, double thermalLoss, double thermalExpansion, double mechanicalStiffness, SolverControls options)->NonlinearSpatialCoupling2DResultParameters: thermalX: double[], thermalY: double[], structuralX: double[], structuralY: double[], initialTemperatures: double[], initialDisplacements: double[], ambientTemperature: double, jouleHeating: double, electricalTemperatureCoefficient: double, thermalLoss: double, thermalExpansion: double, mechanicalStiffness: double, options: SolverControls
Multiphysics.solvePartitioned
export function solvePartitioned(PartitionedSystem system, double[] initial, double time, SolverControls options) -> CoupledSolutionParameters: system: PartitionedSystem, initial: double[], time: double, options: SolverControls
export record SolverControls(public double absoluteTolerance, public double relativeTolerance, public int maximumIterations, public double relaxation, public double divergenceFactor)Parameters: absoluteTolerance: double, relativeTolerance: double, maximumIterations: int, relaxation: double, divergenceFactor: double
export function spatialInterfaceFlux(SpatialThermoelasticProblem problem, double[] temperatures, double[] displacements)->SpatialInterfaceFluxParameters: problem: SpatialThermoelasticProblem, temperatures: double[], displacements: double[]
export record SpatialInterfaceFlux(public double leftOutwardFlux, public double rightOutwardFlux, public double netOutwardFlux, public double integratedSource, public double balanceError, public double transferConservationError)Parameters: leftOutwardFlux: double, rightOutwardFlux: double, netOutwardFlux: double, integratedSource: double, balanceError: double, transferConservationError: double
export record SpatialThermoelasticAssembly(public double[] residual, public double[] jacobian, public int thermalNodes, public int structuralNodes, public double energyResidual)Parameters: residual: double[], jacobian: double[], thermalNodes: int, structuralNodes: int, energyResidual: double
export function spatialThermoelasticCheckpoint(double time, double[] temperatures, double[] displacements, int committedSteps)->SpatialThermoelasticCheckpointParameters: time: double, temperatures: double[], displacements: double[], committedSteps: int
export record SpatialThermoelasticCheckpoint(public double time, public double[] temperatures, public double[] displacements, public int committedSteps)Parameters: time: double, temperatures: double[], displacements: double[], committedSteps: int
export function spatialThermoelasticProblem(double[] thermalCoordinates, double[] structuralCoordinates, double referenceTemperature, double leftTemperature, double rightTemperature, double thermalDiffusivity, double conductivityNonlinearity, double heatSource, double displacementHeating, double thermalExpansion, double elasticModulus, double modulusTemperatureCoefficient, double endLoad)->SpatialThermoelasticProblemParameters: thermalCoordinates: double[], structuralCoordinates: double[], referenceTemperature: double, leftTemperature: double, rightTemperature: double, thermalDiffusivity: double, conductivityNonlinearity: double, heatSource: double, displacementHeating: double, thermalExpansion: double, elasticModulus: double, modulusTemperatureCoefficient: double, endLoad: double
export record SpatialThermoelasticProblem(public double[] thermalCoordinates, public double[] structuralCoordinates, public double referenceTemperature, public double leftTemperature, public double rightTemperature, public double thermalDiffusivity, public double conductivityNonlinearity, public double heatSource, public double displacementHeating, public double thermalExpansion, public double elasticModulus, public double modulusTemperatureCoefficient, public double endLoad)Parameters: thermalCoordinates: double[], structuralCoordinates: double[], referenceTemperature: double, leftTemperature: double, rightTemperature: double, thermalDiffusivity: double, conductivityNonlinearity: double, heatSource: double, displacementHeating: double, thermalExpansion: double, elasticModulus: double, modulusTemperatureCoefficient: double, endLoad: double
export record SpatialThermoelasticResult(public SpatialThermoelasticCheckpoint checkpoint, public double[] times, public double[][] temperatureStates, public double[][] displacementStates, public double[] residualHistory, public double[] energyHistory, public int nonlinearIterations, public bool converged, public bool rolledBack, public string diagnostic)Parameters: checkpoint: SpatialThermoelasticCheckpoint, times: double[], temperatureStates: double[][], displacementStates: double[][], residualHistory: double[], energyHistory: double[], nonlinearIterations: int, converged: bool, rolledBack: bool, diagnostic: string
Multiphysics.thermoStructuralBar
export function thermoStructuralBar(K hot, K ambient, K referenceTemperature, m initialLength, area crossSection, Pa referenceModulus, double modulusTemperatureCoefficient, double thermalExpansion, heatConductivity referenceConductivity, double conductivityTemperatureCoefficient, heatTransferCoefficient convection, N axialLoad, SolverControls options) -> ThermoStructuralResultParameters: hot: K, ambient: K, referenceTemperature: K, initialLength: m, crossSection: area, referenceModulus: Pa, modulusTemperatureCoefficient: double, thermalExpansion: double, referenceConductivity: heatConductivity, conductivityTemperatureCoefficient: double, convection: heatTransferCoefficient, axialLoad: N, options: SolverControls
export record ThermoStructuralResult(public K meanTemperature, public K surfaceTemperature, public m displacement, public W heatRate, public Pa elasticModulus, public double energyBalance, public int iterations, public bool converged, public string diagnostic)Parameters: meanTemperature: K, surfaceTemperature: K, displacement: m, heatRate: W, elasticModulus: Pa, energyBalance: double, iterations: int, converged: bool, diagnostic: string
export function thermoStructuralStep(K previousTemperature, m previousDisplacement, K ambient, K referenceTemperature, m initialLength, area crossSection, Pa referenceModulus, double modulusTemperatureCoefficient, double thermalExpansion, N axialLoad, kg mass, specificHeat heatCapacity, heatTransferCoefficient convection, heatRate externalHeat, viscousDamping mechanicalDamping, s timeStep, SolverControls options) -> ThermoStructuralStepResultParameters: previousTemperature: K, previousDisplacement: m, ambient: K, referenceTemperature: K, initialLength: m, crossSection: area, referenceModulus: Pa, modulusTemperatureCoefficient: double, thermalExpansion: double, axialLoad: N, mass: kg, heatCapacity: specificHeat, convection: heatTransferCoefficient, externalHeat: heatRate, mechanicalDamping: viscousDamping, timeStep: s, options: SolverControls
export record ThermoStructuralStepResult(public K temperature, public m displacement, public J storedEnergyChange, public J generatedEnergy, public J rejectedEnergy, public double energyBalance, public int iterations, public bool converged, public string diagnostic)Parameters: temperature: K, displacement: m, storedEnergyChange: J, generatedEnergy: J, rejectedEnergy: J, energyBalance: double, iterations: int, converged: bool, diagnostic: string
Multiphysics.timeControls
export function timeControls(double startTime, double endTime, double timeStep, int maximumSteps) -> TimeControlsParameters: startTime: double, endTime: double, timeStep: double, maximumSteps: int
export record TimeControls(public double startTime, public double endTime, public double timeStep, public int maximumSteps)Parameters: startTime: double, endTime: double, timeStep: double, maximumSteps: int
Multiphysics.transferLine
export function transferLine(double[] sourceCoordinates, double[] sourceValues, double[] targetCoordinates, bool conservative) -> TransferResultParameters: sourceCoordinates: double[], sourceValues: double[], targetCoordinates: double[], conservative: bool
export record TransferResult(public double[] values, public double sourceIntegral, public double targetIntegralBeforeCorrection, public double targetIntegral, public double relativeConservationError, public double maximumInterpolationDistance, public bool conservative)Parameters: values: double[], sourceIntegral: double, targetIntegralBeforeCorrection: double, targetIntegral: double, relativeConservationError: double, maximumInterpolationDistance: double, conservative: bool
export record TransientCoupled2DResult(public double time, public double[] temperatures, public double[] displacements, public int committedSteps, public int retries, public bool converged, public bool rolledBack, public string diagnostic)Parameters: time: double, temperatures: double[], displacements: double[], committedSteps: int, retries: int, converged: bool, rolledBack: bool, diagnostic: string
export record TransientSolution(public double time, public double[] values, public double[] times, public double[][] states, public int steps, public int couplingIterations, public bool converged, public string diagnostic)Parameters: time: double, values: double[], times: double[], states: double[][], steps: int, couplingIterations: int, converged: bool, diagnostic: string
Multiphysics.validate
export function validate(CoupledModel value) -> ModelValidationParameters: value: CoupledModel
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.