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 .. csv-table:: :header: "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. .. code-block:: text // -------------------------------------------------------------------------------- // 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. .. code-block:: text // -------------------------------------------------------------------------------- // 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.