41 . NVARVIS ,UVARVIS ,RHO ,VISCMAX ,SOUNDSP ,TIMESTEP,
42 . EPSPXX ,EPSPYY ,EPSPZZ ,EPSPXY ,EPSPYZ ,EPSPZX ,
43 . DEPSXX ,DEPSYY ,DEPSZZ ,DEPSXY ,DEPSYZ ,DEPSZX ,
44 . SVO1 ,SVO2 ,SVO3 ,SVO4 ,SVO5 ,SVO6 ,
45 . SV1 ,SV2 ,SV3 ,SV4 ,SV5 ,SV6 ,
46 . MFXX ,MFXY ,MFXZ ,MFYX ,MFYY ,MFYZ ,
48 . S1 ,S2 ,S3 ,S4 ,S5 ,S6 ,
49 . DAMP_BUF,IDAMP_FREQ_RANGE ,MVSIZ ,ET ,YOUNG ,
50 . SHEAR_MODULUS,IVISC )
55 USE elbufdef_mod,
only: buf_damp_range_
56 USE damping_range_solid_mod
61#include "implicit_f.inc"
69 INTEGER ,
INTENT(IN) :: NEL,NVARVIS
70 INTEGER ,
INTENT(IN) :: IDAMP_FREQ_RANGE
71 INTEGER ,
INTENT(IN) :: MVSIZ
72 INTEGER ,
INTENT(IN) :: IVISC
73 my_real ,
INTENT(IN) :: TIMESTEP
74 my_real ,
INTENT(IN) :: YOUNG
75 my_real,
INTENT(IN) :: SHEAR_MODULUS
76 my_real,
DIMENSION(NEL),
INTENT(INOUT):: S1,S2,S3,S4,S5,S6
78 my_real,
DIMENSION(NEL) ,
INTENT(INOUT) :: SOUNDSP, VISCMAX
79 my_real,
DIMENSION(NEL) ,
INTENT(IN) :: epspxx,epspyy,epspzz,epspxy,epspyz,epspzx,
80 . mfxx,mfxy,mfxz,mfyx,mfyy,mfyz,mfzx,mfzy,mfzz,
81 . depsxx,depsyy,depszz,depsxy,depsyz,depszx,
82 . svo1,svo2,svo3,svo4,svo5,svo6,rho
83 my_real,
DIMENSION(NEL) ,
INTENT(OUT) :: sv1,sv2,sv3,sv4,sv5,sv6
85 my_real,
DIMENSION(NEL*NVARVIS) ,
INTENT(INOUT) :: uvarvis
86 my_real,
DIMENSION(MVSIZ) ,
INTENT(IN) :: et
87 TYPE(visc_param_) ,
INTENT(IN) :: VISC
88 TYPE(buf_damp_range_) ,
INTENT(IN) :: DAMP_BUF
92 INTEGER :: NPRONY,J,NVAR_DAMP
96 IF (idamp_freq_range > 0)
THEN
110 IF (visc%ILAW == 1)
THEN
112 nprony = visc%IPARAM(1)
113 CALL visc_prony(visc ,nprony ,nel ,nvarvis ,uvarvis ,
114 . epspxx ,epspyy ,epspzz ,epspxy ,epspyz ,epspzx ,
115 . sv1 ,sv2 ,sv3 ,sv4 ,sv5 ,sv6 ,
116 . timestep,rho ,viscmax
118 ELSEIF (visc%ILAW == 2)
THEN
120 nprony = visc%IPARAM(1)
122 . visc ,nprony ,nel ,nvarvis ,uvarvis ,
123 . timestep,mfxx ,mfxy ,mfxz ,mfyx ,mfyy ,
124 . mfyz ,mfzx ,mfzy ,mfzz ,
125 . s1 ,s2 ,s3 ,s4 ,s5 ,s6)
126 ELSEIF (visc%ILAW == 3)
THEN
128 . visc ,nel , rho ,soundsp ,
129 . depsxx ,depsyy ,depszz ,depsxy ,depsyz ,depszx,
130 . svo1 ,svo2 ,svo3 ,svo4 ,svo5 , svo6,
131 . sv1 ,sv2 ,sv3 ,sv4 ,sv5 ,sv6)
136 IF (idamp_freq_range > 0)
THEN
137 call damping_range_solid(damp_buf,nel ,nvarvis ,uvarvis ,nvar_damp ,et ,
138 . epspxx ,epspyy ,epspzz ,epspxy ,epspyz ,epspzx ,
139 . sdamp1 ,sdamp2 ,sdamp3 ,sdamp4 ,sdamp5 ,sdamp6 ,
140 . timestep,rho ,soundsp ,young ,shear_modulus)
141 sv1(1:nel) = sv1(1:nel) + sdamp1(1:nel)
142 sv2(1:nel) = sv2(1:nel) + sdamp2(1:nel)
143 sv3(1:nel) = sv3(1:nel) + sdamp3(1:nel)
144 sv4(1:nel) = sv4(1:nel) + sdamp4(1:nel)
145 sv5(1:nel) = sv5(1:nel) + sdamp5(1:nel)
146 sv6(1:nel) = sv6(1:nel) + sdamp6(1:nel)
subroutine visc_prony(visc, nprony, nel, nvarvis, uvarvis, epspxx, epspyy, epspzz, epspxy, epspyz, epspzx, sv1, sv2, sv3, sv4, sv5, sv6, timestep, rho, viscmax, soundsp, nvar_damp)
subroutine viscmain(visc, nel, nvarvis, uvarvis, rho, viscmax, soundsp, timestep, epspxx, epspyy, epspzz, epspxy, epspyz, epspzx, depsxx, depsyy, depszz, depsxy, depsyz, depszx, svo1, svo2, svo3, svo4, svo5, svo6, sv1, sv2, sv3, sv4, sv5, sv6, mfxx, mfxy, mfxz, mfyx, mfyy, mfyz, mfzx, mfzy, mfzz, s1, s2, s3, s4, s5, s6, damp_buf, idamp_freq_range, mvsiz, et, young, shear_modulus, ivisc)