!*************************************************************************************!
! TITLE: CFVR0835 - Combination module test with CivilFEM results
! SUBTITLE: Example to check the combinations utility
!
! DESCRIPTION: This example checks the functionality of the combinations module.
! DESCRIPTION:
! DESCRIPTION: It checks the following:
! DESCRIPTION:
! DESCRIPTION: - Results handle on BEAM3 elements.
! DESCRIPTION:
! DESCRIPTION: - Date handle with unsorted numeration (elements, load steps...)
! DESCRIPTION:
! DESCRIPTION: - Handle of all combination rules.
! DESCRIPTION:
! DESCRIPTION: - Handle of nested combinations.
! DESCRIPTION:
! DESCRIPTION: - Handle of combined cross section results.
! DESCRIPTION:
! DESCRIPTION: - Title of combinations.
! 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, Sub Step 1, Time 10: Surface load (1 N/m) on Span 1.
! DESCRIPTION:
! DESCRIPTION: - Load Step 2, Sub Step 2, Time 20: Surface load (3 N/m) on Span 3.
! DESCRIPTION:
! DESCRIPTION:
! DESCRIPTION: The targets for the combinations are:
! DESCRIPTION:
! DESCRIPTION: - Target 1: Maximum value of SX stress on point 4 of the cross section.
! DESCRIPTION:
! DESCRIPTION: - Target 2: Minimum value of SX stress on point 5 of the cross section.
! DESCRIPTION:
! DESCRIPTION: - Target 3: Absolute value of SX stress on point 6 of the cross section.
! DESCRIPTION:
! DESCRIPTION: - Target 4: Maximum value of SX stress on point 7 of the cross section.
! DESCRIPTION:
! DESCRIPTION: - Target 5: Minimum value of SX stress on point 8 of the cross section.
! DESCRIPTION:
! DESCRIPTION: - Target 6: Absolute value of SX stress on point 9 of the cross section.
! DESCRIPTION:
! DESCRIPTION: - Target 7: Maximum value of SX stress on point 10 of the cross section.
! DESCRIPTION:
! DESCRIPTION: - Target 8: Minimum value of SX stress on point 12 of the cross section.
! DESCRIPTION:
! DESCRIPTION: - Target 9: Absolute value of SX stress on point 14 of the cross section.
! DESCRIPTION:
! DESCRIPTION: - Target 10: Maximum value of SX stress on point 16 of the cross section.
! DESCRIPTION:
! DESCRIPTION: - Target 11: Minimum value of SX stress on point 18 of the cross section.
! DESCRIPTION:
! DESCRIPTION: - Target 12: Absolute value of SX stress on point 20 of the cross section.
! DESCRIPTION:
! DESCRIPTION: - Target 13: Maximum value of SX stress on point 22 of the cross section.
! DESCRIPTION:
! DESCRIPTION: - Target 14: Minimum value of SX stress on point 24 of the cross section.
! DESCRIPTION:
! DESCRIPTION: - Target 15: Maximum value of the X strain on point 4 of the cross section.
! DESCRIPTION:
! DESCRIPTION: - Target 16: Minimum value of the X strain on point 5 of the cross section.
! DESCRIPTION:
! DESCRIPTION: - Target 17: Absolute value of the X strain on point 6 of the cross section.
! DESCRIPTION:
! DESCRIPTION: - Target 18: Maximum value of the X strain on point 7 of the cross section.
! DESCRIPTION:
! DESCRIPTION: - Target 19: Minimum value of the X strain on point 8 of the cross section.
! DESCRIPTION:
! DESCRIPTION: - Target 20: Absolute value of the X strain on point 9 of the cross section.
! DESCRIPTION:
! DESCRIPTION: - Target 21: Maximum value of the X strain on point 10 of the cross section.
! DESCRIPTION:
! DESCRIPTION: - Target 22: Minimum value of the X strainon point 12 of the cross section.
! DESCRIPTION:
! DESCRIPTION: - Target 23: Absolute value of the X strain on point 14 of the cross section.
! DESCRIPTION:
! DESCRIPTION: - Target 24: Maximum value of the X strain on point 16 of the cross section.
! DESCRIPTION:
! DESCRIPTION: - Target 25: Minimum value of the X strain on point 18 of the cross section.
! DESCRIPTION:
! DESCRIPTION: - Target 26: Absolute value of the X strain on point 20 of the cross section.
! DESCRIPTION:
! DESCRIPTION: - Target 27: Maximum value of the X strain on point 22 of the cross section.
! DESCRIPTION:
! DESCRIPTION: - Target 28: Minimum value of the X strain on point 24 of the cross section.
! DESCRIPTION:
! DESCRIPTION:
! DESCRIPTION: The combination rules defined are:
! DESCRIPTION:
! DESCRIPTION: - Combination rule 4: Addition [1.5*H1 + 9.0*H2]
! DESCRIPTION:
! DESCRIPTION: - Combination rule 5: Addition [2.0*H1 + 10.0*H2]
! DESCRIPTION:
!
! ELEMENT TYPE: Beam3, Mesh200
! MODULES:
! UNITS: SI
! KEYWORD1: Cross Section
! KEYWORD2: Beam & Shell Properties
! KEYWORD3: Beam
! KEYWORD4: Combinations
!*************************************************************************************!
  FINISH
  ~CFCLEAR,,1 
 AnsLic='ansys'
  ~CODESEL,EC3,EC2-91,EC2-91,,EC8-94

  NomFile='CFVR0835'
  /TITLE, %NomFile%, Combination module test with CivilFEM's targets

