!*************************************************************************************!
! TITLE: CFVR3204 - Slope stability with water pressure and seism
! 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.
!
! ELEMENT TYPE: PLANE82
! MODULES: GETC
! UNITS: SI
! KEYWORD1: Geotechnics
! KEYWORD2: Slope Stability
!*************************************************************************************!
  FINISH
  ~CFCLEAR,,1
  ~CFACTIV,GETC,Y
  NomFile='CFVR3204'
  /TITLE, %NomFile%, Slope stability with water pressure and seism

! --------------------------------------------------
! 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,PLANE82

! 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.000
VALUE(  2,1) =  0.600
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.500
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) =  0.96
VALUE( 92,1) =  0.86
VALUE( 93,1) =  0.98
VALUE( 94,1) =  1.74
VALUE( 95,1) =  1.70
VALUE( 96,1) =  2.07
VALUE( 97,1) =  0.85
VALUE( 98,1) =  0.78
VALUE( 99,1) =  0.55
VALUE(100,1) =  0.90
VALUE(101,1) =  1.22
VALUE(102,1) =  1.50
VALUE(103,1) =  0.78
VALUE(104,1) =  0.74
VALUE(105,1) =  0.85
VALUE(106,1) =  0.85
VALUE(107,1) =  1.03
VALUE(108,1) =  1.46
VALUE(109,1) =  0.75
VALUE(110,1) =  0.72
VALUE(111,1) =  0.83
VALUE(112,1) =  0.98
VALUE(113,1) =  1.20
VALUE(114,1) =  1.56
VALUE(115,1) =  0.72
VALUE(116,1) =  0.84
VALUE(117,1) =  0.88
VALUE(118,1) =  1.03
VALUE(119,1) =  1.30
VALUE(120,1) =  2.07

! Warning and error tolerances
  *DO,II,1,NComp
    TOLER(II,1) = VALUE(II,1)*0.03
    TOLER(II,2) = VALUE(II,1)*0.03
  *ENDDO
! Known exceptions
  I=  1 $ TOLER(  I,1) = VALUE(I,1)*0.40  $  TOLER(  I,2) = VALUE(I,1)*0.40
  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.30  $  TOLER(  I,2) = VALUE(I,1)*0.30
  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.30  $  TOLER(  I,2) = VALUE(I,1)*0.30
  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) = VALUE(I,1)*0.80  $  TOLER(  I,2) = VALUE(I,1)*0.80
  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) = VALUE(I,1)*0.25  $  TOLER(  I,2) = VALUE(I,1)*0.25
  I= 38 $ TOLER(  I,1) = VALUE(I,1)*0.40  $  TOLER(  I,2) = VALUE(I,1)*0.40
  I= 39 $ TOLER(  I,1) = VALUE(I,1)*0.20  $  TOLER(  I,2) = VALUE(I,1)*0.20
  I= 43 $ TOLER(  I,1) = VALUE(I,1)*0.35  $  TOLER(  I,2) = VALUE(I,1)*0.35
  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.35  $  TOLER(  I,2) = VALUE(I,1)*0.35
  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.25  $  TOLER(  I,2) = VALUE(I,1)*0.25
  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.30  $  TOLER(  I,2) = VALUE(I,1)*0.30
  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) = VALUE(I,1)*0.40  $  TOLER(  I,2) = VALUE(I,1)*0.40
  I= 70 $ TOLER(  I,1) = VALUE(I,1)*0.15  $  TOLER(  I,2) = VALUE(I,1)*0.15
  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= 92 $ TOLER(  I,1) = VALUE(I,1)*0.80  $  TOLER(  I,2) = VALUE(I,1)*0.80
  I= 93 $ 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.80  $  TOLER(  I,2) = VALUE(I,1)*0.80
  I= 99 $ TOLER(  I,1) = VALUE(I,1)*0.65  $  TOLER(  I,2) = VALUE(I,1)*0.65
  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
