I/O Files
Note
Modify the Input/ files to customise your simulation scenario.
Input
The initial states of SPH particles are defined in Input/0-Particles.csv, which can be generated by modifying PrePost/example/test.py.
The particles’ ID, position, velocity, part ID, mass and density are necessary and should be formatted as
ID |
X |
Y |
Z |
VX |
VY |
VZ |
PART |
MASS |
DENSITY |
IFLAG* |
DAMAGE* |
|---|---|---|---|---|---|---|---|---|---|---|---|
0 |
0.0e0 |
0.0e0 |
0.0e0 |
0.0e0 |
0.0e0 |
0.0e0 |
0 |
0.0e0 |
0.0e0 |
1 |
0.0E0 |
1 |
0.0e0 |
0.0e0 |
0.0e0 |
0.0e0 |
0.0e0 |
0.0e0 |
0 |
0.0e0 |
0.0e0 |
1 |
0.0E0 |
2 |
0.0e0 |
0.0e0 |
0.0e0 |
0.0e0 |
0.0e0 |
0.0e0 |
0 |
0.0e0 |
0.0e0 |
1 |
0.0E0 |
where the particle iflag and damage are *optional.
The Input/1-Settings.txt is used to setup the solver and I/O, where the rows are fixed and you can choose/define the values for them.
There are 4 datatypes: I for integers, F for floats in scientific notation, B for bool in 0/1, and S for string that you should choose from the given options.
// --------------------------------------------------------------------------------
// VERSION 1.7
// DATATYPE [I]: INT, [F]: FLOAT, [B]: 0/1, [S]: STRING
// --------------------------------------------------------------------------------
// SETTINGS: SOLVER
// --------------------------------------------------------------------------------
INTEGRATOR [S] : LEAP_FROG/PREDICT_CORRECT
ARTIFICIAL_VISCOSITY [S] : STANDARD/NONE
ARTIFICIAL_HEAT [S] : STANDARD/NONE
ARTIFICIAL_STRESS [S] : STANDARD/NONE
XSPH [S] : STANDARD/NONE
DENSITY_UPDATE [S] : CONTINUOUS_DENSITY/DENSITY_SUMMATION
NEIGHBOR_SEARCH [S] : KDTREE/GRID/ALL_PAIR/HYBRID
GRAVITY [S] : CONST/SPHERE/SELF_GRAVITY/NONE
GRAVITY_CONST [F] : GX,GY,GZ
GRAVITY_SPHERE [F] : X0,Y0,Z0,R,RHO
ROTATION [S] : TARGET/NONE
ROTATION_TARGET [F] : RX0,RY0,RZ0,WX,WY,WZ
DAMPING_TIME [F] : DAMPING_TIME
SYMMETRIC_BOUNDARY [S] : PLANE/NONE
PLANE_DEFINE [F] : A,B,C,D
RELAX [B] : 0/1
LATE_STAGE [B] : 0/1
// --------------------------------------------------------------------------------
// SETTINGS: LIMIT
// --------------------------------------------------------------------------------
PARTICLES_NUM [I] : PARTICLES_NUM
PART_NUM [I] : PART_NUM
PART_MAT_ID [I] : MAT1(,MAT2,...,MAT_PART_NUM)
TOTAL_RUN_TIME [F] : RUN_TIME(,LATE_RUN_TIME)
TIMESTEP_REF [F] : DT_REF
TIMESTEP_LIMIT [F] : DT_MIN,DT_MAX
HSML_REF [F] : HSML_REF
HSML_LIMIT [F] : HSML_MIN,HSML_MAX
VOLUME_MIN [F] : X_MIN,Y_MIN,Z_MIN
VOLUME_MAX [F] : X,MAX,Y_MAX,Z_MAX
// --------------------------------------------------------------------------------
// SETTINGS: INPUT
// --------------------------------------------------------------------------------
INPUT_ID [B] : 1
INPUT_POS [B] : 1
INPUT_VEL [B] : 1
INPUT_PART [B] : 1
INPUT_MASS [B] : 1
INPUT_DENSITY [B] : 1
INPUT_IFLAG [B] : 0/1
INPUT_DAMAGE [B] : 0/1
// --------------------------------------------------------------------------------
// SETTINGS: OUTPUT
// --------------------------------------------------------------------------------
TOTAL_OUTPUT_STEP [I] : OUTPUT_STEP(,LATE_OUTPUT_STEP)
OUTPUT_POS [B] : 0/1
OUTPUT_VEL [B] : 0/1
OUTPUT_ACC [B] : 0/1
OUTPUT_PRESSURE [B] : 0/1
OUTPUT_STRESS [B] : 0/1
OUTPUT_IFLAG [B] : 0/1
OUTPUT_MASS [B] : 0/1
OUTPUT_DENSITY [B] : 0/1
OUTPUT_ENERGY [B] : 0/1
OUTPUT_HSML [B] : 0/1
OUTPUT_C_SOUND [B] : 0/1
OUTPUT_DAMAGE [B] : 0/1
OUTPUT_PART [B] : 0/1
OUTPUT_FRAGMENT [B] : 0/1
OUTPUT_DISTENTION [B] : 0/1
OUTPUT_ROTATION [B] : 0/1
The material parameters are defined in Input/2-Materials.txt. We have provided some commonly used models for basalt, pumice, nylon, and aluminum, where the default units are in m-kg-s. You can also add new materials using the template here.
// --------------------------------------------------------------------------------
// MATERIAL 0: NAME
// --------------------------------------------------------------------------------
@MATERIAL
MAT_ID [I] : 0
MAT_NAME [S] : NAME
ENUM_EOS [S] : TILLOTSON/SIMPLIFIED_TILLOTSON/GRUNEISEN
ENUM_POROSITY [S] : P_ALPHA/NONE
ENUM_YIELD [S] : VON_MISES/LUND
ENUM_DAMAGE [S] : NONE/GRADY_KIPP
MODULUS_SHEAR [F] : 0.0E0
MODULUS_BULK [F] : 0.0E0
MODULUS_ELASTIC [F] : 0.0E0
@TILLOTSON
COEF_A [F] : 0.0E0
COEF_B [F] : 0.0E0
ALPHA [F] : 0.0E0
BETA [F] : 0.0E0
MODULUS_A [F] : 0.0E0
MODULUS_B [F] : 0.0E0
E0 [F] : 0.0E0
ECV [F] : 0.0E0
EIV [F] : 0.0E0
@SIMPLIFIED_TILLOTSON
COFF_C [F] : 0.0E0
MODULUS_A [F] : 0.0E0
@GRUNEISEN
S [F] : 0.0E0
C0 [F] : 0.0E0
GAMMA0 [F] : 0.0E0
@P_ALPHA
ALPHA0 [F] : 0.0E0
PE [F] : 0.0E0
PS [F] : 0.0E0
@VON_MISES
Y0 [F] : 0.0E0
@LUND
YI0 [F] : 0.0E0
YD0 [F] : 0.0E0
YM [F] : 0.0E0
MUI [F] : 0.0E0
MUD [F] : 0.0E0
@GRADY_KIPP
M [F] : 0.0E0
K [F] : 0.0E0
CG_CE [F] : 0.0E0
@END
Output
The particles data are exported to Output/Particlesxxxx.csv in each output timestep.
The .csv files should be easy to visualize (using e.g., paraview) or convert into other data types.
You can also check the simulation progress in Output/Log.txt in real time.