! ---------------------------------------------------------------------------------
! Model definition and solve
! ---------------------------------------------------------------------------------
!
!  General data:
!  - Rectangular Sections 1.00 x 2.00 m
!  - UX, UZ, ROTX y ROTY = 0
!
!  Load scheme:
!
!       LS1 SB1 TM10 Q=1                       LS2 SB2 TM20 Q=3
!       ||||||||||||||||||                     |||||||||||||||||||
!       ||||||||||||||||||                     |||||||||||||||||||
!       vvvvvvvvvvvvvvvvvv                     vvvvvvvvvvvvvvvvvvv
!     2         4         6         8        10        12        14  : Nodes
!     o=========o=========o=========o=========o=========o=========o
!     ^    5         7    ^    9        11    ^   13        15    ^  : Elements
!          1         2         3         4         5         6       : Material
!          1         1         2         2         3         3       : Section
!          4         4         6         6         8         8       : Types
!          3         3         3         3         3         3       : Ename
!     |------ 10 m -------|------ 16 m -------|------ 10 m -------|
!
! ---------------------------------------------------------------------------------

/PREP7
! Materials
  ~CFMP,1,LIB,CONCRETE,EHE,HA-20
  ~CFMP,2,LIB,CONCRETE,EHE,HA-25
  ~CFMP,3,LIB,CONCRETE,EHE,HA-30
  ~CFMP,4,LIB,CONCRETE,EHE,HA-35
  ~CFMP,5,LIB,CONCRETE,EHE,HA-40
  ~CFMP,6,LIB,CONCRETE,EHE,HA-45
! Element types
  ET,2,MESH200,6
  ET,4,BEAM3
  ET,6,BEAM3
  ET,8,BEAM3
! Sections
  b=1
  h=2
  ! Solid modeling
  K,1,0,-h/2,-b/2
  K,2,0,h/2,-b/2
  K,3,0,h/2,b/2
  K,4,0,-h/2,b/2
  A,1,2,3,4
  MAT,1
  TYPE,2
  *DO,ii,1,3
    ESIZE,,2+ii
    AMESH,1
    LOCAL,11
    ~SEC2DIN,ii,11
    ACLEAR,ALL
  *ENDDO
! Beam Properties
    ~BMSHPRO,1,BEAM,1,,,,3,1,0
    ~BMSHPRO,2,BEAM,1,,,,3,1,0
    ~BMSHPRO,3,BEAM,2,,,,3,1,0
    ~BMSHPRO,4,BEAM,2,,,,3,1,0
    ~BMSHPRO,5,BEAM,3,,,,3,1,0
    ~BMSHPRO,6,BEAM,3,,,,3,1,0

