!*************************************************************************************!
! TITLE: CFVR3214 - Slope stability with water pressure and seism (MESH200)
! SUBTITLE: Slope stability analysis, with water pressure, an impermeable layer and seismic acceleration.
!
! DESCRIPTION: A plane model as shown in the figure is used to check the slope stability analysis.
! DESCRIPTION: Fellenius, Bishop, Janbu and Modified Janbu methods are used.
! DESCRIPTION:
! DESCRIPTION: The model is made off four layers of materials with the following properties
! DESCRIPTION: (from top to bottom):
! DESCRIPTION:
! DESCRIPTION: - Specific weight 1 = 12600 N/m<sup>2</sup>; Porosity 1 = 0.10
! DESCRIPTION:
! DESCRIPTION: - Specific weight 2 = 14400 N/m<sup>2</sup>
! DESCRIPTION:
! DESCRIPTION: - Specific weight 3 = 11200 N/m<sup>2</sup>; Porosity 3 =  0.40
! DESCRIPTION:
! DESCRIPTION: - Specific weight 4 = 9000 N/m<sup>2</sup>; Porosity 4 =  0.10
! DESCRIPTION:
! DESCRIPTION: The terrain has a water table defined as a polygonal line. The second layer
! DESCRIPTION: is considered impermeable, no water pore pressure will act on it (RUSI=0).
! DESCRIPTION:
! DESCRIPTION: The actions on the structure are self weight and a horizontal acceleration due
! DESCRIPTION: to seismic actions of 0.30g.
! DESCRIPTION:
! DESCRIPTION: This example is the same as CFVR3204 using MESH200 elements instead of PLANE82 elements.
!
! ELEMENT TYPE: MESH200
! MODULES: GETC
! UNITS: SI
! KEYWORD1: Geotechnics
! KEYWORD2: Slope Stability
!*************************************************************************************!
  FINISH
  ~CFCLEAR,,1
  ~CFACTIV,GETC,Y
  NomFile='CFVR3214'
  /TITLE, %NomFile%, Slope stability with water pressure and seism (MESH200)

! -------------------------------------------------------------------------------------
! 1. Initial data
! -------------------------------------------------------------------------------------
! CivilFEM SETUP
  ~UNITS,SI

/PREP7
! 2. Materials
! --------------------------------------------------
~CFMP,1,LIB,SOIL,,OH
~CFMP,2,LIB,SOIL,,CH
~CFMP,3,LIB,SOIL,,SC
~CFMP,4,LIB,SOIL,,PH
~CFMP,1,Soil,GAMD,,12600 ! OH
~CFMP,2,Soil,GAMD,,14400 ! CH
~CFMP,3,Soil,GAMD,,11200 ! SC
~CFMP,4,Soil,GAMD,,9000  ! PH
*DO,II,1,4
  ~CFMP,II,SOIL,RUSI,,1
*ENDDO
~CFMP,2,SOIL,RUSI,,0

! 3. Elements
! --------------------------------------------------
ET,1,200,4

! 4. Model
! --------------------------------------------------
K, 1,-12,28
K, 2,  1,29
K, 3, 10,37
K, 4, 19,38
K, 5, 35,28
K, 6, 50,27
K, 7,  6,33
K, 8, 20,29
K, 9, 26,34
K,10, 18,24
K,11, 50,21
K,12,-12,19
K,13, 50,16
K,14,-12, 6
K,15, 50,10
A,7,8,9,4,3
A,2,7,8,9,5,6,11,10
A,1,2,10,11,13,12
A,15,13,12,14

AESIZE,ALL,3

*DO,I,1,4
  MAT,I
  AMESH,I
*ENDDO
/NUMBER,1
/PNUM,MAT,1
EPLOT
/IMAGE, SAVE, %NomFile%,BMP

! 5. Capturing Model
! --------------------------------------------------
pp1=node(kx(1),ky(1),kz(1))
pp2=node(kx(6),ky(6),kz(6))
pp3=node(kx(5),ky(5),kz(5))
~SLPIN,PP1,PP2,PP3

! 6. Circles Centres Grid Input
! --------------------------------------------------
K,16,21,41
K,17,35,32
K,18,42,43
k,19,28,52
~SLPCIRK,16,19,17,5,6

