49 1 ITASK ,NODFT ,NODLT ,NODXI_SMS,
50 2 MS ,JAD_SMS ,JDI_SMS ,LT_SMS ,INDX1_SMS,
51 3 DIAG_SMS ,IAD_ELEM ,FR_ELEM ,WEIGHT ,V ,
52 4 A ,WV ,WMV ,WDG ,XMOM_SMS ,
53 5 ICODT ,ICODR ,ISKEW ,SKEW ,IBFV ,
54 6 VEL ,NPC ,TF ,X ,D ,
55 7 SENSORS ,IFRAME ,XFRAME ,JADI_SMS ,
56 8 JDII_SMS ,LTI_SMS ,ISKYI_SMS ,MSKYI_SMS ,FR_SMS ,
57 9 FR_RMS ,NPBY ,TAGSLV_RBY_SMS,INTSTAMP,CPTREAC,
58 A NODREAC ,FTHREAC ,AR ,VR ,
59 B DR ,IN ,RBY ,IRBE2 ,LRBE2 ,
60 C IAD_RBE2 ,FR_RBE2M ,NMRBE2 ,R2SIZE ,IRBE3 ,
61 D LRBE3 ,FRBE3 ,IAD_RBE3M,FR_RBE3M ,FR_RBE3MP ,
62 E RRBE3 ,RRBE3_PON,IAD_RBY ,FR_RBY6 ,RBY6 ,
63 F LPBY ,TAGMSR_RBY_SMS,R3SIZE,NODII_SMS,INDX2_SMS,
64 G IBCSCYC ,LBCSCYC ,OUTPUT, MSKYI_FI_SMS,LIST_SMS,
65 H LIST_RMS ,VFI,sz_mw6,mw6)
77#include "implicit_f.inc"
96 TYPE(timer_) ,
INTENT(INOUT) :: TIMERS
97 INTEGER ITASK, NODFT, NODLT, NODXI_SMS(*),
98 . JAD_SMS(*), JDI_SMS(*), INDX1_SMS(*),
99 . IAD_ELEM(2,NSPMD+1) ,FR_ELEM(*), WEIGHT(*),
100 . ICODT(*), ICODR(*), ISKEW(*),
101 . NPC(*), IBFV(NIFV,*),IFRAME(,*),
102 . JADI_SMS(*), JDII_SMS(*),CPTREAC,NODREAC(*),
103 . FR_SMS(NSPMD+1), FR_RMS(NSPMD+1), ISKYI_SMS(*),
104 . NPBY(NNPBY,*), TAGSLV_RBY_SMS(*),
105 . IRBE2(NRBE2L,*), LRBE2(*), IAD_RBE2(*),
106 . FR_RBE2M(*), NMRBE2, R2SIZE, IRBE3(NRBE3L,*), LRBE3(*),
107 . IAD_RBE3M(*) ,FR_RBE3M(*) ,FR_RBE3MP(*),
108 . FR_RBY6(*) ,IAD_RBY(*) ,LPBY(*) ,TAGMSR_RBY_SMS(*),R3SIZE,
109 . NODII_SMS(*),INDX2_SMS(*),IBCSCYC(*),LBCSCYC(*)
111 . MS(*), DIAG_SMS(*), LT_SMS(*),
112 . V(3,*), A(3,*), WV(3,*), WMV(3,*), WDG(*), XMOM_SMS(3,*),
113 . skew(*), x(3,*), d(3,*), tf(*), vel(lfxvelr,*),
114 . xframe(nxframe,*),lti_sms(*), mskyi_sms(*),fthreac(6,*),
115 . ar(3,*), vr(3,*), dr(3,*), in(*), rby(nrby,*),
117 my_real,
dimension(fr_rms(nspmd+1)),
intent(inout) :: mskyi_fi_sms
118 integer,
dimension(fr_sms(nspmd+1)),
intent(inout) ::
119 integer,
dimension(fr_rms(nspmd+1)),
intent(inout) :: LIST_RMS
120 my_real,
DIMENSION(3,FR_RMS(NSPMD+1)+FR_SMS(NSPMD+1) ),
intent(inout):: VFI
121 integer,
intent(in) :: SZ_mw6
122 my_real,
dimension(6,SZ_mw6),
intent(inout) :: MW6
123 DOUBLE PRECISION RRBE3_PON(*)
124 DOUBLE PRECISION RBY6(8,6,NRBYKIN)
125 TYPE(INTSTAMP_DATA) INTSTAMP(*)
126 TYPE (SENSORS_) ,
INTENT(IN) :: SENSORS
127 TYPE(output_),
INTENT(INOUT) :: OUTPUT
131 INTEGER NODFT1_SMS, NODLT1_SMS
132 INTEGER NODFT2_SMS, NODLT2_SMS
133 INTEGER N, IBID, IPRI, INFO, ITHIS, IT, M, MSR, NN, IERROR,
134 . i, iad, nsn, k, ki, nrbdim
136 . rbid, dt05, mas, p1, p2, p3
138 INTEGER,
DIMENSION(:),
ALLOCATABLE :: IMV
140 . ,
DIMENSION(:),
ALLOCATABLE :: mv
142 . ,
DIMENSION(:,:),
ALLOCATABLE :: mv6
147 IF(t1s==tt)ipri=mod(ncycle,iabs(ncpri))
150 IF(tt<output%TH%THIS)ithis=1
151 IF(ipri/=0.AND.ithis/=0.AND.
152 . info<=0.AND.istat==0
153 . .AND.nth==0.AND.nanim==0)
RETURN
157 ALLOCATE(imv(2*nisky_sms+fr_rms(nspmd+1)),
158 . mv(3*(2*nisky_sms+fr_rms(nspmd+1))),
159 . mv6(6,3*(2*nisky_sms+fr_rms(nspmd+1))),
162 ALLOCATE(imv(numnod+nnz_sms+2*nisky_sms+fr_rms(nspmd+1)),
163 . mv(3*(numnod+nnz_sms+2*nisky_sms+fr_rms(nspmd+1))),
164 . mv6(6,3*(numnod+nnz_sms+2*nisky_sms+fr_rms(nspmd+1))),
168 CALL ancmsg(msgid=19,anmode=aninfo,
169 . c1=
'(/DT/.../AMS)')
176 CALL spmd_list_sms(iskyi_sms,fr_sms,fr_rms,list_sms,list_rms,
177 . npby ,tagslv_rby_sms)
184 nodft1_sms=1+itask*nindx1_sms/nthread
185 nodlt1_sms=(itask+1)*nindx1_sms/nthread
187 nodft2_sms=1+itask*nindx2_sms/nthread
188 nodlt2_sms=(itask+1)*nindx2_sms/nthread
193 wv(1,n) = v(1,n)+dt05*a(1,n)
194 wv(2,n) = v(2,n)+dt05*a(2,n)
195 wv(3,n) = v(3,n)+dt05*a(3,n)
198 xmom_sms(1,n)=mas*wv(1,n)
199 xmom_sms(2,n)=mas*wv(2,n)
200 xmom_sms(3,n)=mas*wv(3,n)
202 IF(nodxi_sms(n)/=0.AND.tagslv_rby_sms(n)==0)
THEN
203 wdg(n)=
max(zero,diag_sms(n)-ms(n))
204 ELSEIF(tagslv_rby_sms(n)/=0)
THEN
215 DO n=nodft1_sms,nodlt1_sms
238 1 iskyi_sms,fr_sms,fr_rms,list_rms,mskyi_sms,
244 1 nodft ,nodlt ,numnod ,jad_sms ,jdi_sms ,
245 2 itask ,wdg ,lt_sms ,wv ,wmv ,
246 3 nodft1_sms,nodlt1_sms,indx1_sms,nodxi_sms,iad_elem ,
247 4 fr_elem ,weight ,jadi_sms ,jdii_sms ,lti_sms ,
248 5 iskyi_sms ,mskyi_sms ,fr_sms ,fr_rms ,list_sms ,
249 6 list_rms ,mskyi_fi_sms ,vfi ,imv ,mv ,
250 7 mv6 ,mw6 ,nodft2_sms,nodlt2_sms,indx2_sms,
271 IF(tagmsr_rby_sms(msr) /= 0)
THEN
272 rby6(1,1,m)=wmv(1,msr)*weight(msr)
273 rby6(2,1,m)=wmv(2,msr)*weight(msr)
274 rby6(3,1,m)=wmv(3,msr)*weight(msr)
285 IF(weight(i) /= 0)
THEN
286 rby6(1,1,m)=rby6(1,1,m)+wmv(1,i)
287 rby6(2,1,m)=rby6(2,1,m)+wmv(2,i)
288 rby6(3,1,m)=rby6(3,1,m)+wmv(3,i)
298 1 nrbdim,iad_rby,fr_rby6,iad_rby(nspmd+1),rby6)
308 wmv(1,msr)=rby6(1,1,m)
309 wmv(2,msr)=rby6(2,1,m)
310 wmv(3,msr)=rby6(3,1,m)
317 CALL sms_bcs(nodft1_sms,nodlt1_sms,indx1_sms,icodt ,iskew ,
318 2 skew ,wmv ,nodlt1_sms )
320 IF (nbcscyc>0)
CALL sms_bcscyc(ibcscyc,lbcscyc,skew,x,wmv)
329 2 vel ,diag_sms,x ,skew ,sensors%SENSOR_TAB,
331 4 -(it+1),diag_sms,nodxi_sms,cptreac,
332 5 nodreac,fthreac ,ar ,vr ,dr ,
333 6 in ,rby ,output%TH%WFEXT)
339 DO n=nodft1_sms,nodlt1_sms
341 IF(tagslv_rby_sms(i)==0)
THEN
342 xmom_sms(1,i)=xmom_sms(1,i)+wmv(1,i)
343 xmom_sms(2,i)=xmom_sms(2,i)+wmv(2,i)
344 xmom_sms(3,i)=xmom_sms(3,i)+wmv(3,i)
350 IF (nrbe2>0.OR.r2size>0)
THEN
357 1 irbe2 ,lrbe2 ,wv ,xmom_sms ,ms ,
358 1 skew ,weight ,iad_rbe2,fr_rbe2m,nmrbe2)
361 1 irbe2 ,lrbe2 ,x ,xmom_sms,ar ,
362 1 ms ,in ,skew ,weight ,iad_rbe2,
376 1 irbe3 ,lrbe3 ,x ,xmom_sms,frbe3 ,
377 2 skew ,weight ,iad_rbe3m,fr_rbe3m,fr_rbe3mp,
378 3 rrbe3 ,rrbe3_pon,r3size )
386 DEALLOCATE(imv, mv, mv6)
subroutine sms_encin_2(timers, itask, nodft, nodlt, nodxi_sms, ms, jad_sms, jdi_sms, lt_sms, indx1_sms, diag_sms, iad_elem, fr_elem, weight, v, a, wv, wmv, wdg, xmom_sms, icodt, icodr, iskew, skew, ibfv, vel, npc, tf, x, d, sensors, iframe, xframe, jadi_sms, jdii_sms, lti_sms, iskyi_sms, mskyi_sms, fr_sms, fr_rms, npby, tagslv_rby_sms, intstamp, cptreac, nodreac, fthreac, ar, vr, dr, in, rby, irbe2, lrbe2, iad_rbe2, fr_rbe2m, nmrbe2, r2size, irbe3, lrbe3, frbe3, iad_rbe3m, fr_rbe3m, fr_rbe3mp, rrbe3, rrbe3_pon, iad_rby, fr_rby6, rby6, lpby, tagmsr_rby_sms, r3size, nodii_sms, indx2_sms, ibcscyc, lbcscyc, output, mskyi_fi_sms, list_sms, list_rms, vfi, sz_mw6, mw6)