! 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, 1 $ REAL, 1 $ TYPE, 4 $ EN, 5, 2, 4
  MAT, 2 $ REAL, 2 $ TYPE, 4 $ EN, 7, 4, 6
  MAT, 3 $ REAL, 3 $ TYPE, 6 $ EN, 9, 6, 8
  MAT, 4 $ REAL, 4 $ TYPE, 6 $ EN,11, 8,10
  MAT, 5 $ REAL, 5 $ TYPE, 8 $ EN,13,10,12
  MAT, 6 $ REAL, 6 $ TYPE, 8 $ EN,15,12,14
! Boundary conditions
  D,8,UX
  D,2,UY
  D,6,UY
  D,10,UY
  D,14,UY
! Plot
  /ESHAPE,1
  EPLOT
! Initial hypothesis solve
  /SOLU
  SOLCONTROL,OFF
  AUTOTS,OFF
  ! Hypothesis 1: LS1 SB1 TM10 Q=1 (1st Span)
    /TITLE,H1: LS1 SB1 TM10 Q=1 (1st Span)
    TIME,10
    OUTRES,ALL,ALL
    SFBEAM, 5,1,PRES,1,1
    SFBEAM, 7,1,PRES,1,1
    SOLVE
    SFEDELE,ALL,ALL,PRES
  ! Hypothesis 2: LS2 SB2 TM20 Q=3 (3rd Span)
    /TITLE,H2: LS2 SB2 TM20 Q=3 (3rd Span)
    TIME,20
    NSUBST,2
    OUTRES,ALL,ALL
    D,10,UX
    D,14,UX
    DDELE,2,UX
    SFBEAM,13,1,PRES,3,3
    SFBEAM,15,1,PRES,3,3
    SOLVE
    SFEDELE,ALL,ALL,PRES

/POST1
! ---------------------------------------------------------------------------------
! Definition and solving of combinations
! ---------------------------------------------------------------------------------
! Targets:
!    1: sx  MAX on Point  4 of the cross section
!    2: sx  MIN on Point  5 of the cross section
!    3: sx  ABS on Point  6 of the cross section
!    4: sx  MAX on Point  7 of the cross section
!    5: sx  MIN on Point  8 of the cross section
!    6: sx  ABS on Point  9 of the cross section
!    7: sx  MAX on Point 10 of the cross section
!    8: sx  MIN on Point 12 of the cross section
!    9: sx  ABS on Point 14 of the cross section
!   10: sx  MAX on Point 16 of the cross section
!   11: sx  MIN on Point 18 of the cross section
!   12: sx  ABS on Point 20 of the cross section
!   13: sx  MAX on Point 22 of the cross section
!   14: sx  MIN on Point 24 of the cross section
!   15: epx MAX on Point  4 of the cross section
!   16: epx MIN on Point  5 of the cross section
!   17: epx ABS on Point  6 of the cross section
!   18: epx MAX on Point  7 of the cross section
!   19: epx MIN on Point  8 of the cross section
!   20: epx ABS on Point  9 of the cross section
!   21: epx MAX on Point 10 of the cross section
!   22: epx MIN on Point 12 of the cross section
!   23: epx ABS on Point 14 of the cross section
!   24: epx MAX on Point 16 of the cross section
!   25: epx MIN on Point 18 of the cross section
!   26: epx ABS on Point 20 of the cross section
!   27: epx MAX on Point 22 of the cross section
!   28: epx MIN on Point 24 of the cross section
!
! Rules:
!   5: ADDITION      : 2*H1+10*H2
! ---------------------------------------------------------------------------------
! Reset combinations module
  ~CMBCLR,
