!***********************************************************************!
! TITLE: CFVR3902 - 8 node 3D laplace element test
! SUBTITLE:  Test 8 node 3D Laplace elements (SOLID170)
!
! DESCRIPTION:  This example test geometry and thermal properties of a 3D
! DESCRIPTION:  8 nde SOLID170 element.
! DESCRIPTION:
! DESCRIPTION:  The model consists on an 3D "L" angle model, same as the one on
! DESCRIPTION:  the following picture.
! DESCRIPTION:
! DESCRIPTION:  The example is launched with ANSYS and with CivilFEM separately;
! DESCRIPTION:  it compares ANSYS results with the ~LPSOLVE command.
! DESCRIPTION:
! DESCRIPTION:  ANSYS uses a thermal laplace ecuation model in a SOLID70 element,
! DESCRIPTION:  and CivilFEM solves it as a Seepage analysis in a PLANE55 element.
! DESCRIPTION:  problem.
!
! ELEMENT TYPE: PLANE55, SOLID170	
! MODULES: GETC
! UNITS: SI
! KEYWORD1: Materials
! KEYWORD2: Material Models
!
!***********************************************************************!
  FINISH
  ~CFCLEAR,,1
  NomFile='CFVR3902'
  /TITLE, %NomFile%, Testing 8 node 3D laplace element

!--------------------------------------------------------------------------------------
! MODEL WITH ANSYS
!--------------------------------------------------------------------------------------

/prep7
ET,1,SOLID70
ET,2,PLANE55

mp,kxx,1,10
mp,kyy,1,20
mp,kzz,1,20
mp,kxx,2,50
mp,kyy,2,6
mp,kZZ,2,5

BLOCK,-20,20,10,50,5,45,
BLOCK,20,80,10,50,5,45
BLOCK,-20,20,10,50,45,85
BLOCK,-20,20,10,50,85,125
BLOCK,80,120,10,50,5,45

VGLUE,1,2,3,4,5

MAT,1
type,2
mshape,1
amesh,2

type,1
EXTOPT,ACLEAR,1 ! Delete plane mesh
vsweep,1

MSHAPE,1
VMESH,6

MSHAPE,0
VMESH,7

MAT,2
MSHAPE,0
VMESH,8
MSHAPE,1
VMESH,9
/SOLU

DA,20,TEMP,100
DA,30,TEMP,500

SOLVE
/POST1

SET,1


! Results

NNUM  = NDINQR(0,12)
ELNUM = ELMIQR(0,12)
*DIM,H_ANSYS,,NNUM
*DIM,TGX_ANSYS,,NNUM
*DIM,TGY_ANSYS,,NNUM
*DIM,TGZ_ANSYS,,NNUM
*DIM,TFX_ANSYS,,NNUM
*DIM,TFY_ANSYS,,NNUM
*DIM,TFZ_ANSYS,,NNUM
*VGET,H_ANSYS,NODE,1,TEMP
*VGET,TFX_ANSYS,NODE,1,TF,X
*VGET,TFY_ANSYS,NODE,1,TF,Y
*VGET,TFZ_ANSYS,NODE,1,TF,Z
*VGET,TGX_ANSYS,NODE,1,TG,X
*VGET,TGY_ANSYS,NODE,1,TG,Y
*VGET,TGZ_ANSYS,NODE,1,TG,Z

PARSAV,ALL,E4_ANSYS

!--------------------------------------------------------------------------------------
! MODEL WITH CIVILFEM
!--------------------------------------------------------------------------------------

finish
~cfclear,,1

~CFACTIV,CIVILFEM,Y
~CFACTIV,GETC,Y

FINISH
~SEEPAGE,3D

/prep7

et,2,plane42

~cfmp,1,lib,soil,,sc
~cfmp,1,soil,kx,,10
~cfmp,1,soil,ky,,20
~cfmp,1,soil,kz,,20
~cfmp,2,lib,soil,,sc
~cfmp,2,soil,kx,,50
~cfmp,2,soil,ky,,6
~cfmp,2,soil,kz,,5

BLOCK,-20,20,10,50,5,45,
BLOCK,20,80,10,50,5,45
BLOCK,-20,20,10,50,45,85
BLOCK,-20,20,10,50,85,125
BLOCK,80,120,10,50,5,45

VGLUE,1,2,3,4,5

MAT,1
type,2
mshape,1
amesh,2

type,1
EXTOPT,ACLEAR,1 ! Delete plane mesh
vsweep,1

MSHAPE,1
VMESH,6

MSHAPE,0
VMESH,7

MAT,2
MSHAPE,0
VMESH,8
MSHAPE,1
VMESH,9
/SOLU

~DAHEAD,ADD,20,100
~DAHEAD,ADD,30,500

~LPSOLVE

/post1
file,file,seep
SET,1

PARRES,new,E4_ANSYS

