!*************************************************************************************!
! TITLE: CFVR5245 - Primary and secondary forces and moments checking on isostatic solid
! SUBTITLE: T cross section.
!
! DESCRIPTION: The model is a prestressed beam 15 m length.
! DESCRIPTION:
! DESCRIPTION: The beam is made of C16/20 concrete and the tendons are made of Gr250 steel.
! DESCRIPTION:
! DESCRIPTION: The section is a T one with reinforcement of S400 steel.
! DESCRIPTION: It has the following dimensions:
! DESCRIPTION:
! DESCRIPTION: - h = 1 m
! DESCRIPTION:
! DESCRIPTION: - tw = 0.5 m
! DESCRIPTION:
! DESCRIPTION: - b = 1 m
! DESCRIPTION:
! DESCRIPTION: - tf = 0.3 m
! DESCRIPTION:
! DESCRIPTION: Loads:
! DESCRIPTION:
! DESCRIPTION: - Self weight
! DESCRIPTION:
! DESCRIPTION: - Prestressing loads
! DESCRIPTION:
! DESCRIPTION: The aim of the example is to verify the calculation of prestressing losses.
!
! ELEMENT TYPE: SOLID45
! MODULES: PRSC
! UNITS: SI
! KEYWORD1: Beam
! KEYWORD2: Tendon
! KEYWORD3: Cross Section
! KEYWORD4: Prestressed Concrete
! KEYWORD5: Prestressing Losses
!
!*************************************************************************************!
   FINISH
   ~cfclear,,1
   ~CFACTIV,PRSC,Y
   NomFile='CFVR5245'
 /TITLE,%NomFile%, I&H CHECKING, ISOST SOLID, T SECTION
! -------------------------------------------------------------------------------------
! Initial data
! -------------------------------------------------------------------------------------
! CivilFEM SETUP
  ~UNITS,SI
  ~CODESEL,,EC2-91,EC2-91
  ~CFACTIV,PRSC,Y

! Preprocessor
  /PREP7

! Material Definition
  ~CFMP,1,LIB,CONCRETE,EC2,C16/20
  ~CFMP,2,LIB,REINF,CEB,S400
  ~CFMP,3,LIB,PREST,ASTMA416,Gr250

! Parameters for not considering prestressing losses.
  ~CFMP,3,Prest,MU,,0
  ~CFMP,3,Prest,K ,,0
  ~CFMP,3,Prest,A ,,0

! Element Type Definition
  ET,1,SOLID45

! Cross-section definition
  ~CSECDMS,1,T,1,1 ,0.5,1 ,0.3,0 ,0 ,0 ,0 ,2 ,2
  !~TREFINE,1

! Model Construction
  k,1
  k,2,15
  l,1,2
  lsel,none
  ~SEC2DOU,1,0,1
  lesize,all,,,1
  vdrag,all,,,,,,1

  h_elems = 8
  siz = 15/(h_elems*2)
  esize,siz
  lsel,all
  vmesh,all
  medcut = h_elems+1
  endcut   = h_elems*2+1
  *do,i,0,h_elems*2
    local,11+i,0,i*siz
    nsel,s,loc,x,0
    esln,s
    *if,i,EQ,0,then
      nsel,s,loc,x, siz
    *else
      nsel,s,loc,x,-siz
    *endif
    esln,r
    nsel,s,loc,x,0
    ~SLDSEC, i+1, 1, 11+i
  *enddo

  nsel,s,loc,x,0
  nsel,r,loc,y,-1
  d,all,uy,0,,,,uz,

  csys,0

  nsel,s,loc,x,0
  nsel,r,loc,y,-1
  d,all,ux,0,,,,uy,uz,

  ALLS

! Support beam construction

  area = 0.01
  c_diameter = 0.15
  ~SBSMDEF,1,h_elems*2+1

  ~PCEPDEF,1,       1,     0,0
  ~PCEPMDF,1,MOVE,CG
  ~PCEPDEF,2,medcut,-0.900,0
  ~PCEPDEF,3,  endcut,     0,0
  ~PCEPMDF,3,MOVE,CG

  ~PCPPDEF,1,       1,     0,0
  ~PCPPDEF,3,  endcut,     0,0

   Papp = 932258.79
  ~PCTNDEF,1,3,area,c_diameter,Papp ,Papp ,0

  ~PCTNMDF,1,EADD,1.
  ~PCTNMDF,1,EADD,2.
  ~PCTNMDF,1,EADD,3.
  ~PCTNMDF,1,PADD,1.
  ~PCTNMDF,1,PADD,3.
  ~PCTNMDF,1,METHOD,1

  ~PCTNMDF,1,EPAROUT,1,0
  ~PCTNMDF,1,EPARIN,2,0

  ~PCLOSS,0,0,0,0.8,

