!*************************************************************************************!
! TITLE: CFVR3202 - Slope stability with water table
! SUBTITLE: Slope stability analysis, with water pressure.
!
! 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>; Porosity 2 =  0.10
! 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.
! DESCRIPTION:
! DESCRIPTION: The only action on the structure is its self weight.
!
! ELEMENT TYPE: PLANE82
! MODULES: GETC
! UNITS: SI
! KEYWORD1: Geotechnics
! KEYWORD2: Slope Stability
!*************************************************************************************!
  FINISH
  ~CFCLEAR,,1
  ~CFACTIV,GETC,Y
  NomFile='CFVR3202'
  /TITLE, %NomFile%, Slope stability with water table

! 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

! 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 ! Fellenius
*DO,JJ,1,30
  *DO,II,1,10
    LABEL(JJ) = 'FEL' %JJ%
    ~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) =  2.333
VALUE(  2,1) =  1.550
VALUE(  3,1) =  1.000
VALUE(  4,1) =  2.504
VALUE(  5,1) =  2.486
VALUE(  6,1) =  3.000
VALUE(  7,1) =  1.793
VALUE(  8,1) =  1.238
VALUE(  9,1) =  1.074
VALUE( 10,1) =  1.024
VALUE( 11,1) =  1.267
VALUE( 12,1) =  2.159
VALUE( 13,1) =  1.609
VALUE( 14,1) =  1.160
VALUE( 15,1) =  0.977
VALUE( 16,1) =  1.000
VALUE( 17,1) =  1.104
VALUE( 18,1) =  1.801
VALUE( 19,1) =  1.505
VALUE( 20,1) =  1.158
VALUE( 21,1) =  1.003
VALUE( 22,1) =  1.091
VALUE( 23,1) =  1.426
VALUE( 24,1) =  2.484
VALUE( 25,1) =  1.407
VALUE( 26,1) =  1.194
VALUE( 27,1) =  1.161
VALUE( 28,1) =  1.260
VALUE( 29,1) =  1.882
VALUE( 30,1) =  4.562

~SLPSOL,1 ! Bishop
*DO,JJ,1,30
  *DO,II,1,10
    LABEL(JJ+30) = 'BIS' %JJ+30%
    ~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) =  2.765
VALUE( 32,1) =  1.984
VALUE( 33,1) =  1.500
VALUE( 34,1) =  2.605
VALUE( 35,1) =  2.570
VALUE( 36,1) =  3.186
VALUE( 37,1) =  2.148
VALUE( 38,1) =  1.604
VALUE( 39,1) =  1.321
VALUE( 40,1) =  1.310
VALUE( 41,1) =  1.606
VALUE( 42,1) =  2.570
VALUE( 43,1) =  1.817
VALUE( 44,1) =  1.424
VALUE( 45,1) =  1.229
VALUE( 46,1) =  1.310
VALUE( 47,1) =  1.523
VALUE( 48,1) =  2.134
VALUE( 49,1) =  1.633
VALUE( 50,1) =  1.300
VALUE( 51,1) =  1.238
VALUE( 52,1) =  1.370
VALUE( 53,1) =  1.729
VALUE( 54,1) =  2.865
VALUE( 55,1) =  1.484
VALUE( 56,1) =  1.278
VALUE( 57,1) =  1.290
VALUE( 58,1) =  1.459
VALUE( 59,1) =  2.094
VALUE( 60,1) =  4.837

~SLPSOL,2 ! Janbu
*DO,JJ,1,30
  *DO,II,1,10
    LABEL(JJ+60) = 'JAN' %JJ+60%
    ~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) =  2.398
VALUE( 62,1) =  1.661
VALUE( 63,1) =  1.400
VALUE( 64,1) =  2.553
VALUE( 65,1) =  2.485
VALUE( 66,1) =  2.945
VALUE( 67,1) =  1.922
VALUE( 68,1) =  1.397
VALUE( 69,1) =  1.150
VALUE( 70,1) =  1.147
VALUE( 71,1) =  1.394
VALUE( 72,1) =  2.177
VALUE( 73,1) =  1.663
VALUE( 74,1) =  1.289
VALUE( 75,1) =  1.098
VALUE( 76,1) =  1.150
VALUE( 77,1) =  1.286
VALUE( 78,1) =  1.919
VALUE( 79,1) =  1.517
VALUE( 80,1) =  1.198
VALUE( 81,1) =  1.120
VALUE( 82,1) =  1.205
VALUE( 83,1) =  1.484
VALUE( 84,1) =  2.447
VALUE( 85,1) =  1.394
VALUE( 86,1) =  1.189
VALUE( 87,1) =  1.173
VALUE( 88,1) =  1.289
VALUE( 89,1) =  1.865
VALUE( 90,1) =  4.300

~SLPSOL,3 ! Modified Janbu
*DO,JJ,1,30
  *DO,II,1,10
    LABEL(JJ+90) = 'JMD' %JJ+90%
    ~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) =  2.61
VALUE( 92,1) =  1.75
VALUE( 93,1) =  1.40
VALUE( 94,1) =  2.77
VALUE( 95,1) =  2.69
VALUE( 96,1) =  3.23
VALUE( 97,1) =  2.07
VALUE( 98,1) =  1.52
VALUE( 99,1) =  1.26
VALUE(100,1) =  1.28
VALUE(101,1) =  1.58
VALUE(102,1) =  2.11
VALUE(103,1) =  1.78
VALUE(104,1) =  1.38
VALUE(105,1) =  1.19
VALUE(106,1) =  1.26
VALUE(107,1) =  1.44
VALUE(108,1) =  2.12
VALUE(109,1) =  1.61
VALUE(110,1) =  1.28
VALUE(111,1) =  1.21
VALUE(112,1) =  1.31
VALUE(113,1) =  1.63
VALUE(114,1) =  2.65
VALUE(115,1) =  1.48
VALUE(116,1) =  1.27
VALUE(117,1) =  1.26
VALUE(118,1) =  1.40
VALUE(119,1) =  2.02
VALUE(120,1) =  4.63

