!***********************************************************************
! TITLE: CFVR4102 - Parabolic design diagram for concrete of ACI 359-04 code 
! SUBTITLE: Comprobation of the parabolic design-diagram for concrete
!
! DESCRIPTION: This example checks that are defined correctly the points of the
! DESCRIPTION: parabolic design diagram according to the ACI 359-04 code.
! DESCRIPTION: Checking will only be done at certain age (variable AGE) of an
! DESCRIPTION: arbitrary type of concrete.
!
! ELEMENT TYPE: NONE
! MODULES:
! UNITS:    BFT
! KEYWORD1: Materials
! KEYWORD2: ACI 359
!
!***********************************************************************

FINISH
~CFCLEAR,,1
NomFile ='CFVR4102'
/TITLE,%NomFile%,Parabolic design-diagram for concrete 

~CODESEL,,ACI359,ACI359
~UNITS,BFT

/PREP7 

! ----------------------------------------------------------------------
! Parameters
! ----------------------------------------------------------------------

AGE = 10     ! index for 75 days of concrete age
TOL = 1.E-12 ! relative error used to define tolerances

! ----------------------------------------------------------------------
! Material definition
! ----------------------------------------------------------------------

~CFMP,1,LIB,CONCRETE,ACI,fc_4500
~CFMP,1,ACI_C,TSDSSD,,4

!-----------------------------------------------------------------------
! Data check
!-----------------------------------------------------------------------

NCOMP    = 24
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

! Labels
!-----------------------------------------------------------------------
LABEL( 1) = 'EPS1'
LABEL( 2) = 'EPS2'
LABEL( 3) = 'EPS3'
LABEL( 4) = 'EPS4'
LABEL( 5) = 'EPS5'
LABEL( 6) = 'EPS6'
LABEL( 7) = 'EPS7'
LABEL( 8) = 'EPS8'
LABEL( 9) = 'EPS9'
LABEL(10) = 'EPS10'
LABEL(11) = 'EPS11'
LABEL(12) = 'EPS12'
LABEL(13) = 'SIG1'
LABEL(14) = 'SIG2'
LABEL(15) = 'SIG3'
LABEL(16) = 'SIG4'
LABEL(17) = 'SIG5'
LABEL(18) = 'SIG6'
LABEL(19) = 'SIG7'
LABEL(20) = 'SIG8'
LABEL(21) = 'SIG9'
LABEL(22) = 'SIG10'
LABEL(23) = 'SIG11'
LABEL(24) = 'SIG12'
                                       
! Correct values
!-----------------------------------------------------------------------
~CFGET,NPT,MATERIAL,1,ACI_C,NPSDSSD
~CFGET,FC_T,MATERIAL,1,ACI_C,FC_T,,AGE
EPSU = -0.003
EPS0 = -0.002

VALUE( 1,1) = EPSU
VALUE( 2,1) = EPS0
VALUE( 3,1) = 0.9*EPS0
VALUE( 4,1) = 0.8*EPS0
VALUE( 5,1) = 0.7*EPS0
VALUE( 6,1) = 0.6*EPS0
VALUE( 7,1) = 0.5*EPS0
VALUE( 8,1) = 0.4*EPS0
VALUE( 9,1) = 0.3*EPS0
VALUE(10,1) = 0.2*EPS0
VALUE(11,1) = 0.1*EPS0
VALUE(12,1) = 0.

COF  = 0.85*FC_T
COF1 = COF/EPS0
COF2 = 0.15/(EPSU - EPS0)
VALUE(13,1) = -COF*(1 - COF2*(VALUE(1,1) - EPS0))
VALUE(14,1) = -COF*(1 - COF2*(VALUE(2,1) - EPS0))
J = 3
*DO,I,15,24
  VALUE(I,1) = -COF1*VALUE(J,1)*(2 - VALUE(J,1)/EPS0)
  J = J + 1
*ENDDO

! Warning and error tolerencaes
!-----------------------------------------------------------------------
TOLER( 1,1) = TOL*ABS(VALUE( 1,1)) $ TOLER( 1,2) = TOLER( 1,1)
TOLER( 2,1) = TOL*ABS(VALUE( 2,1)) $ TOLER( 2,2) = TOLER( 2,1)
TOLER( 3,1) = TOL*ABS(VALUE( 3,1)) $ TOLER( 3,2) = TOLER( 3,1)
TOLER( 4,1) = TOL*ABS(VALUE( 4,1)) $ TOLER( 4,2) = TOLER( 4,1)
TOLER( 5,1) = TOL*ABS(VALUE( 5,1)) $ TOLER( 5,2) = TOLER( 5,1)      
TOLER( 6,1) = TOL*ABS(VALUE( 6,1)) $ TOLER( 6,2) = TOLER( 6,1)      
TOLER( 7,1) = TOL*ABS(VALUE( 7,1)) $ TOLER( 7,2) = TOLER( 7,1)      
TOLER( 8,1) = TOL*ABS(VALUE( 8,1)) $ TOLER( 8,2) = TOLER( 8,1)     
TOLER( 9,1) = TOL*ABS(VALUE( 9,1)) $ TOLER( 9,2) = TOLER( 9,1)      
TOLER(10,1) = TOL*ABS(VALUE(10,1)) $ TOLER(10,2) = TOLER(10,1)      
TOLER(11,1) = TOL*ABS(VALUE(11,1)) $ TOLER(11,2) = TOLER(11,1)
TOLER(12,1) = TOL*ABS(VALUE(12,1)) $ TOLER(12,2) = TOLER(12,1)
                                                   
