36
37
38
41
42
43
44#include "implicit_f.inc"
45
46
47
48#include "scr07_c.inc"
49#include "stati_c.inc"
50#include "statr_c.inc"
51#include "units_c.inc"
52#include "com04_c.inc"
53#include "warn_c.inc"
54#include "param_c.inc"
55#include "task_c.inc"
56
57
58
59 INTEGER ND
61 TYPE(GROUP_) ,DIMENSION(NGRNOD) :: IGRNOD
62
63
64
65 INTEGER K, L, ID, IDNEW, NGR, OK, KORTH
66
68 . dampa,dampb,dampay,dampby,dampaz,dampbz,factb,
69 . damparx,dampbrx,dampary,dampbry,damparz,dampbrz
70
71
72
73
74 INTEGER NGR2USR
76
77 IF (nd>0) THEN
78 IF (idamp0 == 1) THEN
79 IF (nd>1) THEN
80 IF (ispmd==0)THEN
81 WRITE(istdo,*)' ** ERROR: INPUT ERROR IN OPTION DAMP'
82 WRITE(iout,* )' ** ERROR: INPUT ERROR IN OPTION DAMP'
83 WRITE(iout,*) ' V41 FORMAT ALLOWS ONLY ONE /DAMP OPTION'
84 END IF
86 ENDIF
87 dampa0 = 0.
88 dampb0 = 0.
89 READ (iin,'(I10,2E16.9,I8)') idnew,dampa0,dampb0,ngr
90 IF (mcheck==0) THEN
91 idampg =
ngr2usr(ngr,igrnod,ngrnod)
92 IF (idampg==0) ngr = 0
93 dampa = dampa0
94 dampb = dampb0
95 IF (ispmd==0) WRITE(iout,2241) ngr,dampa,dampb
96 ENDIF
97 ELSEIF (ndamp>0) THEN
98 IF (ispmd==0) WRITE (iout,2000) nd
99 DO k=1,nd
100 READ (iin,'(i10,2e20.0,2i10,e20.0)') IDNEW,DAMPA,DAMPB,NGR,
101 . KORTH,FACTB
102
103
104
105
106 IF (NGR/=0) THEN
107 IF (ISPMD==0) THEN
108 WRITE(ISTDO,*)' ** error: input error in option damp'
109 WRITE(IOUT,* )' ** error: input error in option damp'
110 WRITE(IOUT,*) ' not a v44 FORMAT '
111 END IF
112 CALL ARRET(2)
113 ENDIF
114 IF (FACTB == ZERO) FACTB = ONE
115 IF(KORTH==0)THEN
116 IF (ISPMD==0) WRITE (IOUT,2200) IDNEW,DAMPA,DAMPB,FACTB
117
118
119 OK=0
120.AND. IF (NDAMP == 1 IDNEW == 0) THEN
121 ID = DAMPR(1,1)
122 DAMPR(3,1) = DAMPA
123 DAMPR(4,1) = DAMPB
124 DAMPR(16,1)= FACTB
125 OK=1
126 ELSE
127 DO L=1,NDAMP
128 ID = DAMPR(1,L)
129 IF(ID==IDNEW) THEN
130 DAMPR(3,L) = DAMPA
131 DAMPR(4,L) = DAMPB
132 DAMPR(5,L) = DAMPA
133 DAMPR(6,L) = DAMPB
134 DAMPR(7,L) = DAMPA
135 DAMPR(8,L) = DAMPB
136 DAMPR(9,L) = DAMPA
137 DAMPR(10,L) = DAMPB
138 DAMPR(11,L) = DAMPA
139 DAMPR(12,L) = DAMPB
140 DAMPR(13,L) = DAMPA
141 DAMPR(14,L) = DAMPB
142 DAMPR(16,L) = FACTB
143
144
145 OK=1
146 ENDIF
147 ENDDO
148 ENDIF
149 ELSE
150 IF(NRDAMP<15)THEN
151 IERR=IERR+1
152 IF (ISPMD==0) THEN
153 CALL ANCMSG(MSGID=203,ANMODE=ANINFO,
154 . I1=IDNEW)
155 END IF
156 CALL ARRET(2)
157 END IF
158 READ (IIN,'(2e20.0)') DAMPAY,DAMPBY
159 READ (IIN,'(2e20.0)') DAMPAZ,DAMPBZ
160 READ (IIN,'(2e20.0)') DAMPARX,DAMPBRX
161 READ (IIN,'(2e20.0)') DAMPARY,DAMPBRY
162 READ (IIN,'(2e20.0)') DAMPARZ,DAMPBRZ
163 IF (ISPMD==0) WRITE (IOUT,2250) IDNEW,
164 . DAMPA,DAMPB,DAMPAY,DAMPBY,DAMPAZ,DAMPBZ,
165 . DAMPARX,DAMPBRX,DAMPARY,DAMPBRY,DAMPARZ,DAMPBRZ
166
167
168
169
170 OK=0
171 DO L=1,NDAMP
172 ID = DAMPR(1,L)
173 IF(ID==IDNEW) THEN
174 DAMPR(3,L) = DAMPA
175 DAMPR(4,L) = DAMPB
176 DAMPR(5,L) = DAMPAY
177 DAMPR(6,L) = DAMPBY
178 DAMPR(7,L) = DAMPAZ
179 DAMPR(8,L) = DAMPBZ
180 DAMPR(9,L) = DAMPARX
181 DAMPR(10,L) = DAMPBRX
182 DAMPR(11,L) = DAMPARY
183 DAMPR(12,L) = DAMPBRY
184 DAMPR(13,L) = DAMPARZ
185 DAMPR(14,L) = DAMPBRZ
186 DAMPR(16,L) = FACTB
187
188
189 OK=1
190 ENDIF
191 ENDDO
192 END IF
193 IF(OK==0)THEN
194 IERR=IERR+1
195 IF (ISPMD==0) THEN
196 CALL ANCMSG(MSGID=203,ANMODE=ANINFO,
197 . I1=IDNEW)
198 END IF
199 CALL ARRET(2)
200 ENDIF
201 ENDDO
202 ELSE
203 IF (ISPMD==0) THEN
204 CALL ANCMSG(MSGID=204,ANMODE=ANINFO)
205 END IF
206 CALL ARRET(2)
207 ENDIF
208 ENDIF
209
210 RETURN
211
212 2000 FORMAT(' rayleigh
damping' /
213 . ' number of new
damping parameters. . . . . . =
' ,I8 /)
214 2050 FORMAT(' ** error: input error in option damp',/
215 .' wrong number of
damping parameters
for /damp/
id number:
',
216 . I10/)
217 2100 FORMAT(' ** error: input error in option damp',/
218 . ' /damp/
id number:
',I10,' not found
'/)
219 2200 FORMAT('damping id . . . . . . . . . . . . .
',I10
220 . /5X,'alpha. . . . . . . . . . . . . .',1pg20.13
221 . /5x,'BETA . . . . . . . . . . . . . .',1pg20.13
222 . /5x,'MAX TIME STEP FACTOR . . . . . .',1pg20.13/)
223
224
225 2250 FORMAT('DAMPING ID . . . . . . . . . . . . .',i10
226 . /5x,'ALPHAX . . . . . . . . . . . . .',1pg20.13
227 . /5x,'BETAX. . . . . . . . . . . . . .',1pg20.13
228 . /5x,'alphay . . . . . . . . . . . . .',1PG20.13
229 . /5X,'betay. . . . . . . . . . . . . .',1PG20.13
230 . /5X,'alphaz . . . . . . . . . . . . .',1PG20.13
231 . /5X,'betaz. . . . . . . . . . . . . .',1PG20.13
232 . /5X,'alpharx. . . . . . . . . . . . .',1PG20.13
233 . /5X,'betarx . . . . . . . . . . . . .',1PG20.13
234 . /5X,'alphary. . . . . . . . . . . . .',1PG20.13
235 . /5X,'betary . . . . . . . . . . . . .',1PG20.13
236 . /5X,'alpharz. . . . . . . . . . . . .',1PG20.13
237 . /5X,'betarz . . . . . . . . . . . . .',1PG20.13/)
238
239
240 2241 FORMAT(/
242 . ' node group
id(=0 all nodes) . . . . . . . . . .
',I5/
243 . ' alpha . . . . . . . . . . . . . . . . . . . . .
',G14.7/
244 . ' beta . . . . . . . . . . . . . . . . . . . . . . ',G14.7/)
subroutine damping(nodft, nodlt, v, vr, a, ar, damp, ms, in, igrnod, dim, itask, weight, tagslv_rby, wfext)
for(i8=*sizetab-1;i8 >=0;i8--)
integer function ngr2usr(iu, igr, ngr)