! 7. Tangents Input
! --------------------------------------------------
K,20,34,27
K,21,34,11
K,22, 0,11
K,23,18,37
~SLPTANK,20,23,22,21,10

! 8. Hydrostatic Pressure
! --------------------------------------------------
~SLPPWP,5,0,-12,27, 01,27, 16,35, 41,25, 50,25

! 9. Data Check
! --------------------------------------------------
! Data comparison number
  NComp    = 30*4
  NComp_ch = 0

! Marix dim.
  *DIM,LABEL,CHAR,Ncomp,1
  *DIM,LABEL_CH,CHAR,Ncomp_ch,1
  *DIM,VALUE,,Ncomp,3
  *DIM,VALUE_CH,CHAR,Ncomp_ch,3
  *DIM,TOLER,,Ncomp,2

! 10. Labels, Correct data, obtained data
! --------------------------------------------------

 *DIM,AUXVECT,ARRAY,10
 *DIM,AUXVEC2,ARRAY,10
/POST1
~SLPSOL,0,,0.3 ! Fellenius
*DO,JJ,1,30
  LABEL(JJ) = 'FEL' %JJ%
  *DO,II,1,10
    ~CFGET,AUXVECT(II),SLOPE,,RES,F,,2,(JJ-1)*10 + II
  *ENDDO
  *VOPER,AUXVEC2,AUXVECT,MULT,AUXVECT
  *VFUN,AUXVEC2,SQRT,AUXVEC2
  *VFUN,AUXVEC2,ASORT,AUXVEC2
  VALUE(JJ,2) = AUXVEC2(1)
*ENDDO

VALUE(  1,1) =  1.175
VALUE(  2,1) =  0.500
VALUE(  3,1) =  0.400
VALUE(  4,1) =  1.165
VALUE(  5,1) =  1.619
VALUE(  6,1) =  1.961
VALUE(  7,1) =  0.672
VALUE(  8,1) =  0.500
VALUE(  9,1) =  0.500
VALUE( 10,1) =  0.989
VALUE( 11,1) =  1.130
VALUE( 12,1) =  1.473
VALUE( 13,1) =  0.609
VALUE( 14,1) =  0.526
VALUE( 15,1) =  0.701
VALUE( 16,1) =  0.643
VALUE( 17,1) =  0.870
VALUE( 18,1) =  1.329
VALUE( 19,1) =  0.523
VALUE( 20,1) =  0.518
VALUE( 21,1) =  0.681
VALUE( 22,1) =  0.904
VALUE( 23,1) =  1.107
VALUE( 24,1) =  1.453
VALUE( 25,1) =  0.554
VALUE( 26,1) =  0.729
VALUE( 27,1) =  0.871
VALUE( 28,1) =  0.972
VALUE( 29,1) =  1.213
VALUE( 30,1) =  1.960

~SLPSOL,1,,0.3 ! Bishop
*DO,JJ,1,30
  LABEL(JJ+30) = 'BIS' %JJ+30%
  *DO,II,1,10
    ~CFGET,AUXVECT(II),SLOPE,,RES,F,,2,(JJ-1)*10 + II
  *ENDDO
  *VOPER,AUXVEC2,AUXVECT,MULT,AUXVECT
  *VFUN,AUXVEC2,SQRT,AUXVEC2
  *VFUN,AUXVEC2,ASORT,AUXVEC2
  VALUE(JJ+30,2) = AUXVEC2(1)
*ENDDO

VALUE( 31,1) =  1.319
VALUE( 32,1) =  1.282
VALUE( 33,1) =  1.748
VALUE( 34,1) =  1.687
VALUE( 35,1) =  1.674
VALUE( 36,1) =  2.086
VALUE( 37,1) =  0.991
VALUE( 38,1) =  1.082
VALUE( 39,1) =  1.080
VALUE( 40,1) =  1.126
VALUE( 41,1) =  1.283
VALUE( 42,1) =  1.705
VALUE( 43,1) =  0.885
VALUE( 44,1) =  0.829
VALUE( 45,1) =  0.928
VALUE( 46,1) =  0.920
VALUE( 47,1) =  1.124
VALUE( 48,1) =  1.600
VALUE( 49,1) =  0.823
VALUE( 50,1) =  0.793
VALUE( 51,1) =  0.887
VALUE( 52,1) =  1.063
VALUE( 53,1) =  1.290
VALUE( 54,1) =  1.693
VALUE( 55,1) =  0.786
VALUE( 56,1) =  0.891
VALUE( 57,1) =  0.914
VALUE( 58,1) =  1.092
VALUE( 59,1) =  1.341
VALUE( 60,1) =  2.066