TOLER(13,1) = 10**5*TOL*ABS(VALUE(13,1)) $ TOLER(13,2) = TOLER(13,1)
TOLER(14,1) = TOL*ABS(VALUE(14,1)) $ TOLER(14,2) = TOLER(14,1)
TOLER(15,1) = TOL*ABS(VALUE(15,1)) $ TOLER(15,2) = TOLER(15,1)
TOLER(16,1) = TOL*ABS(VALUE(16,1)) $ TOLER(16,2) = TOLER(16,1)
TOLER(17,1) = TOL*ABS(VALUE(17,1)) $ TOLER(17,2) = TOLER(17,1)
TOLER(18,1) = TOL*ABS(VALUE(18,1)) $ TOLER(18,2) = TOLER(18,1)
TOLER(19,1) = TOL*ABS(VALUE(19,1)) $ TOLER(19,2) = TOLER(19,1)
TOLER(20,1) = TOL*ABS(VALUE(20,1)) $ TOLER(20,2) = TOLER(20,1)
TOLER(21,1) = TOL*ABS(VALUE(21,1)) $ TOLER(21,2) = TOLER(21,1)
TOLER(22,1) = TOL*ABS(VALUE(22,1)) $ TOLER(22,2) = TOLER(22,1)
TOLER(23,1) = TOL*ABS(VALUE(23,1)) $ TOLER(23,2) = TOLER(23,1)
TOLER(24,1) = TOL*ABS(VALUE(24,1)) $ TOLER(24,2) = TOLER(24,1)
                                                   
! Obtained values
!-----------------------------------------------------------------------
~CFGET,VALUE( 1,2),MATERIAL,1,ACI_C,SDEPS,, 1,AGE
~CFGET,VALUE( 2,2),MATERIAL,1,ACI_C,SDEPS,, 2,AGE
~CFGET,VALUE( 3,2),MATERIAL,1,ACI_C,SDEPS,, 3,AGE
~CFGET,VALUE( 4,2),MATERIAL,1,ACI_C,SDEPS,, 4,AGE
~CFGET,VALUE( 5,2),MATERIAL,1,ACI_C,SDEPS,, 5,AGE
~CFGET,VALUE( 6,2),MATERIAL,1,ACI_C,SDEPS,, 6,AGE
~CFGET,VALUE( 7,2),MATERIAL,1,ACI_C,SDEPS,, 7,AGE
~CFGET,VALUE( 8,2),MATERIAL,1,ACI_C,SDEPS,, 8,AGE
~CFGET,VALUE( 9,2),MATERIAL,1,ACI_C,SDEPS,, 9,AGE
~CFGET,VALUE(10,2),MATERIAL,1,ACI_C,SDEPS,,10,AGE
~CFGET,VALUE(11,2),MATERIAL,1,ACI_C,SDEPS,,11,AGE
~CFGET,VALUE(12,2),MATERIAL,1,ACI_C,SDEPS,,12,AGE
~CFGET,VALUE(13,2),MATERIAL,1,ACI_C,SDSGM,, 1,AGE
~CFGET,VALUE(14,2),MATERIAL,1,ACI_C,SDSGM,, 2,AGE
~CFGET,VALUE(15,2),MATERIAL,1,ACI_C,SDSGM,, 3,AGE
~CFGET,VALUE(16,2),MATERIAL,1,ACI_C,SDSGM,, 4,AGE
~CFGET,VALUE(17,2),MATERIAL,1,ACI_C,SDSGM,, 5,AGE
~CFGET,VALUE(18,2),MATERIAL,1,ACI_C,SDSGM,, 6,AGE
~CFGET,VALUE(19,2),MATERIAL,1,ACI_C,SDSGM,, 7,AGE
~CFGET,VALUE(20,2),MATERIAL,1,ACI_C,SDSGM,, 8,AGE
~CFGET,VALUE(21,2),MATERIAL,1,ACI_C,SDSGM,, 9,AGE
~CFGET,VALUE(22,2),MATERIAL,1,ACI_C,SDSGM,,10,AGE
~CFGET,VALUE(23,2),MATERIAL,1,ACI_C,SDSGM,,11,AGE
~CFGET,VALUE(24,2),MATERIAL,1,ACI_C,SDSGM,,12,AGE
                                           
! Results comparison
!-----------------------------------------------------------------------
COMPARA.MAC

