!*************************************************************************************!
! TITLE: CFVR0852 - Linear combination test
! SUBTITLE: Example to check the linear combinations utility
!
! DESCRIPTION: This example checks the functionality of the combinations module.
! DESCRIPTION:
! DESCRIPTION: It checks the following:
! DESCRIPTION:
! DESCRIPTION: - Linear combinations.
! DESCRIPTION:
! DESCRIPTION: - Date handle with unsorted numeration (elements, load steps...)
! DESCRIPTION:
! DESCRIPTION:
! DESCRIPTION: The model is a simple three spans beam with a rectangular section (1.0m x 2.0m).
! DESCRIPTION: The spans are 10m, 16m and 10m long and are meshed with two elements each.
! DESCRIPTION:
! DESCRIPTION: The load cases are:
! DESCRIPTION:
! DESCRIPTION: - Load Step 1: Surface load (1 N/m) on Span 1.
! DESCRIPTION:
! DESCRIPTION: - Load Step 2: Surface load (2 N/m) on Span 2.
! DESCRIPTION:
! DESCRIPTION: - Load Step 3: Surface load (3 N/m) on Span 3.
! DESCRIPTION:
! DESCRIPTION:
! DESCRIPTION: The combination rules defined are:
! DESCRIPTION:
! DESCRIPTION: - Combination rule 18: Addition [3.0*H1 + 2.0*H2]
! DESCRIPTION:
! DESCRIPTION: - Combination rule 28: Addition [Combination 1 + 5.0*H3]
! DESCRIPTION:
!
! ELEMENT TYPE: Beam3
! MODULES:
! UNITS: User
! KEYWORD1: Cross Section
! KEYWORD2: Beam & Shell Properties
! KEYWORD3: Beam
! KEYWORD4: Combinations
!*************************************************************************************!
  FINISH
  ~CFCLEAR,,1 
 AnsLic='ansys'

  NomFile='CFVR0852'
  /TITLE, %NomFile%, Linear combination test
! ---------------------------------------------------------------------------------
! Model definition and solve
! ---------------------------------------------------------------------------------
!
!
!  Load scheme:
!
!          LS1      Q=1        LS2     Q=2        LS3        Q=3
!       ||||||||||||||||||  |||||||||||||||||  |||||||||||||||||||
!       ||||||||||||||||||  |||||||||||||||||  |||||||||||||||||||
!       vvvvvvvvvvvvvvvvvv  vvvvvvvvvvvvvvvvv  vvvvvvvvvvvvvvvvvvv
!     2         4         6         8        10        12        14  : Nodes
!     o=========o=========o=========o=========o=========o=========o
!     ^    5         7    ^    9        11    ^   13        15    ^  : Elements
!          3         5         7         9        11        13       : Material
!          2         4         6         8        10        12       : Section
!          4         4         6         6         8         8       : Types
!          3         3         3         3         3         3       : Ename
!     |------ 10 m -------|------ 16 m -------|------ 10 m -------|
!
! ---------------------------------------------------------------------------------
~UNITS,,LENG,M
~UNITS,,TIME,S
~UNITS,,FORC,KN
~CODESEL,EC3,EC2-91,EC2-91,,EC8-94
/PREP7
! Materials
  *DO,IMAT,2,14
    ~CFMP,IMAT,LIB,STEEL,EA,A42
  *ENDDO

! Element types
  ET,1,BEAM3
  *DO,ITYP,2,10,4
    ET,ITYP,BEAM3
  *ENDDO
  *DO,ITYP,4,12,4
    ET,ITYP,BEAM3
  *ENDDO
! Sections
  ~SSECLIB,1,2,1,6   ! IPE 180
! Beam & Shell Property
  *DO,ISEC,1,13
    ~BMSHPRO,ISEC,BEAM,1,1,,,3,1,0
  *ENDDO

