Vous êtes sur la page 1sur 5

subroutine update

c+
c subroutine update
c
c Function : updates the field variables and resisting force vector
c
c Description of variables :
c
c Output variables :
c
c . PASSED THROUGH COMMON BLOCKS (see include files)
c
c Local variables :
c
c . cl = current active classes
c . clcspt_l = pointer to the constitutive matrix allocation
c of class cl
c . clelm1_l = pointer to the first element in a class
c . clngau_l = number of gauss points for elements in the class
c . clnmss_l = number of stress/strain components in the class
c . clsspt_l = pointer to the stress/strain allocation of class cl
c . nmelcl = number of elements in the current class
c . type_l = type of the element in the current class
c
c Included common files :
c
c . '../include.d/maxdim.f'
c . '../include.d/global.f'
c . '../include.d/eledef.f'
c . '../include.d/fields.f'
c . '../include.d/Cijkl_tensr.f'
c . '../include.d/shapecom.f'
c
c Subroutine/Functions called :
c
c . '../lbtyp1.d/upfiel_f21.f' --> upfilf21
c . '../lbtyp1.d/upfiel_t33.f' --> upfilt33
c . '../lbtyp1.d/upfiel_t63.f' --> upfilt63
c . '../lbtyp1.d/upfiel_t67.f' --> upfilt67
c . '../lbtyp1.d/upfiel_q44.f' --> upfilq44
c . '../lbtyp1.d/upfiel_q54.f' --> upfilq54
c . '../lbtyp1.d/upfiel_q59.f' --> upfilq59
c . '../lbtyp1.d/upfiel_q64.f' --> upfilq64
c . '../lbtyp1.d/upfiel_q69.f' --> upfilq69
c . '../lbtyp1.d/upfiel_q74.f' --> upfilq74
c . '../lbtyp1.d/upfiel_q79.f' --> upfilq79
c . '../lbtyp1.d/upfiel_q84.f' --> upfilq84
c . '../lbtyp1.d/upfiel_q89.f' --> upfilq89
c . '../lbtyp1.d/upfiel_q94.f' --> upfilq94
c . '../lbtyp1.d/upfiel_q99.f' --> upfilq99
c . '../lbtyp1.d/upfiel_q129.f' --> upfilq129
c
c Written by : Creto Augusto Vidal
c
c Date : Thu Mar 29 22:36:01 CST 1990
c
c Version # : 1
c
c Latest revision by :
c
c Date of revision :
c
c- -
c::::::: :::::: ::: T Y P E D E C L A R A T I O N S ::: :::::: :::::::
c Include files
include '../include.d/maxdim.f'
include '../include.d/global.f'
include '../include.d/eledef.f'
include '../include.d/fields.f'
include '../include.d/Cijkl_tensr.f'
include '../include.d/shapecom.f'

c Argument variables
c Local variables
integer cl, clcspt_l, clelm1_l, clngau_l, clnmss_l,
& clsspt_l, clthpt_l, clflpt_l, nmelcl, clnmfl_l
character type_l*10
c::::::: :::::: ::::: :::: ::: :: : : : :: ::: :::: ::::: :::::: :::::::
c write (*,*) ' Subroutine update'
c =============================
c Process the elements by class
c =============================
c ========================================
c Loop over the active classes of elements
c ========================================
do 10 cl=1,nmaccl
c --------------------------------------------
c Pointer to the first element of the class cl
c --------------------------------------------
clelm1_l = clelm1(cl)
c ---------------------------------------------------
c Pointer to the stress-strain allocation of class cl
c ---------------------------------------------------
clsspt_l = clsspt(cl)
c ---------------------------------------------------------
c Pointer to the constitutive matrix allocation of class cl
c ---------------------------------------------------------
clcspt_l = clcspt(cl)
c -------------------------------------------------
c Pointer to the temperature allocation of class cl
c -------------------------------------------------
clthpt_l = clthpt(cl)
c ------------------------------------------
c Pointer to the flux allocation of class cl
c ------------------------------------------
clflpt_l = clflpt(cl)
c ----------------------------------------------------------
c Get the number of stress/strain components in the class cl
c ----------------------------------------------------------
clnmss_l = clnmss(cl)
c -------------------------------------------------------
c Get the number of flux field components in the class cl
c -------------------------------------------------------
clnmfl_l = clnmfl(cl)

