42
43
44
45 USE sensor_mod
46 USE python_funct_mod
47 USE finter_mixed_mod
48
49
50
51#include "implicit_f.inc"
52#include "comlock.inc"
53
54
55
56#include "com01_c.inc"
57#include "com04_c.inc"
58#include "com08_c.inc"
59#include "task_c.inc"
60#include "param_c.inc"
61
62
63
64 INTEGER ,INTENT(IN) :: NSENSOR
65 INTEGER NPC(*)
66 INTEGER IGRV(NIGRV,*),IB(*)
67 INTEGER WEIGHT(*),ITASK,NRBYAC,(*),NPBY(NNPBY,*)
68
70 . agrv(lfacgrv,*), tf(*), a(3,*), v(3,*), ms(*),
71 . x(3,*), skew(lskew,*), wfextt, rby(nrby,*)
72 TYPE (SENSOR_STR_) ,DIMENSION(NSENSOR) ,INTENT(IN) :: SENSOR_TAB
73 TYPE(PYTHON_), INTENT(INOUT) :: PYTHON
74
75
76
77 INTEGER NL, N1, ISK, N2, IFUNC, K1, K2, , ISENS,K,, IAD,J, PROC, IADF, IADL, ISMOOTH
78 my_real axi, a0, aa, vv, dydx, ts,gama, ma
81 EXTERNAL finter,finter_smooth
82
83 wfextt=zero
86 ENDDO
89 nn=npby(1,k)
90 ms0(nn) = rby(15,k)
91 ENDDO
92
99 ismooth = 0
100 IF (ifunc > 0) ismooth = npc(2*nfunct+ifunc+1)
101
102 iadf = iad+itask*nn
103 iadl = iad-1+(itask+1)*nn
104 isens=0
105 DO k=1,nsensor
106 IF(igrv(6,
nl)== sensor_tab(k)%SENS_ID) isens=k
107 ENDDO
108 IF(isens==0)THEN
109 ts=tt
110 ELSE
111 ts = tt - sensor_tab(isens)%TSTART
112 IF(ts<0.0)cycle
113 ENDIF
114
115 IF (ifunc > 0) THEN
116 IF (ismooth <= 0) THEN
117 a0 = agrv(1,
nl)*finter_mixed(python,nfunct,ifunc,(ts-dt1)*agrv(2,
nl),npc,tf)
118 gama = agrv(1,
nl)*finter_mixed(python,nfunct,ifunc,ts*agrv(2,
nl),npc,tf)
119 ELSE
120 a0 = agrv(1,
nl)*finter_smooth(ifunc,(ts-dt1)*agrv(2,
nl),npc,tf,dydx)
121 gama = agrv(1,
nl)*finter_smooth(ifunc,ts*agrv(2,
nl),npc,tf,dydx)
122 ENDIF
123 ELSE
126 ENDIF
127
128 proc = ispmd + 1
129 aa = gama
130 IF(n2d==1.AND.isk<=1)THEN
131
132 DO j=iad,iad+nn-1
133 n1=iabs(ib(j))
134 axi=x(2,n1)
135 ma=aa*ms0(n1)
136 a(n2,n1)=a(n2,n1)+ma
137 IF(ib(j)>0) wfextt=wfextt+half*(a0+aa)*ms(n1)*v(n2,n1)*axi*weight(n1)
138 ENDDO
139 ELSEIF(n2d==1.AND.isk>1)THEN
140 k1=3*n2-2
141 k2=3*n2-1
142 k3=3*n2
143
144 DO j=iad,iad+nn-1
145 n1=iabs(ib(j))
146 axi=x(2,n1)
147 vv = skew(k1,isk)*v(1,n1)+skew(k2,isk)*v(2,n1)+skew(k3,isk)*v(3,n1)
148 ma=aa*ms0(n1)
149 a(1,n1)=a(1,n1)+skew(k1,isk)*ma
150 a(2,n1)=a(2,n1)+skew(k2,isk)*ma
151 a(3,n1)=a(3,n1)+skew(k3,isk)*ma
152 IF(ib(j)>0) wfextt=wfextt+half*(a0+aa)*ms(n1)*vv*axi*weight(n1)
153 ENDDO
154 ELSEIF(isk<=1)THEN
155
156 DO j=iad,iad+nn-1
157 n1=iabs(ib(j))
158 ma=aa*ms0(n1)
159 a(n2,n1)=a(n2,n1)+ma
160 IF(ib(j)>0) wfextt=wfextt+half*(a0+aa)*ms(n1)*v(n2,n1)*weight(n1)
161 ENDDO
162 ELSE
163 k1=3*n2-2
164 k2=3*n2-1
165 k3=3*n2
166#include "vectorize.inc"
167 DO j=iad,iad+nn-1
168 n1=iabs(ib(j))
169 ma=aa*ms0(n1)
170 vv = skew(k1,isk)*v(1,n1)+skew(k2,isk)*v(2,n1)+skew(k3,isk)*v(3,n1)
171 a(1,n1)=a(1,n1)+skew(k1,isk)*ma
172 a(2,n1)=a(2,n1)+skew(k2,isk)*ma
173 a(3,n1)=a(3,n1)+skew(k3,isk)*ma
174 IF(ib(j)>0) wfextt=wfextt+half*(a0+aa)*ms(n1)*vv*weight(n1)
175 ENDDO
176 ENDIF
177 ENDDO
178
179 RETURN
character *2 function nl()