*DIM,H_CF,,NNUM
*DIM,TGX_CF,,NNUM
*DIM,TGY_CF,,NNUM
*DIM,TGZ_CF,,NNUM
*DIM,TFX_CF,,NNUM
*DIM,TFY_CF,,NNUM
*DIM,TFZ_CF,,NNUM
*VGET,H_CF,NODE,1,HEAD
*VGET,TFX_CF,NODE,1,S,X
*VGET,TFY_CF,NODE,1,S,Y
*VGET,TFZ_CF,NODE,1,S,Z
*VGET,TGX_CF,NODE,1,EPEL,X
*VGET,TGY_CF,NODE,1,EPEL,Y
*VGET,TGZ_CF,NODE,1,EPEL,Z
! Tolerance
TOL = 1e-3
*DIM,VTOL,,NNUM
*VFILL,VTOL,RAMP,TOL

*DIM,H_COMP,,NNUM
*DIM,H_OK,,NNUM
*DIM,TGX_COMP,,NNUM
*DIM,TGX_OK,,NNUM
*DIM,TGY_COMP,,NNUM
*DIM,TGY_OK,,NNUM
*DIM,TGZ_COMP,,NNUM
*DIM,TGZ_OK,,NNUM
*DIM,TFX_COMP,,NNUM
*DIM,TFX_OK,,NNUM
*DIM,TFY_COMP,,NNUM
*DIM,TFY_OK,,NNUM
*DIM,TFZ_COMP,,NNUM
*DIM,TFZ_OK,,NNUM

*VABS, 1
*VOPER, H_COMP(1),H_ANSYS(1),SUB,H_CF(1)
*VOPER, H_OK(1),H_COMP(1),LE,VTOL(1)
*VSCFUN,H_BOOL,SUM,H_OK    ! HBOOL debe ser = NNUM

*VABS, 1
*VOPER, TGX_COMP(1),TGX_ANSYS(1),SUB,TGX_CF(1)
*VOPER, TGX_OK(1),TGX_COMP(1),LE,VTOL(1)
*VSCFUN,TGX_BOOL,SUM,TGX_OK

*VABS, 1
*VOPER, TGY_COMP(1),TGY_ANSYS(1),SUB,TGY_CF(1)
*VOPER, TGY_OK(1),TGY_COMP(1),LE,VTOL(1)
*VSCFUN,TGY_BOOL,SUM,TGY_OK

*VABS, 1
*VOPER, TGZ_COMP(1), TGZ_ANSYS(1),SUB,TGZ_CF(1)
*VOPER, TGZ_OK(1)  , TGZ_COMP(1),LE,VTOL(1)
*VSCFUN,TGZ_BOOL,SUM,TGZ_OK

*VABS, 1
*VOPER, TFX_COMP(1),TFX_ANSYS(1),SUB,TFX_CF(1)
*VOPER, TFX_OK(1),TFX_COMP(1),LE,VTOL(1)
*VSCFUN,TFX_BOOL,SUM,TFX_OK

*VABS, 1
*VOPER, TFY_COMP(1),TFY_ANSYS(1),SUB,TFY_CF(1)
*VOPER, TFY_OK(1),TFY_COMP(1),LE,VTOL(1)
*VSCFUN,TFY_BOOL,SUM,TFY_OK

*VABS, 1
*VOPER, TFZ_COMP(1) ,TFZ_ANSYS(1),SUB,TFZ_CF(1)
*VOPER, TFZ_OK(1)   ,TFZ_COMP(1),LE,VTOL(1)
*VSCFUN,TFZ_BOOL,SUM,TFZ_OK
/IMAGE,SAVE,%NomFile%,BMP	!Save Image to File
!--------------------------------------------------------------------------------------
! DATA CHECK
!--------------------------------------------------------------------------------------
! Data comparison number
  NComp    =  7
  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

! Labels
  LABEL(1,1) = 'H'
  LABEL(2,1) = 'TGX'
  LABEL(3,1) = 'TGY'
  LABEL(4,1) = 'TGZ'
  LABEL(5,1) = 'TFX'
  LABEL(6,1) = 'TFY'
  LABEL(7,1) = 'TFZ'

! Correct values
  VALUE(1,1)=NNUM
  VALUE(2,1)=NNUM
  VALUE(3,1)=NNUM
  VALUE(4,1)=NNUM
  VALUE(5,1)=NNUM
  VALUE(6,1)=NNUM
  VALUE(7,1)=NNUM

! Obtained values
  VALUE(1,2)= H_BOOL
  VALUE(2,2)= TGX_BOOL
  VALUE(3,2)= TGY_BOOL
  VALUE(4,2)= TGZ_BOOL
  VALUE(5,2)= TFX_BOOL
  VALUE(6,2)= TFY_BOOL
  VALUE(7,2)= TFZ_BOOL

! Warning and error tolerances
  *DO,II,1,7
    TOLER(II, 1)= 1E-9
    TOLER(II, 2)= 1E-9
  *ENDDO

!--------------------------------------------------------------------------------------
! Results comparison
!--------------------------------------------------------------------------------------
  COMPARA.MAC