! Nodes
  N, 1,-1
  N, 2, 0
  N, 4, 5
  N, 6,10
  N,10,26
  FILL,6,10
  N,14,36
  FILL,10,14
! Elements
  MAT, 3 $ REAL, 2 $ TYPE, 4 $ EN, 5, 2, 4
  MAT, 5 $ REAL, 4 $ TYPE, 4 $ EN, 7, 4, 6
  MAT, 7 $ REAL, 6 $ TYPE, 6 $ EN, 9, 6, 8
  MAT, 9 $ REAL, 8 $ TYPE, 6 $ EN,11, 8,10
  MAT,11 $ REAL,10 $ TYPE, 8 $ EN,13,10,12
  MAT,13 $ REAL,12 $ TYPE, 8 $ EN,15,12,14
! Boundary conditions
  D,2,UX
  D,2,UY
  D,6,UY
  D,10,UY
  D,14,UY
! Initial hypothesis solve
  /SOLU
  SOLCONTROL,OFF
  AUTOTS,OFF

  ! Hypothesis 1: LS1 Q=1 (1st Span)
    /TITLE, H1: LS1
    SFBEAM, 5,1,PRES,1,1
    SFBEAM, 7,1,PRES,1,1
    SOLVE
    SFEDELE,ALL,ALL,PRES
  ! Hypothesis 2: LS2 Q=2 (2nd Span)
    /TITLE, H2: LS2
    SFBEAM, 9,1,PRES,2,2
    SFBEAM,11,1,PRES,2,2
    SOLVE
    SFEDELE,ALL,ALL,PRES

  ! Hypothesis 3: LS3 Q=3 (3rd Span)
    /TITLE, H3: LS3
    SFBEAM,13,1,PRES,3,3
    SFBEAM,15,1,PRES,3,3
    SOLVE
    SFEDELE,ALL,ALL,PRES

/POST1
! ---------------------------------------------------------------------------------
! Definition and solving of combinations
! ---------------------------------------------------------------------------------
! Reset combinations module
  ~CMBCLR
! Combinations definition
  ! Combination 18: ADDITION [3H1+2H2]
      ~CMBDEF,18,ADD,2
      ~STSTDEF,18,1,LSTEP,1        ! H1: LS1 Q=1 (1st Span)
      ~STSTDEF,18,2,LSTEP,2        ! H2: LS2 Q=2 (2nd Span)
      ~STSTCFT,18,1,3.00
      ~STSTCFT,18,2,2.00
  ! Combination 28: ADDITION CMB1+5H3 = [3H1+2H2]+5H3
      ~CMBDEF,28,ADD,2
      ~STSTDEF,28,1,CMB,18         ! Cmb1
      ~STSTDEF,28,2,LSTEP,3        ! H3: LS3 Q=3 (3rd Span)
      ~STSTCFT,28,1,1.00
      ~STSTCFT,28,2,5.00
  ~LINCMB

!--------------------------------------------------------------------------------------
! DATA CHECK
!--------------------------------------------------------------------------------------
! Data comparison number
  NComp = 12
  NComp_ch = 0

! Matrix 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

! Correct values
! ---------------------------------------------------------------------------------
  VALUE( 1,1) = 62.250
  VALUE( 2,1) = -425398.63
  VALUE( 3,1) = -0.202570778E-2
  VALUE( 4,1) = 34.6764706
  VALUE( 5,1) = -236969.044
  VALUE( 6,1) = -0.112842403E-2
  VALUE( 7,1) = 62.250
  VALUE( 8,1) = -425398.63
  VALUE( 9,1) = -0.202570778E-2
  VALUE(10,1) = 34.6764706
  VALUE(11,1) = -236969.044
  VALUE(12,1) = -0.112842403E-2

! Obtained values
! ---------------------------------------------------------------------------------
! Test 1:
  ~CFSET,,4
  ETABLE,MZ_I,SMISC,6
  ETABLE,MZ_J,SMISC,12