! User Points definition
  ~TRGUPT,  1, 4, s,x
  ~TRGUPT,  2, 5, s,x
  ~TRGUPT,  3, 6, s,x
  ~TRGUPT,  4, 7, s,x
  ~TRGUPT,  5, 8, s,x
  ~TRGUPT,  6, 9, s,x
  ~TRGUPT,  7,10, s,x
  ~TRGUPT,  8,12, s,x
  ~TRGUPT,  9,14, s,x
  ~TRGUPT, 10,16, s,x
  ~TRGUPT, 11,18, s,x
  ~TRGUPT, 12,20, s,x
  ~TRGUPT, 13,22, s,x
  ~TRGUPT, 14,24, s,x
  ~TRGUPT,  1, 4,ep,x
  ~TRGUPT,  2, 5,ep,x
  ~TRGUPT,  3, 6,ep,x
  ~TRGUPT,  4, 7,ep,x
  ~TRGUPT,  5, 8,ep,x
  ~TRGUPT,  6, 9,ep,x
  ~TRGUPT,  7,10,ep,x
  ~TRGUPT,  8,12,ep,x
  ~TRGUPT,  9,14,ep,x
  ~TRGUPT, 10,16,ep,x
  ~TRGUPT, 11,18,ep,x
  ~TRGUPT, 12,20,ep,x
  ~TRGUPT, 13,22,ep,x
  ~TRGUPT, 14,24,ep,x

! Targets definition
  ~TRGDEF, 1,CROSS,SS,PT1,MAX
  ~TRGDEF, 2,CROSS,SS,PT2,MIN
  ~TRGDEF, 3,CROSS,SS,PT3,ABS
  ~TRGDEF, 4,CROSS,SS,PT4,MAX
  ~TRGDEF, 5,CROSS,SS,PT5,MIN
  ~TRGDEF, 6,CROSS,SS,PT6,ABS
  ~TRGDEF, 7,CROSS,SS,PT7,MAX
  ~TRGDEF, 8,CROSS,SS,PT8,MIN
  ~TRGDEF, 9,CROSS,SS,PT9,ABS
  ~TRGDEF,10,CROSS,SS,PT10,MAX
  ~TRGDEF,11,CROSS,SS,PT11,MIN
  ~TRGDEF,12,CROSS,SS,PT12,ABS
  ~TRGDEF,13,CROSS,SS,PT13,MAX
  ~TRGDEF,14,CROSS,SS,PT14,MIN
  ~TRGDEF,15,CROSS,EP,PT1,MAX
  ~TRGDEF,16,CROSS,EP,PT2,MIN
  ~TRGDEF,17,CROSS,EP,PT3,ABS
  ~TRGDEF,18,CROSS,EP,PT4,MAX
  ~TRGDEF,19,CROSS,EP,PT5,MIN
  ~TRGDEF,20,CROSS,EP,PT6,ABS
  ~TRGDEF,21,CROSS,EP,PT7,MAX
  ~TRGDEF,22,CROSS,EP,PT8,MIN
  ~TRGDEF,23,CROSS,EP,PT9,ABS
  ~TRGDEF,24,CROSS,EP,PT10,MAX
  ~TRGDEF,25,CROSS,EP,PT11,MIN
  ~TRGDEF,26,CROSS,EP,PT12,ABS
  ~TRGDEF,27,CROSS,EP,PT13,MAX
  ~TRGDEF,28,CROSS,EP,PT14,MIN

! Combinations definition
  ! Combination  4: ADDITION      : 1.5*H2+9*H1
    /TITLE,1.5*H2+9*H1
      ~CMBDEF,4,ADD,2
      ~STSTDEF,4,1,NSET,1     ! H1: LS1 SB1 TM10 Q=1 (1st Span)
      ~STSTDEF,4,2,LSTEP,2,2  ! H2: LS2 SB2 TM20 Q=3 (3rd Span)
      ~STSTCFT,4,2,1.50
      ~STSTCFT,4,1,9.00
  ! Combination  5: ADDITION      : 2*H1+10*H2
    /TITLE,2*H1+10*H2
      ~CMBDEF,5,ADD,2
      ~STSTDEF,5,1,NSET,1     ! H1: LS1 SB1 TM10 Q=1 (1st Span)
      ~STSTDEF,5,2,LSTEP,2,2  ! H2: LS2 SB2 TM20 Q=3 (3rd Span)
      ~STSTCFT,5,1,2.00
      ~STSTCFT,5,2,10.00
  ! Combine
    ~COMBINE

!--------------------------------------------------------------------------------------
! DATA CHECK
!--------------------------------------------------------------------------------------
! Data comparison number
  NComp = 28
  NComp_ch = 6

! 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  

