!***********************************************************************
! TITLE: CFVR8004 - Mohr-Coulomb
! SUBTITLE: CivilFEM's Mohr-Coulomb equivalent to ANSYS's Drucker-Prager
!
! DESCRIPTION: Checking equivalence between the material models Mohr-Coulomb of
! DESCRIPTION: CivilFEM and Drucker-Prager of ANSYS
! DESCRIPTION:
! DESCRIPTION: It uses the following material models:
! DESCRIPTION:
! DESCRIPTION: 	- Mohr-Coulomb
! DESCRIPTION:
! DESCRIPTION:  - Drucker-Prager
!
! ELEMENT TYPE: PLANE42,SURF153
! MODULES:
! UNITS: SI
! KEYWORD1: Materials
! KEYWORD2: Geotechnics
! KEYWORD3: Material Models
!
!***********************************************************************
  FINISH
  ~CFCLEAR,,1
  NomFile='CFVR8004'
  /TITLE, %NomFile%, CivilFEM's Mohr-Coulomb

! ----------------------------------------------------------------------
! Initial data
! ----------------------------------------------------------------------
  ~UNITS,SI
  /PREP7

  HYP   = 0.     ! hyperbolic parameter
  ECC   = 1.     ! eccentricity parameter
  LENG  = 1.     ! length of the cube edge
  NDIV  = 1      ! number of division per side
  NTINC = 50     ! number of substeps per step
  FS    = 6.E+04 ! surface force
  INODE = 1      ! node for results checking

! ----------------------------------------------------------------------
! Model definition
! ----------------------------------------------------------------------
  LOCAL,11,0

  ! Materials

  ! Mohr-Coulomb
  ~CFMP,1,LIB,SOIL,,CL
  ~CFMP,1,SOIL,KPLA,,2
  ~CFMP,1,SOIL,KMCSP,,1
  ~CFMP,1,SOIL,HYP,,HYP
  ~CFMP,1,SOIL,ECC,,ECC
  ~CFMP,1,SOIL,IFLOW,,0
  ~CFGET,PHI,MATERIAL,1,SOIL,PHIMCeff

  ! Drucker-Prager
  ~CFMP,2,LIB,SOIL,,CL
  ~CFMP,2,SOIL,KPLA,,1
  ~CFGET,TMP,MATERIAL,2,SOIL,PHIMCeff
  ~CFMP,2,SOIL,DELeff,,TMP

  ! Element types

  ET,1,PLANE42
  KEYOPT,1,2,1
  KEYOPT,1,3,2

  ET,2,SURF153
  KEYOPT,2,2,1
  KEYOPT,2,3,2
  KEYOPT,2,4,1

  ! Geometry

  K,1,0,0
  K,2,LENG,0
  K,3,LENG,LENG
  K,4,0,LENG
  A,1,2,3,4
  LESIZE,ALL,,,NDIV

  ! Meshing

  LSEL,ALL
  TYPE,1
  AMESH,1
  TYPE,2
  ESYS,11
  LMESH,2

  ! Loads

  DL,1,,UY
  DL,4,,UX
  SFL,3,PRES,FS
  ! ESEL,S,TYPE,,2
  ! SFE,ALL,2,PRES,,FS

!-----------------------------------------------------------------------
! DATA CHECK
!-----------------------------------------------------------------------
! Data comparison number
  NCOMP    = 9
  NCOMP_CH = 0

! Array dimensions
  *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

! Labels
!-----------------------------------------------------------------------
  LABEL(1) = 'SZ'
  LABEL(2) = 'SY'
  LABEL(3) = 'SEQV'
  LABEL(4) = 'EPELX'
  LABEL(5) = 'EPELY'
  LABEL(6) = 'EPELEQV'
  LABEL(7) = 'EPPLX'
  LABEL(8) = 'EPPLY'
  LABEL(9) = 'EPPLEQV'

! Warning and error tolerances
  TOLER(1,1) = 1.E+3 $ TOLER(1,2) = 1.E+3
  TOLER(2,1) = 1.E+3 $ TOLER(2,2) = 1.E+3
  TOLER(3,1) = 1.E+3 $ TOLER(3,2) = 1.E+3
  TOLER(4,1) = 1.E-6 $ TOLER(4,2) = 1.E-6
  TOLER(5,1) = 1.E-6 $ TOLER(5,2) = 1.E-6
  TOLER(6,1) = 1.E-6 $ TOLER(6,2) = 1.E-6
  TOLER(7,1) = 1.E-6 $ TOLER(7,2) = 1.E-6
  TOLER(8,1) = 1.E-6 $ TOLER(8,2) = 1.E-6
  TOLER(9,1) = 1.E-6 $ TOLER(9,2) = 1.E-6

! Correct values
!-----------------------------------------------------------------------
  /SOLU

  SOLCONTROL,OFF
  NLGEOM,OFF
  NROPT,FULL
  NEQIT,50
  NSUBST,NTINC

  OUTRES,ALL,NONE
  OUTRES,NSOL,LAST
  OUTRES,ESOL,LAST

  /PREP7
  ESLA
  EMODIF,ALL,MAT,2
  ESEL,ALL

  /SOLU
  SOLVE

  *GET,VALUE(1,1),NODE,INODE,S,Z
  *GET,VALUE(2,1),NODE,INODE,S,Y
  *GET,VALUE(3,1),NODE,INODE,S,EQV
  *GET,VALUE(4,1),NODE,INODE,EPEL,X
  *GET,VALUE(5,1),NODE,INODE,EPEL,Y
  *GET,VALUE(6,1),NODE,INODE,EPEL,EQV
  *GET,VALUE(7,1),NODE,INODE,EPPL,X
  *GET,VALUE(8,1),NODE,INODE,EPPL,Y
  *GET,VALUE(9,1),NODE,INODE,EPPL,EQV

! Obtained values
!-----------------------------------------------------------------------
  /PREP7
  ESLA
  EMODIF,ALL,MAT,1
  ESEL,ALL

  /SOLU
  SOLVE

  *GET,VALUE(1,2),NODE,INODE,S,Z
  *GET,VALUE(2,2),NODE,INODE,S,Y
  *GET,VALUE(3,2),NODE,INODE,S,EQV
  *GET,VALUE(4,2),NODE,INODE,EPEL,X
  *GET,VALUE(5,2),NODE,INODE,EPEL,Y
  *GET,VALUE(6,2),NODE,INODE,EPEL,EQV
  *GET,VALUE(7,2),NODE,INODE,EPPL,X
  *GET,VALUE(8,2),NODE,INODE,EPPL,Y
  *GET,VALUE(9,2),NODE,INODE,EPPL,EQV

!-----------------------------------------------------------------------
! Results comparison
!-----------------------------------------------------------------------
  COMPARA.MAC