~SLPSOL,2,,0.3 ! Janbu
*DO,JJ,1,30
  LABEL(JJ+60) = 'JAN' %JJ+60%
  *DO,II,1,10
    ~CFGET,AUXVECT(II),SLOPE,,RES,F,,2,(JJ-1)*10 + II
  *ENDDO
  *VOPER,AUXVEC2,AUXVECT,MULT,AUXVECT
  *VFUN,AUXVEC2,SQRT,AUXVEC2
  *VFUN,AUXVEC2,ASORT,AUXVEC2
  VALUE(JJ+60,2) = AUXVEC2(1)
*ENDDO

VALUE( 61,1) =  1.107
VALUE( 62,1) =  1.048
VALUE( 63,1) =  1.000
VALUE( 64,1) =  1.609
VALUE( 65,1) =  1.568
VALUE( 66,1) =  1.899
VALUE( 67,1) =  0.809
VALUE( 68,1) =  0.870
VALUE( 69,1) =  0.851
VALUE( 70,1) =  0.924
VALUE( 71,1) =  1.110
VALUE( 72,1) =  1.443
VALUE( 73,1) =  0.746
VALUE( 74,1) =  0.707
VALUE( 75,1) =  0.778
VALUE( 76,1) =  0.775
VALUE( 77,1) =  0.936
VALUE( 78,1) =  1.334
VALUE( 79,1) =  0.714
VALUE( 80,1) =  0.695
VALUE( 81,1) =  0.764
VALUE( 82,1) =  0.905
VALUE( 83,1) =  1.098
VALUE( 84,1) =  1.444
VALUE( 85,1) =  0.694
VALUE( 86,1) =  0.782
VALUE( 87,1) =  0.829
VALUE( 88,1) =  0.949
VALUE( 89,1) =  1.204
VALUE( 90,1) =  1.930

~SLPSOL,3,,0.3! Modified Janbu
*DO,JJ,1,30
  LABEL(JJ+90) = 'JMD' %JJ+90%
  *DO,II,1,10
    ~CFGET,AUXVECT(II),SLOPE,,RES,F,,2,(JJ-1)*10 + II
  *ENDDO
  *VOPER,AUXVEC2,AUXVECT,MULT,AUXVECT
  *VFUN,AUXVEC2,SQRT,AUXVEC2
  *VFUN,AUXVEC2,ASORT,AUXVEC2
  VALUE(JJ+90,2) = AUXVEC2(1)
*ENDDO

VALUE( 91,1) =  1.0282
VALUE( 92,1) =  0.9854
VALUE( 93,1) =  0.9355
VALUE( 94,1) =  1.7425
VALUE( 95,1) =  1.7001
VALUE( 96,1) =  2.0732
VALUE( 97,1) =  0.8927
VALUE( 98,1) =  0.8978
VALUE( 99,1) =  0.8602
VALUE(100,1) =  1.0501
VALUE(101,1) =  1.2246
VALUE(102,1) =  1.4789
VALUE(103,1) =  0.8093
VALUE(104,1) =  0.8542
VALUE(105,1) =  0.8131
VALUE(106,1) =  0.8359
VALUE(107,1) =  1.0118
VALUE(108,1) =  1.4581
VALUE(109,1) =  0.7534
VALUE(110,1) =  0.7385
VALUE(111,1) =  0.7940
VALUE(112,1) =  0.9906
VALUE(113,1) =  1.2011
VALUE(114,1) =  1.5625
VALUE(115,1) =  0.7210
VALUE(116,1) =  0.7994
VALUE(117,1) =  0.8821
VALUE(118,1) =  1.0301
VALUE(119,1) =  1.3003
VALUE(120,1) =  2.0694

! Warning and error tolerances
  *DO,II,1,NComp
    TOLER(II,1) = VALUE(II,1)*0.02
    TOLER(II,2) = VALUE(II,1)*0.02
  *ENDDO
