# PhiPsi Keywords Manual

- This manual simply describes the usage of each keyword available in PhiPsi.
- Author: Fang Shi
- Website: http://phipsi.top
- Email: shifang@hyit.edu.cn / shifang@ustc.edu.cn
- phipsi_keywords_manual.md, Version 1.2, updated on 2024-11-15.

Click here to download the latest version of PhiPsi: http://phipsi.top/downloads.html.

# Contents of this keywords manual

Keywords rules

Basic control keywords

Linear solvers

Define initial cracks, voids (holes) and inclusions

Definition of material parameters

Hydraulic fracturing simulation

Nonlinear analysis

Cohesive crack

Dynamic analysis

Coupling of degrees of freedom

Deactivation elements

Thermal load and prestress

Surface load

Control of the program

Keywords file examples

# Keywords rules

- Keyword lines are in no particular order.

- Lines starting with "%" are comments.

- The keyword line starts with "*", followed by a corresponding data line (multiple data are separated by commas ","). For example:

      *num_Crack
      2
      *InSitu_S1_nv_3D
      1.0,0.0,0.0

- Keywords are not case sensitive.

- Support parameter definition. For example:

      num_of_crack = 2
      *num_Crack
      num_of_crack

- Support basic four arithmetic operations (+++, −-−, ∗*∗, ()()(), and ///). For example:

      *num_Crack
      1+1

      *INI_CRACK_PRESSURE_1
      (15.0e6-10.0e6)*(3.0-1.0)

      Time_Hour=1.0
      *INJECTION_T_STAGES_WELLBORES_1_1
      Time_hour*60*60

# Basic control keywords

- *Work_Dirctory - File location of the input files of PhiPsi, i.e., the work directory.

  Keyword example:

      *Work_Directory
      X:\PhiPsi_Work\FEM

- *Filename - Filename of the input files of PhiPsi (all input files have the same filename).

  Keyword example:

      *Filename
      FEM

- *Key_Unit_System - Unit system.

  = 1, international system of units (default);

  = 2, mm-ton-s.

  Keyword example:

      *Key_Unit_System
      1     % SI.

- *Key_Dimension - The dimension of the problem.

  = 2, two-dimension (Plane stress or plane strain)

  = 3, three-dimension

  Keyword example:

      *Key_Dimension
      2     % 2D problem.

- *Key_Type_2D - Define plane stress or plane strain for 2D problems.

  = 1, plane stress;

  = 2, plane strain (default).

  Keyword example:

      *Key_Type_2D
      2     % plane strain.

- *Key_Analysis_Type - Analysis type.

  = 1, quasi-static (default);

  = 2, implicit dynamic;

  = 3, hydraulic fracturing simulation;

  = 4, Hydraulic fracturing simulation with slick water;

  = 7, nonlinear problem (such as plastic deformation problem);

  = 15, field problem (such as heat transfer problem).

  Keyword example:

      *Key_Analysis_Type
      1     % quasi-static.

- *Key_SIFs_Method - Method to calculate the stress intensity factors (SIFs).

  = 1, displacement interpolation method (DIM; default);

  = 2, the interaction integral method.

  Keyword example:

      *Key_SIFs_Method
      2     % the interaction integral method.

- *Key_SIFs_DIM_Points - Number of points to calculate SIFs using DIM method (default to 2).

  Keyword example:

      *Key_SIFs_DIM_Points
      2

- *Key_SIFs_DIM_Method - Model assumption of the DIM method.

  = 1, plane stress (default);

  = 2, plane strain.

  Keyword example:

      *Key_SIFs_DIM_Method
      2

- *Key_Print_SIFs_to_Screen - Print SIFs to screen / terminal.

  = 0, do not print SIFs to screen / terminal (default);

  = 1, print SIFs to screen / terminal.

  Keyword example:

      *Key_Print_SIFs_to_Screen
      1

- *Key_Contact - Consider contact between crack surfaces or not.

  = 0, no (default);

  = 1, yes.

  Keyword example:

      *Key_Contact
      1     % Active contact between crack surfaces.

- *Max_Contact_Iter - The maximum number of contact iterations (default to 50).

  Keyword example:

      *Max_Contact_Iter
      10

- *fric_mu_Cont - Friction coefficient of crack surfaces (default to 0.3).

  Keyword example:

      *fric_mu_Cont
      0.4

- *kn_Cont_Penalty - Normal penalty stiffness of crack surfaces (default to 1.0e13).

  Keyword example:

      *kn_Cont_Penalty
      1.0e12

- *kt_Cont_Penalty - Tangential penalty stiffness of crack surfaces (default to 1.0e13).

  Keyword example:

      *kt_Cont_Penalty
      1.0e12

- *Conve_Tol_Penalty - Convergence tolerance for the contact iteration (default to 1.0e-5).

  Keyword example:

      *Conve_Tol_Penalty
      1.0e-4

- *Num_Substeps - Number of steps need to be performed.

  Keyword example:

      *Num_Substeps
      10

- *CFCP - Criterion of crack propagation.

  = 1, maximum tensile circumferential stress criterion (default);

  = 2, maximum principal tensile stress criterion;

  = 3, Schollmann’s criterion;

  = 4, maximum shear stress criterion.

  Keyword example:

      *CFCP
      2      % Maximum principal tensile stress criterion.

- *Key_CFCP_3_Type - Crack growth behavior for the Schollmann’s criterion.

  = 1, crack grows only when the equivalent stress intensity factor is greater than the fracture toughness K I c K_{Ic}K I c​ (default);

  = 2, crack grows when the equivalent stress intensity factor is greater than zero.

  Keyword example:

      *Key_CFCP_3_Type
      2

- *Key_TipEnrich - Crack tip enrichment type.

  = 0, no crack tip enrichment, the crack tip is automatically adjusted to the element boundary;

  = 1, standard crack tip enrichment (4 items, F 1 F_1 F 1​ to F 4 F_4 F 4​; default).

  = 2, keep only the first item (F 1 F_1 F 1​, this is recommended for dynamic analysis);

  = 3, not available yet;

  = 4, Cohesive crack tip_cohesive crack (only 1 enrichment function item).

  Keyword example:

      *Key_TipEnrich
      1

- *Key_Fd_TipEnrich - Crack tip enrichment type for field problems.

  = 0, no crack tip enrichment, the crack tip is automatically adjusted to the element boundary;

  = 1, strong discontinuity crack tip enrichment (enrichment function is s q r t(r)∗s i n(θ/2)sqrt(r)*sin(θ/2)s q r t(r)∗s in(θ/2); adiabatic crack for heat conduction problem; default);

  = 2, weak discontinuity crack tip enrichment (enrichment function is s q r t(r)∗c o s(θ/2)sqrt(r)*cos(θ/2)s q r t(r)∗cos(θ/2); isothermal crack for heat conduction problem).

  Keyword example:

      *Key_Fd_TipEnrich
      1

- *Key_InPlane_Growth - 3D Plannar or nonplanar crack propagation.

  = 0, nonplanar crack propagation (default);

  = 1, planar crack propagation.

  Keyword example:

      *Key_InPlane_Growth
      1

- *Key_Scheme_Signed_Dis_InPlane - Scheme to calculate the signed distance for 3D plannar crack.

  = 1, slow and robuts (default);

  = 2, fast but not robuts.

  = 3, more fast but not robuts. Keyword example:

      % Fast scheme to calculte the signed distance to plannar crack.
      *Key_Scheme_Signed_Dis_InPlane
      2

- *Key_Allow_3D_Outside_Crack - Allow the 3D cracks to be outside the model.

  = 0, does not allow the cracks to be outside the model (default);

  = 1, allow the cracks to be outside the model.

  Keyword example:

      *Key_Allow_3D_Outside_Crack
      1

- *Key_Stop_Outside_Crack - Do not allow cracks to grow outside the model.

  = 0, allow cracks to grow outside the model (default);

  = 1, do not allow cracks to grow outside the model.

  Keyword example:

      *Key_Stop_Outside_Crack
      1

- *Key_Denoise_Vertex_Value - Denoise vertex values for 3D cracks.

  = 0, no (default);

  = 1, yes.

  Keyword example:

      *Key_Denoise_Vertex_Value
      1

- *Key_Smooth_Vertex_Value - Smooth vertex values for 3D cracks.

  = 0, no (default);

  = 1, yes.

  Keyword example:

      *Key_Smooth_Vertex_Value
      1

- *Key_Smooth_GF_Value - Smooth the propagation for 3D cracks.

  = 0, no (default);

  = 1, yes.

  Keyword example:

      *Key_Smooth_GF_Value
      1

- *Key_Smooth_Front - 3D crack propagation front vertex smoothing scheme.

  = 0, do not smooth crack front (default);

  = 1, Smooth the crack front edge according to the straight line equation;

  = 2, According to the equation of the circle;

  = 3, CSAPS cubic spline fitting;

  = 4, B-spline curve fitting;

  = 5, According to the equation of ellipse;

  = 6, Taubin smoothing algorithm.

  Keyword example:

      *Key_Smooth_Front
      6

- *Key_Force_Control - The method to control the value of the applied force for each step.

  = 1, the force is applied all at once (default);

  = 2, the applied force increases linearly in each step;

  = 3, not available yet;

  = 4, special scheme for cohesive crack;

  = 5, make sure that only one crack grows in each step.

  Keyword example:

      *Key_Force_Control
      1

- *Key_Initiation - Allow the formation of new cracks.

  = 0, no (default);

  = 1, yes.

  Keyword example:

      % New cracks are allowed to be generated.
      *Key_Initiation
      1

- *Key_Ini_Rule - Ruls for the formation of new cracks.

  = 1, maximum tensile stress criterion (default);

  = 2, maximum shear stress criterion;

  = 3, concrete.

  Keyword example:

      % New cracks are allowed to be generated.
      *Key_Ini_Rule
      1

- *Key_Ini_Cr_3D_Type - Shape of newly formed cracks.

  = 1, circular (default);

  = 2, rectangle.

  Keyword example:

      *Key_Ini_Cr_3D_Type
      1

- *Size_Ini_Crack - Size of newly formed cracks. For a 3D circular crack, Size_Ini_Crack represnts the diameter.

  Keyword example:

      *Size_Ini_Crack
      0.5

- *Key_Max_Num_Initiation_Cracks - Maximum number of cracks allowed to be newly formed (default to 1).

  Keyword example:

      *Key_Max_Num_Initiation_Cracks
      10

- *Key_Propagation - Propagation of cracks.

  = 0, cracks are not allowed to propagate;

  = 1, cracks are allowed to propagate (default).

  Keyword example:

      % Cracks are allowed to propagate.
      *Key_Propagation
      1

- *MAT_ALLOW_CRACK_INITIATION_1 - MAT_ALLOW_CRACK_INITIATION_20 - Allow the formation of new cracks in material type n n n.

  = 0, do not allow;

  = 1, allow (default).

  Keyword example:

      % Do not allow the formation of new cracks in material type 2.
      *MAT_ALLOW_CRACK_INITIATION_2
      0

- *Cracks_Allow_Propa - Allow cracks 1 to n n n to propagate.

  = 0, does not allow cracks to propagate;

  = 1, allow cracks to propagate (default).

  Keyword example:

      *Cracks_Allow_Propa
      1,1,1,1,1,0,0,0,0,0     % Allow cracks 1 to 5 to propagate, and does not allow the propagation of cracks 6 to 10.

- *Key_CS_Natural_Crack - Using penalty function method to simulate contact of natural cracks.

  = 0, no (default);

  = 1, yes.

  Keyword example:

      *Key_CS_Natural_Crack
      1

- *Key_Check_and_Adjust_Cracks_3D - Check and adjust initial 3D cracks.

  = 0, no (default);

  = 1, yes.

  Keyword example:

      *Key_Check_and_Adjust_Cracks_3D
      1

- *Factor_Propagation - Factor of propagation length of cracks, i.e., propagation length Δ l=∗F a c t o r P r o p a g a t i o n×l c\Delta l=*Factor_Propagation \times l_c Δ l=∗F a c t o r P​ro p a g a t i o n×l c​, where l c l_c l c​ represents the average size of enriched elements.

  Keyword example:

      *Factor_Propagation
      1.5

- *Propagation_Length - Propagation length of cracks during a propagation step (Unit: m m m).

  Keyword example:

      *Propagation_Length
      0.010

- *Key_Fracture_Zone - Define propagation zone, i.e., cracks are allowed to propagate just inside the propagation zone.

  = 0, no propagation zone (default);

  = 1, define a propagation zone.

  Keyword example:

      *Key_Fracture_Zone
      1

- *Frac_Zone_MinX - Minimum value of range x x x of the fracture zone.

  Keyword example:

      *Frac_Zone_MinX
      4.0e-3

- *Frac_Zone_MinY - Minimum value of range y y y of the fracture zone.

  Keyword example:

      *Frac_Zone_MinY
      4.0e-3

- *Frac_Zone_MinZ - Minimum value of range z z z of the fracture zone.

  Keyword example:

      *Frac_Zone_MinZ
      4.0e-3

- *Frac_Zone_MaxX - Maximum value of range x x x of the fracture zone.

  Keyword example:

      *Frac_Zone_MaxX
      50.0e-3

- *Frac_Zone_MaxY - Maximum value of range y y y of the fracture zone.

  Keyword example:

      *Frac_Zone_MaxY
      50.0e-3

- *Frac_Zone_MaxZ - Maximum value of range z z z of the fracture zone.

  Keyword example:

      *Frac_Zone_MaxZ
      50.0e-3

- *Key_Ini_Crack_Zone - Define a zone for crack initiation, i.e., initial cracks are allowed to be created just inside the given zone.

  = 0, no (default);

  = 1, define a crack initiation zone.

  Keyword example:

      *Key_Ini_Crack_Zone
      1

- *Ini_Crack_Zone_MinX - Minimum value of range x x x of the crack initiation zone.

  Keyword example:

      *Ini_Crack_Zone_MinX
      4.0e-3

- *Ini_Crack_Zone_MinY - Minimum value of range y y y of the crack initiation zone.

  Keyword example:

      *Ini_Crack_Zone_MinY
      4.0e-3

- *Ini_Crack_Zone_MaxX - Maximum value of range x x x of the crack initiation zone.

  Keyword example:

      *Ini_Crack_Zone_MaxX
      4.0e-3

- *Ini_Crack_Zone_MaxY - Maximum value of range y y y of the crack initiation zone.

  Keyword example:

      *Ini_Crack_Zone_MaxY
      50.0e-3

- *Key_InSitu_Strategy - In-situ stress.

  = 0, does not consider initial stress issues;

  = 1, the displacement field generated by in-situ stress is processed through linear superposition;

  = 2, use the method proposed in the book 'The Finite Element Method: its Basis and Fundamentals';

  = 3, shield the applied in-situ stress (only for hydraulic fracturing analysis);

  = 4, specify the initial stress or read from the initial stress file.

  Keyword example:

      *Key_InSitu_Strategy
      4     % Active gravity.

- *InSitu_S1_3D - In-situ stress S 1 S_1 S 1​ when Key_InSitu_Strategy = 4. Keyword example:

      *InSitu_S1_3D
      0.0e6

- *InSitu_S1_nv_3D - Normal vector of In-situ stress S 1 S_1 S 1​ when Key_InSitu_Strategy = 4. Keyword example:

      *InSitu_S1_nv_3D
      1.0,0.0,0.0

- *InSitu_S2_3D - In-situ stress S 2 S_2 S 2​ when Key_InSitu_Strategy = 4. Keyword example:

      *InSitu_S2_3D
      0.0e6

- *InSitu_S2_nv_3D - Normal vector of In-situ stress S 2 S_2 S 2​ when Key_InSitu_Strategy = 4. Keyword example:

      *InSitu_S2_nv_3D
      1.0,0.0,0.0

- *InSitu_S3_3D - In-situ stress S 3 S_3 S 3​ when Key_InSitu_Strategy = 4. Keyword example:

      *InSitu_S3_3D
      0.0e6

- *InSitu_S3_nv_3D - Normal vector of In-situ stress S 3 S_3 S 3​ when Key_InSitu_Strategy = 4. Keyword example:

      *InSitu_S3_nv_3D
      1.0,0.0,0.0

- *Key_Nonuniform_InSitu_X_with_Z - Apply Nonuniform InSitu stress in X direction (changing with Z). Keyword example:

      *Key_Nonuniform_InSitu_X_with_Z
      1

- *InSitu_Sx_3D_Seg_Strs_X_with_Z - Sx stresses when Key_Nonuniform_InSitu_X_with_Z=1. Keyword example:

      % In this example, three different stress zones (with different stress values of 15, 10, and 5 MPa, respectively) are defined.
      *InSitu_Sx_3D_Seg_Strs_X_with_Z
      15.0e6,10.0e6,5.0e6

- *InSitu_Sx_3D_Seg_Loca_X_with_Z - Location of Sx stresses when Key_Nonuniform_InSitu_X_with_Z=1. Keyword example:

      % In this example, along the z-direction, the stress-x in the zone (0.0, 110.0) is 15.0 MPa, the stress-x in the zone (110.0, 140.0) is 10.0 MPa, and the stress-x in the zone (140.0, 250.0) is 5.0 MPa.
      *Key_Nonuniform_InSitu_X_with_Z
      1
      *InSitu_Sx_3D_Seg_Strs_X_with_Z
      15.0e6,10.0e6,5.0e6
      *InSitu_Sx_3D_Seg_Loca_X_with_Z
      0.0,110.0,140.0,250.0

- *Key_Nonuniform_InSitu_X_with_Y - Apply nonuniform InSitu stress in X direction (changing with Y). Keyword example:

      *Key_Nonuniform_InSitu_X_with_Z
      1

- *InSitu_Sx_3D_Seg_Strs_X_with_Y - Sx stresses when Key_Nonuniform_InSitu_X_with_Y=1. Keyword example:

      % In this example, three different stress zones (with different stress values of 15, 10, and 15 MPa, respectively) are defined.
      *InSitu_Sx_3D_Seg_Strs_X_with_Y
      15.0e6,10.0e6,15.0e6

- *InSitu_Sx_3D_Seg_Loca_X_with_Y - Locations of Sx stresses when Key_Nonuniform_InSitu_X_with_Y=1. Keyword example:

      % In this example, along the y-direction, the stress-x in the zone (0.0, 110.0) is 15.0 MPa, the stress-x in the zone (110.0, 140.0) is 10.0 MPa, and the stress-x in the zone (140.0, 250.0) is 15.0 MPa.
      *Key_Nonuniform_InSitu_X_with_Y
      1
      *InSitu_Sx_3D_Seg_Strs_X_with_Y
      15.0e6,10.0e6,15.0e6
      *InSitu_Sx_3D_Seg_Loca_X_with_Y
      0.0,110.0,140.0,250.0

- *Key_Nonuniform_InSitu_Y_with_Z - Apply nonuniform InSitu stress in Y direction (changing with Z). Keyword example:

      *Key_Nonuniform_InSitu_Y_with_Z
      1

- *InSitu_Sy_3D_Seg_Strs_Y_with_Z - Sy stresses when Key_Nonuniform_InSitu_Y_with_Z=1.
  Keyword example:

      % In this example, three different stress zones (with different stress values of 15, 10, and 15 MPa, respectively) are defined.
      *InSitu_Sy_3D_Seg_Strs_Y_with_Z
      15.0e6,10.0e6,15.0e6

- *InSitu_Sy_3D_Seg_Loca_Y_with_Z - Locations of Sy stresses when Key_Nonuniform_InSitu_Y_with_Z=1. Keyword example:

      % In this example, along the z-direction, the stress-y in the zone (0.0, 110.0) is 15.0 MPa, the stress-y in the zone (110.0, 140.0) is 10.0 MPa, and the stress-y in the zone (140.0, 250.0) is 15.0 MPa.
      *Key_Nonuniform_InSitu_Y_with_Z
      1
      *InSitu_Sy_3D_Seg_Strs_Y_with_Z
      15.0e6,10.0e6,15.0e6
      *InSitu_Sy_3D_Seg_Loca_Y_with_Z
      0.0,110.0,140.0,250.0

- *Key_Nonuniform_InSitu_Y_with_X - Apply nonuniform InSitu stress in Y direction (changing with X). Keyword example:

      *Key_Nonuniform_InSitu_Y_with_X
      1

- *InSitu_Sy_3D_Seg_Strs_Y_with_X - Sy stresses when Key_Nonuniform_InSitu_Y_with_X=1.
  Keyword example:

      % In this example, three different stress zones (with different stress values of 15, 10, and 15 MPa, respectively) are defined.
      *InSitu_Sy_3D_Seg_Strs_Y_with_X
      15.0e6,10.0e6,15.0e6

- *InSitu_Sy_3D_Seg_Loca_Y_with_X - Locations of Sy stresses when Key_Nonuniform_InSitu_Y_with_X=1. Keyword example:

      % In this example, along the x-direction, the stress-y in the zone (0.0, 110.0) is 15.0 MPa, the stress-y in the zone (110.0, 140.0) is 10.0 MPa, and the stress-y in the zone (140.0, 250.0) is 15.0 MPa.
      *Key_Nonuniform_InSitu_Y_with_X
      1
      *InSitu_Sy_3D_Seg_Strs_Y_with_X
      15.0e6,10.0e6,15.0e6
      *InSitu_Sy_3D_Seg_Loca_Y_with_X
      0.0,110.0,140.0,250.0

- *Key_Nonuniform_InSitu_Z_with_X - Apply nonuniform InSitu stress in Z direction (changing with X). Keyword example:

      *Key_Nonuniform_InSitu_Z_with_X
      1

- *InSitu_Sz_3D_Seg_Strs_Z_with_X - Sz stresses when Key_Nonuniform_InSitu_Z_with_X=1.
  Keyword example:

      % In this example, three different stress zones (with different stress values of 15, 10, and 15 MPa, respectively) are defined.
      *InSitu_Sz_3D_Seg_Strs_Z_with_X
      15.0e6,10.0e6,15.0e6

- *InSitu_Sz_3D_Seg_Loca_Z_with_X - Locations of Sz stresses when Key_Nonuniform_InSitu_Z_with_X=1. Keyword example:

      % In this example, along the x-direction, the stress-z in the zone (0.0, 110.0) is 15.0 MPa, the stress-y in the zone (110.0, 140.0) is 10.0 MPa, and the stress-y in the zone (140.0, 250.0) is 15.0 MPa.
      *Key_Nonuniform_InSitu_Z_with_X
      1
      *InSitu_Sz_3D_Seg_Strs_Z_with_X
      15.0e6,10.0e6,15.0e6
      *InSitu_Sz_3D_Seg_Loca_Z_with_X
      0.0,110.0,140.0,250.0

- *Key_Nonuniform_InSitu_Z_with_Y - Apply nonuniform InSitu stress in Z direction (changing with Y). Keyword example:

      *Key_Nonuniform_InSitu_Z_with_Y
      1

- *InSitu_Sz_3D_Seg_Strs_Z_with_Y - Sz stresses when Key_Nonuniform_InSitu_Z_with_Y=1.
  Keyword example:

      % In this example, three different stress zones (with different stress values of 15, 10, and 15 MPa, respectively) are defined.
      *InSitu_Sz_3D_Seg_Strs_Z_with_Y
      15.0e6,10.0e6,15.0e6

- *InSitu_Sz_3D_Seg_Loca_Z_with_Y - Locations of Sz stresses when Key_Nonuniform_InSitu_Z_with_Y=1. Keyword example:

      % In this example, along the y-direction, the stress-z in the zone (0.0, 110.0) is 15.0 MPa, the stress-y in the zone (110.0, 140.0) is 10.0 MPa, and the stress-y in the zone (140.0, 250.0) is 15.0 MPa.
      *Key_Nonuniform_InSitu_Z_with_Y
      1
      *InSitu_Sz_3D_Seg_Strs_Z_with_Y
      15.0e6,10.0e6,15.0e6
      *InSitu_Sz_3D_Seg_Loca_Z_with_Y
      0.0,110.0,140.0,250.0

- *Key_Gravity - Gravity.

  = 0, no gravity (default);

  = 1, apply gravity to the whole model.

  Keyword example:

      *Key_Gravity
      1     % Active gravity.

- *g_X_Y_Z - Values of gravitational acceleration in x x x, y y y and z z z directions.

  1, gravitational acceleration in x x x direction;

  2, gravitational acceleration in y y y direction;

  3, gravitational acceleration in z z z directions.

  Keyword example:

      *g_X_Y_Z
      0,0,9.8      % Set gravitational acceleration in z direction.

- *KEY_RANDOM_SCHEME - Random generation.

  = 0, randomly generates, but the generated results remain unchanged;

  = 1, randomly generates and the generated results are different (default);

  = 2, randomly generates with a given seed.

  = 3, randomly generates with a seed, seed is randomly generated.

  Keyword example:

      *Key_Random
      2

- *Seed - Seed for random generation (when *Key_Random=4).

  Keyword example:

      *Key_Random
      2
      *Seed
      12345  % Can be arbitrary integer.

- *Key_Crack_Aperture_Method - Method to calculate crack aperture.

  = 1, equation (default);

  = 2, according to displacements of points on both sides of the fracture surface.

  Keyword example:

      *Key_Crack_Aperture_Method
      1

# Solver of linear system of equations

- *Key_SLOE - Select the solver of linear system.

  = 1, the direct solver (Finding the inverse matrix);

  = 2, Gaussian elimination;

  = 3, Pardiso (Only available for Intel Fortran compiler);

  = 4, ITPACK (Iterative method);

  = 5, LAPACK (Default);

  = 6, MUMPS (Direct method);

  = 7, UMFPACK (Direct method - Multifrontal LU factorization);

  = 8, Lis (Iterative method);

  = 9, SuperLU (Direct method);

  = 10, Y12m (Gaussian elimination);

  = 11, EBE-PCG (Element-by-element preconditioned conjugate gradient solver);

  = 12, STRUMPACK (Direct solver for sparse and dense rank-structured linear systems).

  Keyword example:

      *Key_SLOE
      11      % EBE-PCG solver.

- *Key_K_Sparse - Assemble the stiffness matrix K in Sparse format (Compressed Sparse Row (CSR) format) to reduce the memory usage. This keyword is available for solvers 6, 7, 8, 9, and 12. If you're working with large-scale models, we recommend either selecting solver 11 or activating sparse matrix storage by setting *Key_K_Sparse = 1 when using other available solvers.

  = 0, assemble the stiffness matrix K in full format (default);

  = 1, assemble the stiffness matrix K in Compressed Sparse Row (CSR) format.

  Keyword example:

      *Key_SLOE
      8      % Lis solver.
      *Key_K_Sparse
      1      % Assemble the K matrix in CSR format.

- *Key_EBE_Precondition - Preconditioner for EBE-PCG solver (solver 11).

  = 0, no preconditoner.

  = 1, diagonalized preprocessor (default);

  = 2, HW preprocessor.

  Keyword example:

      *Key_EBE_Precondition
      1

# Define initial cracks, voids (holes) and inclusions

- *num_Crack - Number of initial cracks.

  Keyword example:

      *num_Crack
      5

- *num_Circ_Hole - Number of initial circle holes.

  Keyword example:

      *num_Circ_Hole
      1

- *num_Circ_Incl - Number of circular inclusions.

  Keyword example:

      *num_Circ_Incl
      5

- *num_Poly_Incl - Number of polygonal inclusions.

  Keyword example:

      *num_Poly_Incl
      3

- *CRACK_1 - CRACK_50 - Define the coordinates of each initial cracks (line segments) for 2D problem (input format: P 1 x P_{1x}P 1 x​, P 1 y P_{1y}P 1 y​, P 2 x P_{2x}P 2 x​, P 2 y P_{2y}P 2 y​, P 3 x P_{3x}P 3 x​, P 3 y P_{3y}P 3 y​, ... , P n x P_{nx}P n x​, P n y P_{ny}P n y​).

  Keyword example:

      % Coordinates of 2 initial cracks, the first crack is defined by 2 points, the second crack is defined by 3 points.
      *CRACK_1
      0.0217,0.0229,0.0253,0.0247
      *CRACK_2
      0.0083,0.0193,0.0123,0.0283,0.0223,0.0383

- *Crack3D_Coor_1 - Crack3D_Coor_50 - Define the coordinates of each initial cracks (plane in 3D composed of four points) for 3D problem (input format: x 1 x_1 x 1​, y 1 y_1 y 1​, z 1 z_1 z 1​, x 2 x_2 x 2​, y 2 y_2 y 2​, z 2 z_2 z 2​, x 3 x_3 x 3​, y 3 y_3 y 3​, z 3 z_3 z 3​, x 4 x_4 x 4​, y 4 y_4 y 4​, z 4 z_4 z 4​).

  Keyword example:

      *Crack3D_Coor_1
      10.0,14.0,6.0,10.0,14.0,14.0,10.0,6.0,14.0,10.0,6.0,6.0
      *Crack3D_Coor_2
      14.0,10.0,6.0,14.0,10.0,14.0,6.00,10.0,14.0,6.0,10.0,6.0
      *Crack3D_Coor_3
      6.0,6.0,10.0,14.0,6.0,10.0,14.0,14.0,10.0,6.0,14.0,10.0

- *Crack3D_Cir_Coor_1 - Crack3D_Cir_Coor_30 - Define the coordinates of each initial circular cracks for 3D problem (input format: x x x coordinate of crack center, y y y coordinate of crack center, z z z coordinate of crack center, x x x component of the normal vector of the crack surface, y y y component of the normal vector of the crack surface, z z z component of the normal vector of the crack surface, radius r r r of the crack).

  Keyword example:

      *Crack3D_Cir_Coor_1
      8.5,8.5,6.5,1.0,1.0,1.0,2.5
      *Crack3D_Cir_Coor_2
      8.5,8.5,10.5,1.0,1.0,1.0,2.5

- *Hole_Coor_1 - Hole_Coor_30 - Define the coordinates of initial holes in 2D (input format: x x x, y y y, r r r).

  Keyword example:

      % Define initial holes.
      *Hole_Coor_1
      15.25e-3,7.75e-3,2.0e-3
      *Hole_Coor_2
      4.25e-3,7.75e-3,1.5e-3
      *Hole_Coor_3
      26.25e-3,7.75e-3,1.5e-3

- *Circ_Inclu_Coor_1 - Circ_Inclu_Coor_30 - Define the coordinates of initial circular inclusions in 2D (input format: x x x, y y y, r r r).

  Keyword example:

      % Define an initial inclusion.
      *Circ_Inclu_Coor_1
      13.5e-3,10.5e-3,3.0e-3

- *Key_Random_NaCr - Randomly generate initial cracks or not.

  = 0, do not generate (default);

  = 1, randomly generates;

  = 2, read from FracMan file (*.fab);

  = 3, generates according to user-defined parameters.

  Keyword example:

      % Read initial cracks from FracMan file (*.fab).
      *Key_Random_NaCr
      2

- *Key_NaCr_Active_Scheme_3D - Activation algorithm for 3D natural fractures.

  = 1, all natural fractures are activated at the initial moment. After being activated by hydraulic fracture, the fractures will be filled with fracturing fluid (default);

  = 2, natural fractures are activated after being communicated by hydraulic fracture. After being activated by hydraulic fracture, the fractures will be filled with fracturing fluid;

  = 3, natural fractures are partially activated after being communicated by hydraulic fracture. After being activated by hydraulic fracture, only part of the crack open and expand along the surface where the natural cracks are located.

  Keyword example:

      % Partially enable natural crack when activated by hydraulic cracks.
      *Key_NaCr_Active_Scheme_3D
      3

- *KIC_NACR - Fracture toughness K I c K_{Ic}K I c​ of initial natural cracks.

  Keyword example:

      *KIC_NACR
      10

- *KIC_NA_Crack_1 - KIC_NA_Crack_30 - Fracture toughness K I c K_{Ic}K I c​ of initial natural crack n n n.

  Keyword example:

      *KIC_NA_Crack_1
      0.1e6
      *KIC_NA_Crack_2
      0.2e6

- *St_NACR - Tensile strength S t S_t S t​ of natural cracks.

  Keyword example:

      *St_NACR
      0.1e6

- *St_NA_Crack_1 - St_NA_Crack_30 - Tensile strength S t S_t S t​ of natural crack n n n.

  Keyword example:

      *St_NA_Crack_1
      0.1e6
      *St_NA_Crack_2
      0.5e6

- *Key_NaCr_Cross - Allow the intersection of initially generated natural cracks.

  = 1, no (default);

  = 2, yes;

  Keyword example:

      *Key_NaCr_Cross
      1

- *num_Rand_Na_Crack - Number of cracks need to be randomly generated.

  Keyword example:

      *num_Rand_Na_Crack
      10

- *NaCr_Orientation - Average direction (in degrees) of the cracks need to be randomly generated for 2D problems.

  Keyword example:

      *NaCr_Orientation
      -60.0

- *NaCr_3D_n_Vector - Average direction (normal vector) of cracks need to be randomly generated for 3D problems.

  Keyword example:

      *NaCr_3D_n_Vector
      1.0,0.0,1.0

- *NaCr_Ori_Delta - Fluctuation range (+ or -) of the average direction (in degrees) for 2D problems.

  Keyword example:

      *NaCr_Ori_Delta
      10.0

- *NaCr_3D_n_Vector_Delta - Amplitude of fluctuation of the normal direction (in degrees) for 3D problems.

  Keyword example:

      *NaCr_3D_n_Vector_Delta
      15.0

- *NaCr_Length - Average length of the cracks need to be randomly generated for 2D problems.

  Keyword example:

      *NaCr_Length
      10.0

- *NaCr_3D_Size - Average size of the cracks need to be randomly generated for 3D problems.

  Keyword example:

      *NaCr_3D_Size
      10.0

- *NaCr_Len_Delta - Fluctuation range (+ or -) of the average length of natural cracks for 2D problems.

  Keyword example:

      *NaCr_Len_Delta
      2.0

- *NaCr_3D_Sz_Delta - Fluctuation range (+ or -) of the average size of natural cracks for 3D problems.

  Keyword example:

      *NaCr_3D_Sz_Delta
      5.0

- *num_Rand_Hole - Number of holes need to be randomly generated.

  Keyword example:

      *num_Rand_Hole
      6

- *Rand_Hole_R - Size of initial generated holes.

  Keyword example:

      *Rand_Hole_R
      1.2e-2

- *Rand_Hole_Delta_R - Fluctuation range (+ or -) of size of initial generated holes.

  Keyword example:

      *Rand_Hole_Delta_R
      0.3e-2

- *Key_Hole_Crack_Generate - Allow cracks to emerge from the inner edge of the holes.

  = 0, no (default);

  = 1, yes.

  Keyword example:

      *Key_Hole_Crack_Generate
      1

- *Key_Num_Cr_Hole_Generated - The maximum number of cracks emerged from the inner edge of the holes.

  Keyword example:

      *Key_Num_Cr_Hole_Generated
      2

- *Key_NaCr_Type_3D - Shape of initially generated natural cracks for 3D problems.

  = 1, rectangle;

  = 2, circle;

  = 3, polygon.

  Keyword example:

      *Key_NaCr_Type_3D
      1

- *Key_Rand_Circ_Incl - Randomly generate circular inclusions or not.

  = 0, do not generate (default);

  = 1, generates.

  Keyword example:

      *Key_Rand_Circ_Incl
      1

- *num_Rand_Circ_Incl - Number of circular inclusions need to be randomly generated.

  Keyword example:

      *num_Rand_Circ_Incl
      10

- *Rand_Circ_Incl_R - The average radius of the circular inclusions need to be randomly generated.

  Keyword example:

      *Rand_Circ_Incl_R
      0.5e-3

- *Rand_Circ_Inc_R_Delta - Fluctuation range (+ or -) of the average radius.

  Keyword example:

      *Rand_Circ_Inc_R_Delta
      0.1e-3

- *Key_Rand_Poly_Incl - Randomly generate initial regular polygonal inclusions or not.

  = 0, do not generate (default);

  = 1, generates.

  Keyword example:

      *Key_Rand_Poly_Incl
      1

- *num_Rand_Poly_Incl - Number of regular polygonal inclusions need to be randomly generated.

  Keyword example:

      *num_Rand_Poly_Incl
      10

- *num_Vert_Poly_Incl - Number of edges of regular polygonal inclusions.

  Keyword example:

      *num_Vert_Poly_Incl
      5

- *Rand_Poly_Incl_R - Average radius of circumcircle of regular polygonal inclusions.

  Keyword example:

      *Rand_Poly_Incl_R
      0.5e-3

- *Rand_Poly_Inc_R_Delta - Fluctuation range (+ or -) of the average radius of circumcircle of regular polygonal inclusions.

  Keyword example:

      *Rand_Poly_Inc_R_Delta
      0.1e-3

- *Key_User_Defined_2D_Crack_Path - Enable user defined 2D crack path. The cracks will propagate along user defined paths. This keyword should be used in conjunction with keyword *USER_DEFINED_2D_CRACK_PATH_n. = 1, no (default);

  = 2, yes;

  Keyword example:

      *Key_User_Defined_2D_Crack_Path
      1

- *User_Defined_2D_Crack_Path_1 - User_Defined_2D_Crack_Path_99 - Define the coordinates of each user defined crack path (Support up to 99 user defined crack paths). Input format of this keyword: P 1 x P_{1x}P 1 x​, P 1 y P_{1y}P 1 y​, P 2 x P_{2x}P 2 x​, P 2 y P_{2y}P 2 y​, P 3 x P_{3x}P 3 x​, P 3 y P_{3y}P 3 y​, ... , P n x P_{nx}P n x​, P n y P_{ny}P n y​. This keyword is necessary when keyword *Key_User_Defined_2D_Crack_Path = 1. If multiple crack paths are defined, the program starts simulation from the first path, one by one, until the last crack path.

  Keyword example:

      % Enable User Defined 2D Crack Path.
      *Key_User_Defined_2D_Crack_Path
      1

      % User Defined 2D Crack Path 1. This crack path consists of 9 coordinate points.
      *User_Defined_2D_Crack_Path_1
      0.154856,0.291413,0.154856,0.480089,0.154856,0.694378,0.253281,0.694577,0.330709,0.670475,0.354331,0.581574,0.333333,0.506059,0.251969,0.484332,0.154856,0.480089

      % User Defined 2D Crack Path 2. This crack path consists of 3 coordinate points.
      *User_Defined_2D_Crack_Path_2
      0.471129,0.290705,0.472441,0.465909,0.473753,0.721977

# Definition of material parameters

- *Material_Type_1 - Material_Type_70 - Material type definition for each material.

  = 1, isotropic material;

  = 2, plastic material (Von Mises yield criterion);

  = 3, damage material;

  = 4, Mohr-Coulomb plastic;

  = 5, Composite (for 3D problems only);

  = 6, Drucker-Prager plastic.

  Keyword example:

      *MATERIAL_TYPE_1
      1
      *MATERIAL_TYPE_2
      1
      *MATERIAL_TYPE_3
      1

- *Material_Para_1 - Material_Para_70 - 20 parameters possibly needed to be defined for each material.

  1, elasticity modulus, E E E;

  2, Poisson's ratio, ν ν ν;

  3, density, ρ ρ ρ;

  4, thickness for 2D plane stress model, t t t;

  5, tensile strength, σ t σ_t σ t​;

  6, fracture toughness, K I c K_{Ic}K I c​;

  7, compressive strength, σ c σ_c σ c​;

  8, coefficient of thermal expansion, T α T_α T α​;

  9, specific heat coefficient, c c c;

  10, conductivity coefficient, K x x K_{xx}K xx​;

  11, conductivity coefficient, K y y K_{yy}K yy​;

  12, Mises yield stress σ y σ_y σ y​;

  13, Tangent modulus after yielding E T E_T E T​;

  14, Hardening parameter β β β;

  15, Cohesive strength c c c;

  16, Internal friction angle φ φ φ;

  17, Initial damage strain for tension;

  18, Ultimate damage strain for tension;

  19, Initial damage strain for compression;

  20, Ultimate damage strain for compression.

  Keyword example:

      % Parameters for material type 1.
      *Material_Para_1
      35.0e9,0.25,2000.0,1.0,2.0e6,1.0e6,100.0e6,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0
      % Parameters for material type 2.
      *Material_Para_2
      0.02e9,0.3,200.0,1.0,1000.0e6,2.0e6,100.0e6,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0

# Hydraulic fracturing simulation

- *Num_Frac - Number of steps of the hydraulic fracturing simulation.

  Keyword example:

      *Num_Frac
      10

- *Key_Symm_HF - Symmetric hydraulic fracturing model.

  = 0, no (full model);

  = 1, yes.

  Keyword example:

      *Key_Symm_HF
      0

- *Cracks_HF_State - Initial states of each crack (fluid driven or not).

  = 0, free crack without fluid;

  = 1, hydraulic fluid-driven crack.

  Keyword example:

      *Cracks_HF_State
      1

- *Inject_Crack_Num - For full model (Key_Symm_HF=0), define the crack which contains the injection point of fluid (For symmetric model, the injection point is just the mouth of the edge crack which is also crack number 1).

  Keyword example:

      *Cracks_HF_State
      1

- *Inj_Point_Loc - For full model, define the coordinates of the injection point (input format: x x x, y y y).

  Keyword example:

      *Inj_Point_Loc
      8.5, 8.5

- *Inject_Q_Time - Define the time instants of the data curve of injection rate of fracturing fluid (unit: s s s; 20 time instants at most).

  Keyword example:

      *Inject_Q_Time
      0,10000

- *Inject_Q_Val - Define the values of injection rate of the data curve of injection rate of fracturing fluid (unit: m 3/s m^3/s m 3/s).

  Keyword example:

      *Inject_Q_Val
      0.001,0.001

- *Inject_c_Time - Define the time instants of the data curve of volumetric concentration of injected proppant (unit: s s s; 20 time instants at most).

  Keyword example:

      *Inject_c_Time
      0,10000,20000

- *Inject_c_Val - Define the values of concentration of the data curve of volumetric concentration of injected proppant.

  Keyword example:

      *Inject_c_Val
      0,0.1,0.3

- *Key_Visco_Type - Static viscosity or dynamic viscosity.

  = 1, static viscosity;

  = 2, dynamic viscosity.

  Keyword example:

      *Key_Visco_Type
      1

- *Viscosity - The viscosity of fracturing fluid (unit: P a⋅s Pa·s P a⋅s).

  Keyword example:

      *Viscosity
      0.01

- *Viscosity_Par_m - Parameter m m m of dynamic viscosity (define when *Key_Visco_Type =2).

  Keyword example:

      *Viscosity_Par_m
      2

- *Key_Proppant - Consider proppant or not.

  = 0, no (default);

  = 1, yes.

  Keyword example:

      *Key_Proppant
      1

- *Key_Propp_Trans - Consider the transport of proppant or not.

  = 0, no (default);

  = 1, yes.

  Keyword example:

      *Key_Propp_Trans
      1

- *Key_Leakoff - Consider the leak off of the fracturing fluid or not.

  = 0, no (default);

  = 1, yes.

  Keyword example:

      *Key_Leakoff
      0

- *Coeff_Leak - Leak coefficient of the Carter model (define when *Key_Leakoff =1).

  Keyword example:

      *Coeff_Leak
      1.0d-5

- *Key_Crack_Inner_Pressure - Active initial fluid pressure of cracks.

  = 0, no (default);

  = 1, yes.

  Keyword example:

      *Key_Crack_Inner_Pressure
      1

- *INI_CRACK_PRESSURE - Initial fluid pressure of all cracks.

  Keyword example:

      *INI_CRACK_PRESSURE
      10.0e6

- *INI_CRACK_PRESSURE_1 - INI_CRACK_PRESSURE_50 - Initial fluid pressure of cracks.

  Keyword example:

      *INI_CRACK_PRESSURE_1
      10.0e6
      *INI_CRACK_PRESSURE_2
      10.0e6

- *Key_3D_HF_Time_Step_Method - Method to solve the fluid-solid coupling problem for the 3D hydraulic fracturing simulation with slick water.

  = 1, Dual-layer Newton-Raphson iteration (default);

  = 2, Bisection.

  Keyword example:

      *Key_3D_HF_Time_Step_Method
      1

- *Key_3D_HF_SlipWater_fk_Type - Calculation method of the equivalent stress intensity factor crack propagation criterion for 3D hydraulic fracturing simulation with slick water.

  = 1, the maximum equivalent stress intensity factor;

  = 2, the avarage equivalent stress intensity factor;

  = 3, the minimum equivalent stress intensity factor.

  Keyword example:

      *Key_3D_HF_SlipWater_fk_Type
      3

- *Key_HF_Multistage_3D - Active staged fracturing.

  = 0, no (default);

  = 1, yes.

  Keyword example:

      *Key_HF_Multistage_3D
      1

- *num_Wellbore - Number of wellbores.

  Keyword example:

      *num_Wellbore
      1

- *num_Points_WB_1 - num_Points_WB_10 - Number of points to define wellbore n n n.

  Keyword example:

      *num_Points_WB_1
      2

- *Wellbore_Coors_1_1 - Wellbore_Coors_10_6 - Points to define wellbore n n n.

  Keyword example:

      % Point 1 to define wellbore 1.
      *Wellbore_Coors_1_1
      100.0,100.0,0.1
      % Point 2 to define wellbore 1.
      *Wellbore_Coors_1_2
      100.0,100.0,199.9

- *WELLBORES_START_POINT_1 - WELLBORES_START_POINT_10 - Start point for fracturing of wellbore n n n.

  Keyword example:

      *WELLBORES_START_POINT_1
      100.0,100.0,90.0

- *WELLBORES_END_POINT_1 - WELLBORES_END_POINT_10 - End point for fracturing of wellbore n n n.

  Keyword example:

      *WELLBORES_END_POINT_1
      100.0,100.0,110.0

- *num_Stages_Wellbores_1 - num_Stages_Wellbores_10 - Number of stages of wellbore n n n.

  Keyword example:

      *num_Stages_Wellbores_1
      1

- *NUM_CRS_STAGES_WELLBORES_1_1 - NUM_CRS_STAGES_WELLBORES_5_5 - Number of clusters of a stage of wellbore n n n.

  Keyword example:

      % Number of clusters of stage 1 of wellbore 5.
      *NUM_CRS_STAGES_WELLBORES_5_1
      1

- *Key_Gen_Ini_Crack_Wellbores - Shape of initial hydraulic fractures.

  = 1, rectangle;

  = 2, circle;

  = 3, polygon.

  Keyword example:

      % Generate circle initial fractures along the wellbore.
      *Key_Gen_Ini_Crack_Wellbores
      2

- *Size_Ini_Crack_Wellbores - Size of initial hydraulic fractures, for circle or polygon cracks, size denotes diameter.

  Keyword example:

      *Size_Ini_Crack_Wellbores
      3.0

- *INJECTION_Q_STAGES_WELLBORES_1_1 - INJECTION_Q_STAGES_WELLBORES_5_5 - Injection rate of a stage of wellbore 1 (unit: m 3/s m^3/s m 3/s).

  Keyword example:

      % Injection rate of stage 1 of wellbore 5.
      *INJECTION_Q_STAGES_WELLBORES_5_1
      0.01

- *INJECTION_T_STAGES_WELLBORES_1_1 - INJECTION_T_STAGES_WELLBORES_5_5 - Injection time of a stage of wellbore 1 (unit: s s s).

  Keyword example:

      % Injection time of stage 1 of wellbore 5.
      *INJECTION_T_STAGES_WELLBORES_5_1
      1000

- *Key_Get_Permeability - Calculate the element equivalent permeability for 3D hydraulic fracturing simulation.

  = 0, no;

  = 1, yes.

  Keyword example:

      *Key_Get_Permeability
      1

# Nonlinear analysis

- *NL_ITRA - Maximum number of Newton-Raphson iteration (default：30).

  Keyword example:

      *NL_ITRA
      40

- *NL_ATOL - Maximum Norm-2 value of the residual of Newton-Raphson iteration (default：1.0e8).

  Keyword example:

      *NL_ATOL
      2.0e8

- *NL_NTOL - Maximum number of bisection of force for Newton-Raphson iteration (default：6).

  Keyword example:

      *NL_NTOL
      10

- *NL_TOL - Convergence tolerance for Newton-Raphson iteration (default：1.0e-6).

  Keyword example:

      *NL_TOL
      1.0e6

- *NL_TIMS_1 - NL_TIMS_30 - Load step control, 5 parameters are needed for each load step:

  1, starting time for the current load step;

  2, ending time for the current load step;

  3, time increment for the current load step;

  4, starting force factor for the current load step;

  5, ending force factor for the current load step.

  Keyword example:

      *NL_TIMS_1
      0.0,0.4,0.1,0.0,0.5
      *NL_TIMS_2
      0.4,1.0,0.05,0.5,1.0

# Cohesive crack

- *Coh_Constitutive_type - Constitutive model of the cohesive crack:

  = 1, bilinear model, first rise and then fall (Define both *Coh_Width_Critical1 and *Coh_Width_Critical2);

  = 2, linear model (Define *Coh_Width_Critical2);

  = 3, constant model (Define *Coh_Width_Critical2).

  Keyword example:

      *Coh_Constitutive_type
      1

- *Coh_Width_Critical1 - Normal width of crack at which the crack surface has the ultimate normal traction (needs to be defined only when *Coh_Constitutive_type =1).

  Keyword example:

      *Coh_Width_Critical1
      2.0e-4

- *Coh_Width_Critical2 - Normal width of crack at which the crack surface has no normal traction.

  Keyword example:

      *Coh_Width_Critical2
      1.0e-5

- *Coh_f_Ultimate - The ultimate normal traction.

  Keyword example:

      *Coh_f_Ultimate
      3.0D5

- *Coh_Tangential_Key - Consider tangential traction or not.

  = 0, no (default);

  = 1, yes (Define *Coh_Width_Critical1_T, *Coh_Width_Critical2_T, *Coh_f_Ultimate_T).

  Keyword example:

      *Coh_Tangential_Key
      1

- *Coh_Width_Critical1_T - Tangential width of crack at which the crack surface has the ultimate tangential traction (needs to be defined only when *Coh_Constitutive_type =1 and * Coh_Tangential_Key =1).

  Keyword example:

      *Coh_Width_Critical1_T
      0.25D-3

- *Coh_Width_Critical2_T - Tangential width of crack at which the crack surface has no tangential traction.

  Keyword example:

      *Coh_Width_Critical2_T
      0.50D-3

- *Coh_f_Ultimate_T - The ultimate tangential traction

  Keyword example:

      *Coh_f_Ultimate_T
      5.0D6

# Dynamic analysis

- *IDy_Num_Iteras - Number of steps of the implicit dynamic analysis.

  Keyword example:

      *IDy_Num_Iteras
      200

- *IDy_Num_force_Itr - Number of steps with force applied (In other words, the applied force will be removed if the current step number is larger than *IDy_Num_force_Itr) for the implicit dynamic analysis.

  Keyword example:

      *IDy_Num_force_Itr
      100

- *Delt_Time_NewMark - Time increment of the Newmark time integration algorithm (default to 1.0e-6) for the implicit dynamic analysis.

  Keyword example:

      *Delt_Time_NewMark
      5.0e-6

- *edy_num_iteras - Number of steps of the explicit dynamic analysis.

  Keyword example:

      *edy_num_iteras
      200

- *EDy_num_force_itr - Number of steps with force applied (In other words, the applied force will be removed if the current step number is larger than *edy_num_iteras) for the explicit dynamic analysis.

  Keyword example:

      *EDy_num_force_itr
      100

- *delt_time_explicit - Time increment of the time step (default to 1.0e-6) for the explicit dynamic analysis.

  Keyword example:

      *delt_time_explicit
      5.0e-6

- *Factor_Prop_Dy - Factor of dynamic propagation length of cracks (default to 1.63). Propagation length Δ l=∗F a c t o r P r o p D y×l c\Delta l=*Factor_Prop_Dy \times l_c Δ l=∗F a c t o r P​ro p D​y×l c​, where l c l_c l c​ represents the average size of enriched elements.

  Keyword example:

      *Factor_Prop_Dy
      1.63

- *Key_EQ: Earthquake analysis.

  = 0, no (default);

  = 1, yes.

  Keyword example:

      *Key_EQ
      1

- *num_EQ_Ac_nodes - Number of the nodes with earthquake acceleration applied.

  Keyword example:

      *num_EQ_Ac_nodes
      31

- *EQ_Ac_nodes - List of nodes with earthquake acceleration applied.

  Keyword example:

      *EQ_Ac_nodes
      187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217

- *EQ_Ac_Time_Gap - Time interval of the earthquake acceleration data (define when *Key_EQ=1).

  Keyword example:

      *EQ_Ac_Time_Gap
      0.01

# Coupling of degrees of freedom

- *num_CP_x_nodes - The total amount of nodes need to be coupled in x x x direction.

  Keyword example:

      *num_CP_x_nodes
      21

- *CP_x_nodes - The nodes number of all the nodes need to be coupled in x x x direction.

  Keyword example:

      *CP_x_nodes
      2,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101

- *num_CP_y_nodes - The total amount of nodes need to be coupled in y y y direction.

  Keyword example:

      *num_CP_y_nodes
      21

- *CP_y_nodes - The nodes number of all the nodes need to be coupled in y y y direction.

  Keyword example:

      *CP_y_nodes
      2,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101

# Deactivation elements

- *Key_EKILL - Deactivate elements during simulation.

  = 1, no (default);

  = 1, yes.

  Keyword example:

      *Key_EKILL
      1

- *Ele_Killed_Each_Load_Step_02 - Ele_Killed_Each_Load_Step_40 - Define element lists for load step n n n.

  Keyword example:

      % Define elements to be killed at each step (from step 2 to step 5).
      *Ele_Killed_Each_Load_Step_02
      501,466
      *Ele_Killed_Each_Load_Step_03
      502,467
      *Ele_Killed_Each_Load_Step_04
      503,468
      *Ele_Killed_Each_Load_Step_05
      504,469

# Thermal load and prestress

- *KEY_THERMAL_STRESS - Enable thermal stress.

  = 0, no (default);

  = 1, yes.

  Keyword example:

      *KEY_THERMAL_STRESS
      1

- *Key_Initial_Temperature - Methods to define initial temperature.

  = 1, define initial temperature according to material type number (default);

  = 2, read initial temperature from file.

  Keyword example:

      *Key_Initial_Temperature
      1

- *THERMAL_STR_TEMPER_1 - THERMAL_STR_TEMPER_25 - Initial temperature of material type n n n.

  Keyword example:

      *THERMAL_STR_TEMPER_1
      70.0
      *THERMAL_STR_TEMPER_2
      100.0

- *Key_Scheme_Thermal_Stress - Methods to calculate thermal stress.

  = 1, thermal stress is calculated directly from the temperature value (default);

  = 2, thermal stress is calculated based on temperature difference.

  Keyword example:

      *Key_Scheme_Thermal_Stress
      1

- *Key_InStress_for_Mat - Apply prestress to a material.

  = 0, no (default);

  = 1, yes.

  Keyword example:

      *Key_InStress_for_Mat
      1

- *Mat_Number_of_InStress_1 - Mat_Number_of_InStress_10 - Material type number to apply prestress.

  Keyword example:

      *Mat_Number_of_InStress_1
      2     % Apply prestress to material type 2.

- *MAT_INSTRESS_X, MAT_INSTRESS_Y, MAT_INSTRESS_Z - Prestress in x x x, y y y, and z z z directions for a specified material type.

  Keyword example:

      *MAT_INSTRESS_X
      10.0e6
      *MAT_INSTRESS_Y
      5.0e6
      *MAT_INSTRESS_Z
      5.0e6

# Surface load

- *Num_Surface_Loads - Number of applied surface load.

  Keyword example:

      *Num_Surface_Loads
      3

- *File_Surface_Load_1 - File_Surface_Load_20 - File suffix of surface load n n n.

  Keyword example:

      *File_Surface_Load_1
      surf
      *File_Surface_Load_2
      top
      *File_Surface_Load_3
      inner
      % Each line of the *.surf file stores surface element number, node 1, node 2, node 3, node 4, and the area of the surface element, for example:
      % 1415.    7789.    7828.    7790.    7829.   0.12500000E-06
      % 1416.    7828.    7867.    7829.    7868.   0.12500000E-06

- *Surface_Pressure_1 - Surface_Pressure_20 - Pressure value if surface load n n n.

  Keyword example:

      *Surface_Pressure_1
      -10.0e6

# Control of the program

- *Key_Clear_All - Clear all the results files in the current work directory before starting.

  = 0, disable (default);

  = 1, enable.

  Keyword example:

      *Key_Clear_All
      1

- *Key_Close_Window - Close the console window when calculation is finished.

  = 0, wait user to close (default);

  = 1, auto close.

  Keyword example:

      *Key_Close_Window
      0

- *Key_Data_Format - Save data in ASCII format or in binary format.

  = 1, ASCII format (default);

  = 2, binary format.

  Keyword example:

      *Key_Data_Format
      1

- *Key_Num_Process - Set the number of threads of CPU for OpenMP (if taken as 99, then all threads are available, default to 1).

  Keyword example:

      *Key_Num_Process
      4     % Use 4 threads.

- *Key_Save_vtk - Save the simulation results as vtk files for postprocessing using ParaView.

  = 0, do not save vtk file;

  = 1, save vtk file (default).

  Keyword example:

      *Key_Save_vtk
      1

- *Key_Simple_Post - Save only necessary result files.

  = 0, save all result files (default);

  = 1, save only necessary result files.

  Keyword example:

      *Key_Simple_Post
      1

- *Key_Post_CS_N_Strs - Calcutale and save stress results of nodes.

  = 0, no;

  = 1, yes (default).

  Keyword example:

      *Key_Post_CS_N_Strs
      0

- *Key_Play_Sounds - Play sound using Python script when finised the simulation.

  = 0, no (default);

  = 1, yes.

  Keyword example:

      % Play sound (using python).
      *Key_Play_Sounds
      1

# Keywords file examples

- 2D FEM analysis.

      % This is a simple PhiPsi kpp file example.
      % Pay attention to *Work_Directory, some modification might be necessary!

      % Working directory.
      *Work_Directory
      X:\PhiPsi Work\FEM

      % Filename of input files.
      *Filename
      FEM

      % Parameters.
      Elasticity_modulus = 70.0e9
      Poisson_ratio      = 0.3

      % Analysis type (Quasi-static).
      *Key_Analysis_Type
      1

      % Plane stress.
      *Key_Type_2D
      1

      % Linear system solver (SuperLU).
      *Key_SLOE
      9

      % Number of propagation steps.
      *Num_Substeps
      1

      % Material(1-E,2-v,3-density,4-thick,5-St,6-KIc,7-Sc,8-20(blank))
      *Material_Para_1
      Elasticity_modulus,Poisson_ratio,2700.0,1.0,1.0e6,1.0e6,100.0e6,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0

      % Play sound (using python).
      *Key_Play_Sounds
      1

- 2D XFEM analysis.

      % Working directory.
      *Work_Directory
      X:\PhiPsi Work\XFEM

      % Filename of input files.
      *Filename
      XFEM

      % Number of initial cracks.
      *num_Crack
      1

      % Analysis type (Quasi-static).
      *Key_Analysis_Type
      1

      % Plane strain.
      *Key_Type_2D
      2

      % Calculate stress intensity factors using the interaction integral method.
      *Key_SIFs_Method
      2

      % Linear system solver.
      *Key_SLOE
      % 5 %LAPACK
      11 %PCG-EBE

      % Number of propagation steps.
      *Num_Substeps
      1

      % Material(1-E,2-v,3-density,4-thick,5-St,6-KIc,7-Sc,8-20(blank))
      *Material_Para_1
      20.0e9,0.2,2000.0,1.0,1.0e6,1.0e6,100.0e6,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0

      % Coordinates of initial cracks.
      *CRACK_1
      0.00615,0.013,0.01485,0.018

      % Play sound (using python).
      *Key_Play_Sounds
      1

- 3D XFEM analysis.

      % Working directory.
      *Work_Directory
      X:\PhiPsi_Work\exa_3D_block_tension_cir

      % Finename of input files.
      *Filename
      exa_3D_block_tension_cir

      % Number of CPU threads.
      *Key_Num_Process
      4

      % 3-D problem.
      *Key_Dimension
      3

      % Number of initial cracks.
      *num_Crack
      2

      % Analysis type (Quasi-static).
      *Key_Analysis_Type
      1

      % Linear system solver.
      *Key_SLOE
      11     % PCG-EBE.

      % Number of propagation step.
      *Num_Substeps
      5

      % Crack propagation criterion.
      *CFCP
      2     % Weighted average maximum principal tensile stress criterion.

      % Material
      *Material_Para_1
      20.0e9,0.3,2000.0,1.0,0.1e6,1.0e6,100.0e6,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0

      % Define the coordinates of each initial cracks for 3D problem.
      % (input format: x_of_circle_center, y_of_circle_center, z_of_circle_center, x_of_direction_vector, y_of_direction_vector, z_of_direction_vector, radius)
      *Crack3D_Cir_Coor_1
      8.5,8.5,6.5,1.0,1.0,1.0,2.5
      *Crack3D_Cir_Coor_2
      8.5,8.5,10.5,1.0,1.0,1.0,2.5

      % Allow crack 1 and 2 to propagate.
      *Cracks_Allow_Propa
      1,1

      % Do not close the DOS Window when the calculation is finished (default).
      *Key_Close_Window
      0

      % Save crack radius
      *Key_Save_Crack_Radius
      1