17 integer,
pointer :: istatus(:) =>null()
18 real(kind=
kreal),
pointer :: fstatus(:) => null()
20 real(kind=
kreal) :: strain_bak(6)
21 real(kind=
kreal) :: stress_bak(6)
23 real(kind=
kreal) :: strain_out(6)
24 real(kind=
kreal) :: stress_out(6)
25 real(kind=
kreal) :: strain_energy
26 real(kind=
kreal) :: strain_energy_bak
35 real(kind=
kreal),
pointer :: equiforces(:) => null()
37 real(kind=
kreal),
pointer :: aux(:,:) => null()
47 gauss%strain=0.d0; gauss%stress=0.d0
48 gauss%strain_bak=0.d0; gauss%stress_bak=0.d0
49 gauss%strain_out=0.d0; gauss%stress_out=0.d0
52 gauss%strain_energy =0.d0
53 gauss%strain_energy_bak =0.d0
55 if( gauss%pMaterial%nfstatus> 0 )
then
56 allocate( gauss%fstatus(gauss%pMaterial%nfstatus) )
57 gauss%fstatus(:) = 0.d0
60 allocate( gauss%istatus(1) )
63 if( n>0 )
allocate( gauss%fstatus(n) )
65 allocate( gauss%fstatus(7+6) )
67 allocate( gauss%fstatus(2) )
74 allocate( gauss%fstatus(12*n+6) )
77 stop
"Viscoelastic properties not defined"
79 else if( gauss%pMaterial%mtype==
norton )
then
80 allocate( gauss%fstatus(2) )
89 if(
associated( gauss%istatus ) )
deallocate( gauss%istatus )
90 if(
associated( gauss%fstatus ) )
deallocate( gauss%fstatus )
98 gauss2%strain = gauss1%strain
99 gauss2%stress = gauss1%stress
100 gauss2%strain_bak = gauss1%strain_bak
101 gauss2%stress_bak = gauss1%stress_bak
102 gauss2%plstrain = gauss1%plstrain
103 gauss2%strain_energy = gauss1%strain_energy
105 if(
associated(gauss1%istatus) .and.
associated(gauss2%istatus) )
then
106 gauss2%istatus = gauss1%istatus
108 if(
associated(gauss1%fstatus) .and.
associated(gauss2%fstatus) )
then
109 gauss2%fstatus = gauss1%fstatus