! 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.15  $  TOLER(  I,2) = VALUE(I,1)*0.15
  I=  2 $ TOLER(  I,1) = VALUE(I,1)*0.20  $  TOLER(  I,2) = VALUE(I,1)*0.20
  I=  8 $ TOLER(  I,1) = VALUE(I,1)*0.15  $  TOLER(  I,2) = VALUE(I,1)*0.15
  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.20  $  TOLER(  I,2) = VALUE(I,1)*0.20
  I= 15 $ TOLER(  I,1) = VALUE(I,1)*0.15  $  TOLER(  I,2) = VALUE(I,1)*0.15
  I= 32 $ TOLER(  I,1) = VALUE(I,1)*0.20  $  TOLER(  I,2) = VALUE(I,1)*0.20
  I= 38 $ TOLER(  I,1) = VALUE(I,1)*0.15  $  TOLER(  I,2) = VALUE(I,1)*0.15
  I= 39 $ TOLER(  I,1) = VALUE(I,1)*0.15  $  TOLER(  I,2) = VALUE(I,1)*0.15
  I= 40 $ TOLER(  I,1) = VALUE(I,1)*0.20  $  TOLER(  I,2) = VALUE(I,1)*0.20
  I= 41 $ TOLER(  I,1) = VALUE(I,1)*0.15  $  TOLER(  I,2) = VALUE(I,1)*0.15
  I= 42 $ TOLER(  I,1) = VALUE(I,1)*0.20  $  TOLER(  I,2) = VALUE(I,1)*0.20
  I= 44 $ TOLER(  I,1) = VALUE(I,1)*0.15  $  TOLER(  I,2) = VALUE(I,1)*0.15
  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.20  $  TOLER(  I,2) = VALUE(I,1)*0.20
  I= 47 $ TOLER(  I,1) = VALUE(I,1)*0.20  $  TOLER(  I,2) = VALUE(I,1)*0.20
  I= 48 $ TOLER(  I,1) = VALUE(I,1)*0.20  $  TOLER(  I,2) = VALUE(I,1)*0.20
  I= 50 $ TOLER(  I,1) = VALUE(I,1)*0.15  $  TOLER(  I,2) = VALUE(I,1)*0.15
  I= 51 $ TOLER(  I,1) = VALUE(I,1)*0.15  $  TOLER(  I,2) = VALUE(I,1)*0.15
  I= 52 $ TOLER(  I,1) = VALUE(I,1)*0.15  $  TOLER(  I,2) = VALUE(I,1)*0.15
  I= 53 $ 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= 57 $ TOLER(  I,1) = VALUE(I,1)*0.15  $  TOLER(  I,2) = VALUE(I,1)*0.15
  I= 58 $ 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.15  $  TOLER(  I,2) = VALUE(I,1)*0.15
  I= 62 $ TOLER(  I,1) = VALUE(I,1)*0.15  $  TOLER(  I,2) = VALUE(I,1)*0.15
  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.15  $  TOLER(  I,2) = VALUE(I,1)*0.15
  I= 70 $ TOLER(  I,1) = VALUE(I,1)*0.20  $  TOLER(  I,2) = VALUE(I,1)*0.20
  I= 71 $ TOLER(  I,1) = VALUE(I,1)*0.20  $  TOLER(  I,2) = VALUE(I,1)*0.20
  I= 72 $ TOLER(  I,1) = VALUE(I,1)*0.20  $  TOLER(  I,2) = VALUE(I,1)*0.20
  I= 73 $ TOLER(  I,1) = VALUE(I,1)*0.15  $  TOLER(  I,2) = VALUE(I,1)*0.15
  I= 74 $ TOLER(  I,1) = VALUE(I,1)*0.15  $  TOLER(  I,2) = VALUE(I,1)*0.15
  I= 75 $ TOLER(  I,1) = VALUE(I,1)*0.15  $  TOLER(  I,2) = VALUE(I,1)*0.15
  I= 76 $ TOLER(  I,1) = VALUE(I,1)*0.15  $  TOLER(  I,2) = VALUE(I,1)*0.15
  I= 77 $ TOLER(  I,1) = VALUE(I,1)*0.40  $  TOLER(  I,2) = VALUE(I,1)*0.40
  I= 78 $ 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= 81 $ 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= 83 $ TOLER(  I,1) = VALUE(I,1)*0.15  $  TOLER(  I,2) = VALUE(I,1)*0.15
  I= 84 $ TOLER(  I,1) = VALUE(I,1)*0.15  $  TOLER(  I,2) = VALUE(I,1)*0.15
  I= 86 $ TOLER(  I,1) = VALUE(I,1)*0.15  $  TOLER(  I,2) = VALUE(I,1)*0.15
  I= 87 $ 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= 89 $ 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= 98 $ TOLER(  I,1) = VALUE(I,1)*0.15  $  TOLER(  I,2) = VALUE(I,1)*0.15
  I= 99 $ TOLER(  I,1) = VALUE(I,1)*0.15  $  TOLER(  I,2) = VALUE(I,1)*0.15

  I=  3 $ TOLER(  I,1) = VALUE(I,1)*0.15  $  TOLER(  I,2) = VALUE(I,1)*0.15
  I= 16 $ 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.15  $  TOLER(  I,2) = VALUE(I,1)*0.15
  I= 63 $ 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

! 11. Results comparison
! --------------------------------------------------
  COMPARA.MAC