! Known exceptions
  I=  1 $ TOLER(  I,1) = VALUE(I,1)*0.50  $  TOLER(  I,2) = VALUE(I,1)*0.50
  I=  2 $ TOLER(  I,1) = VALUE(I,1)*0.30  $  TOLER(  I,2) = VALUE(I,1)*0.30
  I=  3 $ TOLER(  I,1) = VALUE(I,1)*0.30  $  TOLER(  I,2) = VALUE(I,1)*0.30
  I=  4 $ TOLER(  I,1) = VALUE(I,1)*0.40  $  TOLER(  I,2) = VALUE(I,1)*0.40
  I=  7 $ TOLER(  I,1) = VALUE(I,1)*0.30  $  TOLER(  I,2) = VALUE(I,1)*0.30
  I=  8 $ TOLER(  I,1) = VALUE(I,1)*0.20  $  TOLER(  I,2) = VALUE(I,1)*0.20
  I=  9 $ TOLER(  I,1) = VALUE(I,1)*0.30  $  TOLER(  I,2) = VALUE(I,1)*0.30
  I= 10 $ TOLER(  I,1) = VALUE(I,1)*0.50  $  TOLER(  I,2) = VALUE(I,1)*0.50
  I= 12 $ TOLER(  I,1) = VALUE(I,1)*0.15  $  TOLER(  I,2) = VALUE(I,1)*0.15
  I= 13 $ TOLER(  I,1) = VALUE(I,1)*0.15  $  TOLER(  I,2) = VALUE(I,1)*0.15
  I= 14 $ TOLER(  I,1) = VALUE(I,1)*0.20  $  TOLER(  I,2) = VALUE(I,1)*0.20
  I= 15 $ TOLER(  I,1) = VALUE(I,1)*0.30  $  TOLER(  I,2) = VALUE(I,1)*0.30
  I= 31 $ TOLER(  I,1) = 100  $  TOLER(  I,2) = 100 ! Ignored
  I= 32 $ TOLER(  I,1) = VALUE(I,1)*0.15  $  TOLER(  I,2) = VALUE(I,1)*0.15
  I= 33 $ TOLER(  I,1) = VALUE(I,1)*0.40  $  TOLER(  I,2) = VALUE(I,1)*0.40
  I= 37 $ TOLER(  I,1) = 100  $  TOLER(  I,2) = 100 ! Ignored
  I= 38 $ TOLER(  I,1) = 100  $  TOLER(  I,2) = 100 ! Ignored
  I= 39 $ TOLER(  I,1) = VALUE(I,1)*0.20  $  TOLER(  I,2) = VALUE(I,1)*0.20
  I= 43 $ TOLER(  I,1) = 100  $  TOLER(  I,2) = 100 ! Ignored
  I= 44 $ TOLER(  I,1) = VALUE(I,1)*0.20  $  TOLER(  I,2) = VALUE(I,1)*0.20
  I= 45 $ TOLER(  I,1) = VALUE(I,1)*0.15  $  TOLER(  I,2) = VALUE(I,1)*0.15
  I= 46 $ TOLER(  I,1) = VALUE(I,1)*0.15  $  TOLER(  I,2) = VALUE(I,1)*0.15
  I= 47 $ TOLER(  I,1) = VALUE(I,1)*0.15  $  TOLER(  I,2) = VALUE(I,1)*0.15
  I= 49 $ TOLER(  I,1) = VALUE(I,1)*0.15  $  TOLER(  I,2) = VALUE(I,1)*0.15
  I= 50 $ TOLER(  I,1) = VALUE(I,1)*0.30  $  TOLER(  I,2) = VALUE(I,1)*0.30
  I= 51 $ TOLER(  I,1) = VALUE(I,1)*0.15  $  TOLER(  I,2) = VALUE(I,1)*0.15
  I= 54 $ TOLER(  I,1) = VALUE(I,1)*0.15  $  TOLER(  I,2) = VALUE(I,1)*0.15
  I= 55 $ TOLER(  I,1) = VALUE(I,1)*0.15  $  TOLER(  I,2) = VALUE(I,1)*0.15
  I= 56 $ TOLER(  I,1) = VALUE(I,1)*0.15  $  TOLER(  I,2) = VALUE(I,1)*0.15
  I= 61 $ TOLER(  I,1) = VALUE(I,1)*0.20  $  TOLER(  I,2) = VALUE(I,1)*0.20
  I= 62 $ TOLER(  I,1) = VALUE(I,1)*0.25  $  TOLER(  I,2) = VALUE(I,1)*0.25
  I= 63 $ TOLER(  I,1) = VALUE(I,1)*0.20  $  TOLER(  I,2) = VALUE(I,1)*0.20
  I= 67 $ TOLER(  I,1) = VALUE(I,1)*0.15  $  TOLER(  I,2) = VALUE(I,1)*0.15
  I= 68 $ TOLER(  I,1) = VALUE(I,1)*0.15  $  TOLER(  I,2) = VALUE(I,1)*0.15
  I= 69 $ TOLER(  I,1) = 100  $  TOLER(  I,2) = 100 ! Ignored
  I= 70 $ TOLER(  I,1) = 100  $  TOLER(  I,2) = 100 ! Ignored
  I= 72 $ TOLER(  I,1) = VALUE(I,1)*0.15  $  TOLER(  I,2) = VALUE(I,1)*0.15
  I= 73 $ TOLER(  I,1) = VALUE(I,1)*0.40  $  TOLER(  I,2) = VALUE(I,1)*0.40
  I= 74 $ TOLER(  I,1) = VALUE(I,1)*0.20  $  TOLER(  I,2) = VALUE(I,1)*0.20
  I= 76 $ TOLER(  I,1) = VALUE(I,1)*0.15  $  TOLER(  I,2) = VALUE(I,1)*0.15
  I= 79 $ TOLER(  I,1) = VALUE(I,1)*0.15  $  TOLER(  I,2) = VALUE(I,1)*0.15
  I= 80 $ TOLER(  I,1) = VALUE(I,1)*0.15  $  TOLER(  I,2) = VALUE(I,1)*0.15
  I= 82 $ TOLER(  I,1) = VALUE(I,1)*0.15  $  TOLER(  I,2) = VALUE(I,1)*0.15
  I= 88 $ TOLER(  I,1) = VALUE(I,1)*0.15  $  TOLER(  I,2) = VALUE(I,1)*0.15
  I= 91 $ TOLER(  I,1) = VALUE(I,1)*0.15  $  TOLER(  I,2) = VALUE(I,1)*0.15
  I= 92 $ TOLER(  I,1) = VALUE(I,1)*0.15  $  TOLER(  I,2) = VALUE(I,1)*0.15
  I= 93 $ TOLER(  I,1) = VALUE(I,1)*0.15  $  TOLER(  I,2) = VALUE(I,1)*0.15
  I= 97 $ TOLER(  I,1) = VALUE(I,1)*0.15  $  TOLER(  I,2) = VALUE(I,1)*0.15
  I= 98 $ TOLER(  I,1) = VALUE(I,1)*0.15  $  TOLER(  I,2) = VALUE(I,1)*0.15
  I= 99 $ TOLER(  I,1) = 100  $  TOLER(  I,2) = 100 ! Ignored
  I= 100 $ TOLER(  I,1) = 100  $  TOLER(  I,2) = 100 ! Ignored
  I= 103 $ TOLER(  I,1) = VALUE(I,1)*0.15  $  TOLER(  I,2) = VALUE(I,1)*0.15
  I= 104 $ TOLER(  I,1) = VALUE(I,1)*0.15  $  TOLER(  I,2) = VALUE(I,1)*0.15
  I= 105 $ TOLER(  I,1) = VALUE(I,1)*0.15  $  TOLER(  I,2) = VALUE(I,1)*0.15
  I= 106 $ TOLER(  I,1) = VALUE(I,1)*0.15  $  TOLER(  I,2) = VALUE(I,1)*0.15
  I= 107 $ TOLER(  I,1) = VALUE(I,1)*0.15  $  TOLER(  I,2) = VALUE(I,1)*0.15
  I= 111 $ TOLER(  I,1) = VALUE(I,1)*0.15  $  TOLER(  I,2) = VALUE(I,1)*0.15
  I= 112 $ TOLER(  I,1) = VALUE(I,1)*0.15  $  TOLER(  I,2) = VALUE(I,1)*0.15
  I= 116 $ TOLER(  I,1) = VALUE(I,1)*0.15  $  TOLER(  I,2) = VALUE(I,1)*0.15

! 11. Results comparison
! --------------------------------------------------
  COMPARA.MAC