c --------------------------------------
c Get number of elements in the class cl
c --------------------------------------
nmelcl = clcoun(cl)
c ----------------------------------------------
c Get the number of gauss points in the class cl
c ----------------------------------------------
clngau_l = clngau(cl)
c ----------------------------------------
c Get type of element in the current class
c ----------------------------------------
type_l = cltype(cl)
c ...............................................
c Compute the material tangent stiffness matrices
c ...............................................
c .............................................,.................
c Incompatible Eightnoded brick element (2x2x2 gauss integration)
c ...............................................,...............
c
c Isoparametric 18-node element
if (type_l(1:4).eq.'b6_3') then
call upfilb66(clelm1_l,clngau_l,clnmss_l,clnmfl_l,mx_nmdof,
& nmelcl,epstdt(clsspt_l),sigtdt(clsspt_l),
& thtdt(clthpt_l),delth(clflpt_l),
& fluxtdt(clflpt_l),freetdt(clthpt_l),ui)
elseif (type_l(1:4).eq.'w6_3') then
call upfilw66(clelm1_l,clngau_l,clnmss_l,clnmfl_l,mx_nmdof,
& nmelcl,Dtilda(clcspt_l),
& epsbar(clsspt_l),epstdt(clsspt_l),
& sigtdt(clsspt_l),thtdt(clthpt_l),delth(clflpt_l),
& fluxtdt(clflpt_l),freetdt(clthpt_l),ui,
& dui,beta,betat)
elseif (type_l(1:5).eq.'b18_6') then
call upfilb1818(clelm1_l,clngau_l,clnmss_l,clnmfl_l,mx_nmdof,
& nmelcl,epstdt(clsspt_l),sigtdt(clsspt_l),
& thtdt(clthpt_l),delth(clflpt_l),
& fluxtdt(clflpt_l),freetdt(clthpt_l),ui)
elseif (type_l(1:5).eq.'w18_6') then
call upfilw1818(clelm1_l,clngau_l,clnmss_l,clnmfl_l,mx_nmdof,
& nmelcl,Dtilda(clcspt_l),
& epsbar(clsspt_l),epstdt(clsspt_l),
& sigtdt(clsspt_l),thtdt(clthpt_l),delth(clflpt_l),
& fluxtdt(clflpt_l),freetdt(clthpt_l),ui,
& dui,beta,betat)
elseif (type_l(1:4).eq.'b8_2') then
call upfilb88(clelm1_l,clngau_l,clnmss_l,clnmfl_l,mx_nmdof,
& nmelcl,epstdt(clsspt_l),sigtdt(clsspt_l),
& thtdt(clthpt_l),delth(clflpt_l),
& fluxtdt(clflpt_l),freetdt(clthpt_l),ui)
elseif (type_l(1:4).eq.'s8_2') then
call upfils88(clelm1_l,clngau_l,clnmss_l,clnmfl_l,mx_nmdof,
& nmelcl,Dtilda(clcspt_l),
& epsbar(clsspt_l),epstdt(clsspt_l),
& sigtdt(clsspt_l),thtdt(clthpt_l),delth(clflpt_l),
& fluxtdt(clflpt_l),freetdt(clthpt_l),ui,
& dui,beta,betat)
c Isoparametric 27-node element
elseif (type_l(1:5).eq.'b27_3') then
call upfilb2727(clelm1_l,clngau_l,clnmss_l,clnmfl_l,mx_nmdof,
& nmelcl,epstdt(clsspt_l),sigtdt(clsspt_l),
& thtdt(clthpt_l),delth(clflpt_l),
& fluxtdt(clflpt_l),freetdt(clthpt_l),ui)
elseif (type_l(1:5).eq.'s27_3') then
call upfils2727(clelm1_l,clngau_l,clnmss_l,clnmfl_l,mx_nmdof,
& nmelcl,Dtilda(clcspt_l),
& epsbar(clsspt_l),epstdt(clsspt_l),
& sigtdt(clsspt_l),thtdt(clthpt_l),delth(clflpt_l),
& fluxtdt(clflpt_l),freetdt(clthpt_l),ui,
& dui,beta,betat)
c 10-node tet element
elseif (type_l(1:6).eq.'b10_11') then
call upfilb1011(clelm1_l,clngau_l,clnmss_l,clnmfl_l,mx_nmdof,
& nmelcl,Dtilda(clcspt_l),
& epstdt(clsspt_l),sigtdt(clsspt_l),
& thtdt(clthpt_l),delth(clflpt_l),
& fluxtdt(clflpt_l),freetdt(clthpt_l),ui,
& dui,betat)
elseif (type_l(1:4).eq.'b4_2') then
call upfilb44(clelm1_l,clngau_l,clnmss_l,clnmfl_l,mx_nmdof,
& nmelcl,epstdt(clsspt_l),sigtdt(clsspt_l),
& thtdt(clthpt_l),delth(clflpt_l),
& fluxtdt(clflpt_l),freetdt(clthpt_l),ui)
elseif (type_l(1:4).eq.'a4_2') then
call upfila44(clelm1_l,clngau_l,clnmss_l,clnmfl_l,mx_nmdof,
& nmelcl,Dtilda(clcspt_l),
& epsbar(clsspt_l),
& epstdt(clsspt_l),sigtdt(clsspt_l),
& thtdt(clthpt_l),delth(clflpt_l),
& fluxtdt(clflpt_l),freetdt(clthpt_l),ui,
& dui,beta,betat)
elseif (type_l(1:4).eq.'b9_3') then
call upfilb99(clelm1_l,clngau_l,clnmss_l,clnmfl_l,mx_nmdof,
& nmelcl,epstdt(clsspt_l),sigtdt(clsspt_l),
& thtdt(clthpt_l),delth(clflpt_l),
& fluxtdt(clflpt_l),freetdt(clthpt_l),ui)
elseif (type_l(1:4).eq.'a9_3') then
call upfila99(clelm1_l,clngau_l,clnmss_l,clnmfl_l,mx_nmdof,
& nmelcl,Dtilda(clcspt_l),
& epsbar(clsspt_l),
& epstdt(clsspt_l),sigtdt(clsspt_l),
& thtdt(clthpt_l),delth(clflpt_l),
& fluxtdt(clflpt_l),freetdt(clthpt_l),ui,
& dui,beta,betat)
endif
10 continue
return
end

Vous aimerez peut-être aussi