! -------------------------------------------------------------------------------------
! Correct data.
!--------------------------------------------------------------------------------------
  ~CMBDAT,1
  *DO,II,4,10
    ~CFSET,,1
    ~CFGET,VAL1,ELEMENT,11,STRESS,SX,I,II     ! End I of Element 11
    ~CFGET,VAL3,ELEMENT,11,STRAIN,EPSX,I,II   ! End I of Element 11
    ~CFSET,,2
    ~CFGET,VAL2,ELEMENT,11,STRESS,SX,I,II     ! End I of Element 11
    ~CFGET,VAL4,ELEMENT,11,STRAIN,EPSX,I,II   ! End I of Element 11
    VALUE(II-3,1)=2*Val1+10*Val2
    VALUE(II-3+14,1)=2*Val3+10*Val4
  *ENDDO
  *DO,II,6,12
    ~CFSET,,1
    ~CFGET,VAL1,ELEMENT,11,STRESS,SX,I,II*2   ! End I of Element 11
    ~CFGET,VAL3,ELEMENT,11,STRAIN,EPSX,I,II*2 ! End I of Element 11
    ~CFSET,,2
    ~CFGET,VAL2,ELEMENT,11,STRESS,SX,I,II*2   ! End I of Element 11
    ~CFGET,VAL4,ELEMENT,11,STRAIN,EPSX,I,II*2 ! End I of Element 11
    VALUE(II+2,1)=2*Val1+10*Val2
    VALUE(II+2+14,1)=2*Val3+10*Val4
  *ENDDO

! -------------------------------------------------------------------------------------
! Obtained data
!--------------------------------------------------------------------------------------
  ~CMBDAT,2
 
! Test titles
  ~CFSET,,4,1     
  VALUE_CH(1,1)= '1.5*H2+9'
  *GET, VALUE_CH(1,2), ACTIVE, 0, TITLE,0,START,1
  VALUE_CH(2,1)= '*H1     '
  *GET, VALUE_CH(2,2), ACTIVE, 0, TITLE,0,START,9
  VALUE_CH(3,1)= 'CMB:   4'
  *GET, VALUE_CH(3,2), ACTIVE, 0, TITLE,1
  ~CFSET,,5,1     
  VALUE_CH(4,1)= '2*H1+10*'
  *GET, VALUE_CH(4,2), ACTIVE, 0, TITLE,0,START,1
  VALUE_CH(5,1)= 'H2      '
  *GET, VALUE_CH(5,2), ACTIVE, 0, TITLE,0,START,9
  VALUE_CH(6,1)= 'CMB:   5'
  *GET, VALUE_CH(6,2), ACTIVE, 0, TITLE,1

  *DO,II,4,10
    ~CFSET,,5,II-3                        ! Combination 5.
    ~CFGET,VALUE(II-3,2),ELEMENT,11,STRESS,SX,I,II        ! End I of Element 11
    ~CFGET,VALUE(II-3+14,2),ELEMENT,11,STRAIN,EPSX,I,II   ! End I of Element 11
  *ENDDO
  *DO,II,6,12
    ~CFSET,,5,II+2                        ! Combination 5.
    ~CFGET,VALUE(II+2,2),ELEMENT,11,STRESS,SX,I,II*2      ! End I of Element 11
    ~CFGET,VALUE(II+2+14,2),ELEMENT,11,STRAIN,EPSX,I,II*2 ! End I of Element 11
  *ENDDO

! Labels
!--------------------------------------------------------------------------------------
  *DO,II,1,NComp
    LABEL(II)= 'TEST%II%'
  *ENDDO
  *DO,II,1,NComp_ch
    LABEL_CH(II)= 'Title %II%'
  *ENDDO

! Warning and error tolerances
  *DO,II,1,14
    TOLER(II, 1)= 1E-4     $   TOLER(II, 2)= 1E-3
  *ENDDO
  *DO,II,15,28
    TOLER(II, 1)= 1E-15    $   TOLER(II, 2)= 1E-14
  *ENDDO

!--------------------------------------------------------------------------------------
! Results comparison
!--------------------------------------------------------------------------------------
  COMPARA.MAC
