テスト済み有限要素コード

CalculiX

CalculiXは弾性シミュレーションをサポートしています。以下に入力ファイルの説明を示します。

** Mesh ++++++++++++++++++++++++++++++++++++++++++++++++++++

*INCLUDE, INPUT=Mesh/fine-lin-hex.inp		# Path to mesh for ccx solver

** Mesh ++++++++++++++++++++++++++++++++++++++++++++++++++++

*MATERIAL, NAME=MAT				# Defining a material
*ELASTIC,
68.25e9, 0.3					# Defining Young modulus and Poisson's ratio

** Sections ++++++++++++++++++++++++++++++++++++++++++++++++

*SHELL SECTION, ELSET=Shell, MATERIAL=MAT,OFFSET= # Assigning material and plane stress elements
 0.04, 	# to the elements sets in mesh and adding thickness

** Steps +++++++++++++++++++++++++++++++++++++++++++++++++++

*STEP						# Begin of analysis
*STATIC, SOLVER=SPOOLES				# Selection of elastic analysis

** Field outputs +++++++++++++++++++++++++++++++++++++++++++

*EL FILE					# Commands responsible for saving results
E, S
*NODE FILE
U

** Boundary conditions +++++++++++++++++++++++++++++++++++++

*BOUNDARY,					# Applying translation = 0 on desired nodes
E,1,3,0
AE,2,2,0
AE,4,4,0
AE,6,6,0
CE,1,1,0
CE,5,6,0

** Boundary conditions(adding force on nodes) ++++++++++++++++++++

*CLOAD
A,1,2000
C,2,-2000

** End step ++++++++++++++++++++++++++++++++++++++++++++++++

*END STEP					# End on analysis


この解析で使用するシミュレーション入力ファイルは GitHub にあります。

Code_Aster

Code_Asterは弾性シミュレーションをサポートしています。以下に入力ファイルの説明を示します。

DEBUT(LANG='EN')

mesh = LIRE_MAILLAGE(identifier='0:1',                   	 # Reading the mesh
                     FORMAT='IDEAS',
                     UNITE=80)


Quad8 = CREA_MAILLAGE(LINE_QUAD=_F(PREF_NOEUD='NQ',
                                   TOUT='OUI'),
                      MAILLAGE=mesh)

Quad9 = CREA_MAILLAGE(MAILLAGE=Quad8,                     	# Transforming QUAD8 to QUAD9
                      MODI_MAILLE=_F(OPTION='QUAD8_9',
                                     PREF_NOEUD='NS',
                                     TOUT='OUI'))

model = AFFE_MODELE(AFFE=_F(MODELISATION=('COQUE_3D', ),  	# Assigning the elements
                            PHENOMENE='MECANIQUE',
                            TOUT='OUI'),
                    MAILLAGE=Quad9)

elemprop = AFFE_CARA_ELEM(COQUE=_F(EPAIS=0.04,            	# Assigning the thickness
                                   GROUP_MA=('Shell', )),
                          MODELE=model)

mater = DEFI_MATERIAU(ELAS=_F(E=68250000000.0,            	# Defining the material   
                              NU=0.3))

fieldmat = AFFE_MATERIAU(AFFE=_F(MATER=(mater, ),         	# Assigning material to model
                                 TOUT='OUI'),
                         MAILLAGE=Quad9,
                         MODELE=model)

BC = AFFE_CHAR_MECA(DDL_IMPO=(_F(DX=0.0,                   	# Applying the boundary condition
                                 DY=0.0,
                                 DZ=0.0,
                                 GROUP_NO=('E', )),
                              _F(DRX=0.0,
                                 DRZ=0.0,
                                 DY=0.0,
                                 GROUP_NO=('AE', )),
                              _F(DRY=0.0,
                                 DRZ=0.0,
                                 DX=0.0,
                                 GROUP_NO=('CE', ))),
                    MODELE=model)