! Comparison
 *GET,VALUE(1,2),ELEM,9,ETAB,MZ_J
! Test 2:
  ~CFSET,,4
  ETABLE,SX_I,LS   ,2
  ETABLE,SX_J,LS   ,5
! Comparison
 *GET,VALUE(2,2),ELEM,9,ETAB,SX_J
! Test 3:
  ~CFSET,,4
! Comparison
  ETABLE,EP_I,LEPEL,2
  ETABLE,EP_J,LEPEL,5
 *GET,VALUE(3,2),ELEM,9,ETAB,EP_J
! Test 4:
  ~CFSET,,5
! Comparison
  ETABLE,MZ_I,SMISC,6
  ETABLE,MZ_J,SMISC,12
 *GET,VALUE(4,2),ELEM,9,ETAB,MZ_J
! Test 5:
  ~CFSET,,5
! Comparison
  ETABLE,SX_I,LS   ,2
  ETABLE,SX_J,LS   ,5
 *GET,VALUE(5,2),ELEM,9,ETAB,SX_J
! Test 6:
  ~CFSET,,5
! Comparison
  ETABLE,EP_I,LEPEL,2
  ETABLE,EP_J,LEPEL,5
 *GET,VALUE(6,2),ELEM,9,ETAB,EP_J
! Test 7:
  ~CFSET,,4
! Comparison
 ~PLLSFOR,M,Z
 *GET,VALUE(7,2),ELEM,9,ETAB,CFETAB_J
! Test 8:
  ~CFSET,,4
! Comparison
 ~PLLSSTR,SX,25
 *GET,VALUE(8,2),ELEM,9,ETAB,CFETAB_J
! Test 9:
  ~CFSET,,4
! Comparison
 ~PLLSSTR,EPX,25
 *GET,VALUE(9,2),ELEM,9,ETAB,CFETAB_J
! Test 10:
  ~CFSET,,5
! Comparison
 ~PLLSFOR,M,Z
 *GET,VALUE(10,2),ELEM,9,ETAB,CFETAB_J
! Test 11:
  ~CFSET,,5
! Comparison
 ~PLLSSTR,SX,25
 *GET,VALUE(11,2),ELEM,9,ETAB,CFETAB_J
! Test 12:
  ~CFSET,,5
! Comparison
 ~PLLSSTR,EPX,25
 *GET,VALUE(12,2),ELEM,9,ETAB,CFETAB_J

! Labels
! ---------------------------------------------------------------------------------
  *DO,II,1,12
    LABEL(II) ='TEST%II%'
  *ENDDO

! Warning and error tolerances
  TOLER( 1, 1)= 1E-5       $   TOLER( 1, 2)= 1E-4
  TOLER( 2, 1)= 1E-1       $   TOLER( 2, 2)= 1E-0
  TOLER( 3, 1)= 1E-5       $   TOLER( 3, 2)= 1E-4
  TOLER( 4, 1)= 1E-5       $   TOLER( 4, 2)= 1E-4
  TOLER( 5, 1)= 1E-1       $   TOLER( 5, 2)= 1E-0
  TOLER( 6, 1)= 1E-5       $   TOLER( 6, 2)= 1E-4
  TOLER( 7, 1)= 1E-5       $   TOLER( 7, 2)= 1E-4
  TOLER( 8, 1)= 1E-2       $   TOLER( 8, 2)= 1E-1
  TOLER( 9, 1)= 1E-5       $   TOLER( 9, 2)= 1E-4
  TOLER(10, 1)= 1E-5       $   TOLER(10, 2)= 1E-4
  TOLER(11, 1)= 1E-2       $   TOLER(11, 2)= 1E-1
  TOLER(12, 1)= 1E-5       $   TOLER(12, 2)= 1E-4

!--------------------------------------------------------------------------------------
! Results comparison
!--------------------------------------------------------------------------------------
  COMPARA.MAC