FINISH

/SOLU
  ~PCPL               ! Prestressing forces
  SOLVE               ! Calculation
  ACEL,,9.81
  SOLVE
FINISH

/POST1

!--------------------------------------------------------------------------------------
! 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

! Labels, Correct data, obtained data
!--------------------------------------------------------------------------------------
  ~CFSET,,1
  LABEL( 1) = 'KPRES1' $  VALUE( 1,1) =  1             $  ~CFGET,VALUE( 1,2),PRSCONC,,KPRES

                                   ~CFGET,aux1,SOLID,medcut,FORCE, MZ,J,
                                   ~CFGET,aux2,SOLID,medcut,FORCE,IMZ,J,
  LABEL( 2) = 'MZ/IMZ' $  VALUE( 2,1) =  1             $  VALUE( 2,2)=aux1/aux2
                                   ~CFGET,aux1,SOLID,medcut,FORCE, FX,J,
                                   ~CFGET,aux2,SOLID,medcut,FORCE,IFX,J,
  LABEL( 3) = 'FX/IFX' $  VALUE( 3,1) =  1             $  VALUE( 3,2)=aux1/aux2
                                   ~CFGET,aux1,SOLID,medcut,FORCE,HFY,J,
                                   ~CFGET,aux2,SOLID,medcut,FORCE,IFY,J,

  LABEL( 4) = 'HFY'     $ VALUE( 4,1) =  7102          $  VALUE( 4,2)=ABS(aux1)
  LABEL( 5) = 'RFX1'    $ VALUE( 5,1) =  0.0           $  *GET,VALUE( 5,2),NODE,1,RF,FX
  LABEL( 6) = 'RFY1'    $ VALUE( 6,1) =  0.0           $  *GET,VALUE( 6,2),NODE,1,RF,FY
  LABEL( 7) = 'RFZ1'    $ VALUE( 7,1) =  0.0           $  *GET,VALUE( 7,2),NODE,1,RF,FZ
  LABEL( 8) = 'RFY2'    $ VALUE( 8,1) =  0.0           $  *GET,VALUE( 8,2),NODE,2,RF,FY
  LABEL( 9) = 'RFZ2'    $ VALUE( 9,1) =  0.0           $  *GET,VALUE( 9,2),NODE,2,RF,FZ
 ~CFSET,,2
  LABEL(10) = 'KPRES2'  $ VALUE(10,1) =  1             $  ~CFGET,VALUE(10,2),PRSCONC,,KPRES
                                   ~CFGET,aux1,SOLID,medcut,FORCE,HMZ,J,
                                   ~CFGET,aux2,SOLID,medcut,FORCE,IMZ,J,
  LABEL(11) = 'HMZ/IMZ' $ VALUE(11,1) = -1             $  VALUE(11,2)=aux1/aux2

  LABEL(12) = 'UYMAX'   $ VALUE(12,1) =  -0.35E-4      $  *GET,VALUE(12,2),NODE,708,U,Y

! Warning and error tolerances
  *DO,II,1,NComp
    TOLER(II,1)  = 1E-8
    TOLER(II,2)  = 1E-8
  *ENDDO
  TOLER(  2,1) = 1E-2 $  TOLER(  2,2) = 1E-2
  TOLER(  3,1) = 1E-4 $  TOLER(  3,2) = 1E-4
  TOLER(  4,1) = 1E+2 $  TOLER(  4,2) = 1E+2
  TOLER( 11,1) = 1E-2 $  TOLER( 11,2) = 1E-2
  TOLER( 12,1) = 1E-6 $  TOLER( 12,2) = 1E-6

!--------------------------------------------------------------------------------------
! Results comparison
!--------------------------------------------------------------------------------------
  COMPARA.MAC