load0 = AFFE_CHAR_MECA(FORCE_NODALE=(_F(FX=2000.0,          	# Applying forces
                                        GROUP_NO=('A', )),
                                     _F(FY=-2000.0,
                                        GROUP_NO=('C', ))),
                       MODELE=model)

reslin = MECA_STATIQUE(CARA_ELEM=elemprop,			              # Defining results of simulation
                       CHAM_MATER=fieldmat,
                       EXCIT=(_F(CHARGE=BC),
                              _F(CHARGE=load0)),
                       MODELE=model)

IMPR_RESU(FORMAT='RESULTAT',					                        # Saving the results
          RESU=_F(RESULTAT=reslin,
		  GROUP_NO=('A',)),
          UNITE=8)

FIN()

この解析で使用するシミュレーション入力ファイルは GitHub にあります。

Elmer

Elmerは、弾性シミュレーションをサポートします。以下はソルバー入力ファイルの説明です。

Header
  CHECK KEYWORDS Warn
  Mesh DB "." "."				# Path to the mesh
  Include Path ""
  Results Directory ""				# Path to results directory
End

Simulation					# Settings and constants for simulation
  Max Output Level = 5
  Coordinate System = Cartesian
  Coordinate Mapping(3) = 1 2 3
  Simulation Type = Steady state
  Steady State Max Iterations = 1
  Output Intervals = 1
  Timestepping Method = BDF
  BDF Order = 1
  Solver Input File = case.sif
  Post File = case.vtu
End

Constants
  Gravity(4) = 0 -1 0 9.82
  Stefan Boltzmann = 5.67e-08
  Permittivity of Vacuum = 8.8542e-12
  Boltzmann Constant = 1.3807e-23
  Unit Charge = 1.602e-19
End

Body 1						# Assigning the material and equations to the mesh
  Target Bodies(1) = 6
  Name = "Body 1"
  Equation = 1
  Material = 1
End

Solver 1  # Solver calculating normal vectors
  Equation = "Director field"
  Procedure = "SphereNormalSolver" "NormalSolver"
  Exec Solver = "Before Simulation"
  Normals Result Variable = String "Director"
  Exported Variable 1 = Director[Director:3]
  Linear System Solver = "Iterative"
  Linear System Iterative Method = "IDRS"
  Linear System Preconditioning = None
  Linear System Residual Output = 10
  Linear System Max Iterations = 500
  Linear System Convergence Tolerance = 1.0e-10
End

Solver 2					# Solver shell settings
  Equation = "Shell equations"
  Procedure = "ShellSolver" "ShellSolver"
  Large Deflection = False
  Linear System Solver = Direct
  Linear System Preconditioning = ILU0
  Linear System Row Equilibration = Logical True
  Linear System Max Iterations = 1000
  Linear System Convergence Tolerance = 1e-8
  Linear System Direct Method = Umfpack
  Linear System GCR Restart = 300
  Linear System Abort Not Converged = False
  Steady State Convergence Tolerance = 1e-09
End

Equation 1					# Setting active solvers
  Name = "Equation 1"
  Active Solvers(2) = 1 2
End

Material 1					# Defining the material
  Name = "Material 1"
  Poisson ratio = .3
  Youngs modulus = 68.25E9
  Shell Thickness = 0.04
End

Boundary Condition 1				# Applying the boundary conditions
Target Boundaries(1) = 4
  Name = "XZ"
  U 2 = 0
  DNU 2 = 0
End

Boundary Condition 2
Target Boundaries(1) = 5
  Name = "Yz"
  U 1 = 0
  DNU 1 = 0
End

Boundary Condition 3
Target Nodes(1) = 5
  U 3 = 0
  U 2 = 0
  U 1 = 0
End

Boundary Condition 4
  Target Nodes(1) = 1
  Name = "Load X"
  U 1 Load  = Real 2000.0
End

Boundary Condition 5
  Target Nodes(1) = 7
  Name = "Load y"
  U 2 Load = Real -2000.0
End

この解析で使用するシミュレーション入力ファイルは GitHub にあります。