35
36
37
39
40
41
42
43
44
45
46
47
48#include "implicit_f.inc"
49#include "comlock.inc"
50
51
52
53#include "com04_c.inc"
54#include "com08_c.inc"
55#include "param_c.inc"
56
57
58
59 INTEGER NPBY(NNPBY,*)
60
62 . x(3,*) ,v(3,*) ,vr(3,*) ,a(3,*) ,ar(3,*) ,
63 . rby(nrby,*) ,in(*) ,ms(*),
64 . bufsf(*)
65 TYPE (SURF_) , DIMENSION(NSURF) :: IGRSURF
66
67
68
69 INTEGER ISU, ADRSRF, IM, NRBOD
71 . vi(3), vm(3), vrm(3)
72
73
74
75
76 DO isu=1,nsurf
77
78 IF ( igrsurf(isu)%TYPE==101 ) THEN
79 nrbod=igrsurf(isu)%NB_MADYMO
80 IF ( nrbod/=0 ) THEN
81
82
83
84
85 im=npby(1,nrbod)
86 adrsrf=igrsurf(isu)%IAD_BUFR
87 bufsf(adrsrf+16)=x(1,im)
88 bufsf(adrsrf+17)=x(2,im)
89 bufsf(adrsrf+18)=x(3,im)
90 vm(1) =v(1,im) +a(1,im)*dt12
91 vm(2) =v(2,im) +a(2,im)*dt12
92 vm(3) =v(3,im) +a(3,im)*dt12
93 vrm(1)=vr(1,im)+ar(1,im)*dt12
94 vrm(2)=vr(2,im)+ar(2,im)*dt12
95 vrm(3)=vr(3,im)+ar(3,im)*dt12
96 bufsf(adrsrf+19)= vm(1)
97 bufsf(adrsrf+20)= vm(2)
98 bufsf(adrsrf+21)= vm(3)
99 bufsf(adrsrf+22)=vrm(1)
100 bufsf(adrsrf+23)=vrm(2)
101 bufsf(adrsrf+24)=vrm(3)
102
103
104 bufsf(adrsrf+4)=bufsf(adrsrf+4)+vm(1)*dt2
105 bufsf(adrsrf+5)=bufsf(adrsrf+5)+vm(2)*dt2
106 bufsf(adrsrf+6)=bufsf(adrsrf+6)+vm(3)*dt2
107 CALL rotbmr(vrm,bufsf(adrsrf+7),dt2)
108 END IF
109 END IF
110 END DO
111
112
113
114
115 200 CONTINUE
116 RETURN
subroutine rotbmr(vr, rby, dt)