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
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 IF (ndamp == 1 .AND. idnew == 0) THEN
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
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
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
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
200 ENDIF
201 ENDDO
202 ELSE
203 IF (ispmd==0) THEN
204 CALL ancmsg(msgid=204,anmode=aninfo)
205 END IF
207 ENDIF
208 ENDIF
209
210 RETURN
211
212 2000 FORMAT(' RAYLEIGH DAMPING' /
213 . ' NUMBER OF NEW DAMPING PARAMETERS. . . . . . =' ,i8 /)
214 2200 FORMAT('DAMPING ID . . . . . . . . . . . . .',i10
215 . /5x,'ALPHA. . . . . . . . . . . . . .',1pg20.13
216 . /5x,'BETA . . . . . . . . . . . . . .',1pg20.13
217 . /5x,'MAX TIME STEP FACTOR . . . . . .',1pg20.13/)
218
219
220 2250 FORMAT('DAMPING ID . . . . . . . . . . . . .',i10
221 . /5x,'ALPHAX . . . . . . . . . . . . .',1pg20.13
222 . /5x,'BETAX. . . . . . . . . . . . . .',1pg20.13
223 . /5x,'ALPHAY . . . . . . . . . . . . .',1pg20.13
224 . /5x,'BETAY. . . . . . . . . . . . . .',1pg20.13
225 . /5x,'ALPHAZ . . . . . . . . . . . . .',1pg20.13
226 . /5x,'BETAZ. . . . . . . . . . . . . .',1pg20.13
227 . /5x,'ALPHARX. . . . . . . . . . . . .',1pg20.13
228 . /5x,'BETARX . . . . . . . . . . . . .',1pg20.13
229 . /5x,'ALPHARY. . . . . . . . . . . . .',1pg20.13
230 . /5x,'BETARY . . . . . . . . . . . . .',1pg20.13
231 . /5x,'ALPHARZ. . . . . . . . . . . . .',1pg20.13
232 . /5x,'BETARZ . . . . . . . . . . . . .',1pg20.13/)
233
234
235 2241 FORMAT(/
236 . ' RAYLEIGH DAMPING '/
237 . ' NODE GROUP ID (=0 ALL NODES) . . . . . . . . . . ',i5/
238 . ' ALPHA . . . . . . . . . . . . . . . . . . . . . ',g14.7/
239 . ' BETA . . . . . . . . . . . . . . . . . . . . . . ',g14.7/)
integer function ngr2usr(iu, igr, ngr)
subroutine ancmsg(msgid, msgtype, anmode, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, r1, r2, r3, r4, r5, r6, r7, r8, r9, c1, c2, c3, c4, c5, c6, c7, c8, c9, prmode)