pyxfem.solidmechanics.mechanics_solver module

Created on Tue Feb 27 07:43:08 2024

@author: nchevaug

class pyxfem.solidmechanics.mechanics_solver.ElasticitySolver(mesh: SMesh, C=<Compressed Sparse Row sparse array of dtype 'float64' with 8 stored elements and shape (4, 4)>, node_id_to_imposed_value: None | dict = None, physName2Dirichlet: None | dict = None, physName2Neumann: None | dict = None, source=array([0., 0.]), space_constructor: type[FEMSpaceP1] | type[FEMSpaceP1NC] = <class 'pyxfem.core.function_spaces.FEMSpaceP1'>, stab=0.0)[source]

Bases: object

A class to set up and compute a 2d linear elasticity problem with FEM method

L2StressError(U, exactStressFun, quadrature=<pyxfem.core.quadrature.T3_gauss object>)[source]
assemble()[source]
assembleFU()[source]
assembleK()[source]
getStress(U)[source]

return per element stress /per gp stress

postProDisplacement(U)[source]
postProStrain(U)[source]
postProStress(U)[source]
setD()[source]

set the sparse stifness operator (K = BtDB)

setModel(spaceConstructor: type[FEMSpaceP1] | type[FEMSpaceP1NC])[source]
setStabilisation(s, quadEdge)[source]
solve(solver='default')[source]

solve the problem using the solver to choose between “default” : spsolve or “cholmod” : “sksparse.cholmod.cholesky”

pyxfem.solidmechanics.mechanics_solver.computeVolumeLoad(space, source)[source]

compute the vector F such as F.U = int_Omega f.u_h dOmega_h

pyxfem.solidmechanics.mechanics_solver.getSpaceEntity(edgeGroupeNames, space)[source]

get the space’s edge id corresponding to the edgeGroupe Name

pyxfem.solidmechanics.mechanics_solver.main(*, element_size=0.05, profile=True, solver='default', popUpGmsh=True)[source]

main Program and example : elasticity on L shape domain

class pyxfem.solidmechanics.mechanics_solver.testElasticity(methodName='runTest')[source]

Bases: TestCase

testPatch()[source]
  • patch test on a squared load by Dirchlet and then Neumann