5 &(u,v,w,dt,at,x,y,z,ikle,ifabor,lt,ielm,ielmu,ndp,ndp2,
7 & nelem,nelmax,surdet,xflot,yflot,zflot,
8 & shpflo,shzflo,tagflo,clsflo,eltflo,etaflo,
9 & nflot,nflot_max,mesh,
10 & isub,dx,dy,dz,eltbuf,shpbuf,shzbuf,sizebuf,stocha,visc,
12 & aalgae,dalgae,ralgae,ealgae,talgae,yalgae,
13 & rel_algae,tw1_algae,tw2_algae,a_algae,
148 & init_alg, sizebuf2_d,buff_1d_d,
149 & buff_2d_d, alg_dislodge,
161 INTEGER ,
INTENT(IN) :: NPOIN,LT,IELM,IELMU,NDP,NELEM
162 INTEGER ,
INTENT(IN) :: NELMAX,SIZEBUF,NPOIN2
163 INTEGER ,
INTENT(IN) :: NFLOT_MAX,STOCHA,NPLAN,TRANSF
164 INTEGER ,
INTENT(INOUT) :: NFLOT
165 INTEGER ,
INTENT(IN) :: NDP2
166 DOUBLE PRECISION,
INTENT(IN) :: DT,AT
167 DOUBLE PRECISION,
INTENT(IN) :: U(*),V(*),W(*)
168 DOUBLE PRECISION,
INTENT(IN) :: X(npoin),Y(npoin),Z(npoin)
169 INTEGER ,
INTENT(IN) :: IKLE(nelmax,ndp2)
170 INTEGER ,
INTENT(IN) :: IFABOR(*)
171 DOUBLE PRECISION,
INTENT(IN) :: SURDET(nelem),ZSTAR(nplan)
172 DOUBLE PRECISION,
INTENT(INOUT) :: XFLOT(nflot_max),DX(nflot_max)
173 DOUBLE PRECISION,
INTENT(INOUT) :: YFLOT(nflot_max),DY(nflot_max)
174 DOUBLE PRECISION,
INTENT(INOUT) :: ZFLOT(nflot_max),DZ(nflot_max)
175 INTEGER ,
INTENT(INOUT) :: TAGFLO(nflot_max)
176 INTEGER ,
INTENT(INOUT) :: CLSFLO(nflot_max)
177 INTEGER ,
INTENT(INOUT) :: ELTFLO(nflot_max)
178 INTEGER ,
INTENT(INOUT) :: ETAFLO(nflot_max)
179 INTEGER ,
INTENT(INOUT) :: ELTBUF(sizebuf)
180 INTEGER ,
INTENT(INOUT) :: ISUB(nflot_max)
181 DOUBLE PRECISION,
INTENT(INOUT) :: SHPFLO(ndp,nflot_max)
182 DOUBLE PRECISION,
INTENT(INOUT) :: SHZFLO(nflot_max)
183 DOUBLE PRECISION,
INTENT(INOUT) :: SHPBUF(ndp,sizebuf)
184 DOUBLE PRECISION,
INTENT(INOUT) :: SHZBUF(sizebuf)
185 TYPE(bief_obj) ,
INTENT(IN) :: VISC
186 TYPE(bief_mesh) ,
INTENT(INOUT) :: MESH
187 LOGICAL ,
OPTIONAL,
INTENT(IN) :: AALGAE
188 DOUBLE PRECISION,
OPTIONAL,
INTENT(IN) :: AK(*),EP(*)
189 DOUBLE PRECISION,
OPTIONAL,
INTENT(IN) :: ORBVEL(*)
190 DOUBLE PRECISION,
OPTIONAL,
INTENT(IN) :: H(npoin)
191 DOUBLE PRECISION,
OPTIONAL,
INTENT(IN) :: DALGAE(*),RALGAE(*)
192 DOUBLE PRECISION,
OPTIONAL,
INTENT(IN) :: EALGAE(*)
193 DOUBLE PRECISION,
OPTIONAL,
INTENT(IN) :: TALGAE(*)
194 DOUBLE PRECISION,
OPTIONAL,
INTENT(IN) :: TW1_ALGAE(*)
195 DOUBLE PRECISION,
OPTIONAL,
INTENT(IN) :: TW2_ALGAE(*)
196 DOUBLE PRECISION,
OPTIONAL,
INTENT(IN) :: A_ALGAE(*)
197 INTEGER ,
OPTIONAL,
INTENT(IN) :: YALGAE(*)
198 INTEGER ,
OPTIONAL,
INTENT(IN) :: REL_ALGAE(*)
202 INTEGER IFLOT,FRE(1),FREBUF(1),ELT,ETF
203 INTEGER N1,N2,N3,N4,N5,N6,NOMB,SENS,NRK
206 DOUBLE PRECISION TW0, TW1, TW2, A_ALG
207 DOUBLE PRECISION,
ALLOCATABLE :: TW(:)
211 CHARACTER(LEN=11) EXTENS
228 IF(
PRESENT(aalgae))
THEN 234 IF(.NOT.
PRESENT(ak).OR.
235 & .NOT.
PRESENT(ep).OR.
236 & .NOT.
PRESENT(h).OR.
237 & .NOT.
PRESENT(dalgae).OR.
238 & .NOT.
PRESENT(ralgae).OR.
239 & .NOT.
PRESENT(ealgae).OR.
240 & .NOT.
PRESENT(talgae).OR.
241 & .NOT.
PRESENT(yalgae))
THEN 242 WRITE(
lu,*)
'DERIVE: MISSING ARGUMENTS FOR ALGAE' 259 ssigma=ielm.EQ.41.AND.transf.NE.0.AND.transf.NE.5
261 IF(ielm.NE.11.AND.ielm.NE.41)
THEN 263 124
FORMAT(1x,
'DERIVE : UNEXPECTED TYPE OF ELEMENT: ',1i6)
281 IF(algae.AND.alg_dislodge)
THEN 282 ALLOCATE(tw(nflot_max))
297 IF(algae.AND.init_alg)
THEN 300 IF(nflot_max.GT.sizebuf)
THEN 302 ALLOCATE(buff_1d_d(sizebuf2_d))
303 ALLOCATE(buff_2d_d(ndp,sizebuf2_d))
304 ALLOCATE(buff_elt_i(sizebuf2_d))
316 &
h_flu%R,npoin,ielm,ndp,ndp2,nplan,nelmax,ikle,shzbuf,
317 & ielmu,npoin,u,v,w,ak,ep,h)
320 &
h_flu%R,npoin,ielm,ndp,ndp2,nplan,nelmax,ikle,shzbuf,
321 & ielmu,npoin,u,v,w,ak,ep,h)
322 ELSEIF(ielmu.EQ.12)
THEN 325 &
h_flu%R,npoin,ielm,ndp,ndp2,nplan,nelmax,ikle,shzbuf,
326 & ielmu,npoin+nelmax,u,v,w,ak,ep,h)
329 &
h_flu%R,npoin,ielm,ndp,ndp2,nplan,nelmax,ikle,shzbuf,
330 & ielmu,npoin+nelmax,u,v,w,ak,ep,h)
338 zflot(iflot)=zstar(etf)+ shzflo(iflot)*
339 & (zstar(etf+1)-zstar(etf))
354 i_a_gl%I(iflot)=tagflo(iflot)
360 &
h_flu%R,npoin,ielm,ndp,ndp2,nplan,nelmax,ikle,shzbuf,
361 & ielmu,npoin,u,v,w,ak,ep,h)
365 & eltflo,nflot,npoin,nplan,ielmu,ikle,nelmax,
368 ELSEIF(ielmu.EQ.12)
THEN 371 &
h_flu%R,npoin,ielm,ndp,ndp2,nplan,nelmax,ikle,shzbuf,
372 & ielmu,npoin+nelmax,u,v,w,ak,ep,h)
376 & eltflo,nflot,npoin+nelmax,nplan,ielmu,ikle,nelmax,
382 parclss%I(iflot) = clsflo(iflot)
387 rel_alg = rel_algae(clsflo(iflot))
388 IF (rel_alg.EQ.2)
THEN 389 tw1 = tw1_algae(clsflo(iflot))
390 tw2 = tw2_algae(clsflo(iflot))
391 a_alg = a_algae(clsflo(iflot))
392 teff%R(iflot) =
teff%R(iflot) + dt * tw(iflot)
393 tw0 = tw2 + (tw1 - tw2) * exp(-a_alg *
teff%R(iflot))
394 IF (tw(iflot).GT.tw0)
THEN 401 CALL disp_algae(nflot_max,nflot,mesh%DIM1,dt,at,
406 &
v_z%R,xflot,yflot,zflot,lt,dalgae,ralgae,ealgae,
407 & talgae,yalgae,rel_algae)
412 IF(nflot_max.GT.sizebuf)
THEN 415 & xflot,yflot,zflot,zflot,dx,dy,dz,dz,z,
416 & shpflo,shzflo,shzflo,
417 & surdet,dt,ikle,ifabor,eltflo,etaflo,
418 & fre,buff_elt_i,isub,ielm,ielmu,
419 & nelem,nelmax,nomb,npoin2,ndp,nrk,
420 & nplan,1,mesh,nflot,npoin2,sens,
421 & buff_2d_d,buff_1d_d,buff_1d_d,frebuf,sizebuf2_d,
422 & apost=.true.,asigma=ssigma,aalg=algae)
426 & xflot,yflot,zflot,zflot,dx,dy,dz,dz,z,
427 & shpflo,shzflo,shzflo,
428 & surdet,dt,ikle,ifabor,eltflo,etaflo,
429 & fre,eltbuf,isub,ielm,ielmu,
430 & nelem,nelmax,nomb,npoin2,ndp,nrk,
431 & nplan,1,mesh,nflot,npoin2,sens,
432 & shpbuf,shzbuf,shzbuf,frebuf,sizebuf,
433 & apost=.true.,asigma=ssigma,aalg=algae)
436 CALL scaract(
svoid_derive,
svoid_derive,u,v,w,w,x,y,zstar,zstar,
437 & xflot,yflot,zflot,zflot,
438 & dx,dy,dz,dz,z,shpflo,shzflo,shzflo,surdet,dt,
439 & ikle,ifabor,eltflo,etaflo,
440 & fre,eltbuf,isub,ielm,ielmu,nelem,nelmax,
441 & nomb,npoin2,ndp,nrk,
442 & nplan,1,mesh,nflot,npoin2,sens,
443 & shpbuf,shzbuf,shzbuf,frebuf,sizebuf,
444 & apost=.true.,asigma=ssigma,astocha=stocha,
451 IF(ncsize.GT.1.AND.nflot.GT.0)
THEN 460 IF(isub(iflot).EQ.ipid)
THEN 466 xflot(iflot)=shpflo(1,iflot)*x(n1)
467 & +shpflo(2,iflot)*x(n2)
468 & +shpflo(3,iflot)*x(n3)
469 yflot(iflot)=shpflo(1,iflot)*y(n1)
470 & +shpflo(2,iflot)*y(n2)
471 & +shpflo(3,iflot)*y(n3)
475 ELSEIF(ielm.EQ.41)
THEN 477 IF(isub(iflot).EQ.ipid)
THEN 480 n1=ikle(elt,1)+npoin2*(etaflo(iflot)-1)
481 n2=ikle(elt,2)+npoin2*(etaflo(iflot)-1)
482 n3=ikle(elt,3)+npoin2*(etaflo(iflot)-1)
483 n4=ikle(elt,1)+npoin2* etaflo(iflot)
484 n5=ikle(elt,2)+npoin2* etaflo(iflot)
485 n6=ikle(elt,3)+npoin2* etaflo(iflot)
486 xflot(iflot)=shpflo(1,iflot)*x(n1)
487 & +shpflo(2,iflot)*x(n2)
488 & +shpflo(3,iflot)*x(n3)
489 yflot(iflot)=shpflo(1,iflot)*y(n1)
490 & +shpflo(2,iflot)*y(n2)
491 & +shpflo(3,iflot)*y(n3)
492 zflot(iflot)=(z(n1)*shpflo(1,iflot)
493 & +z(n2)*shpflo(2,iflot)
494 & +z(n3)*shpflo(3,iflot))*(1.d0-shzflo(iflot))
495 & +(z(n4)*shpflo(1,iflot)
496 & +z(n5)*shpflo(2,iflot)
497 & +z(n6)*shpflo(3,iflot))*shzflo(iflot)
507 IF(ncsize.GT.1.AND.algae)
THEN 508 IF(nflot_max.GT.sizebuf)
THEN 510 & buff_elt_i,nflot,nflot_max,
516 & eltbuf,nflot,nflot_max,
528 & etaflo,isub,tagflo,clsflo,ndp,nflot,nflot_max,
529 & mesh,nplan,dx=dx,dy=dy,dz=dz)
532 & etaflo,isub,tagflo,clsflo,ndp,nflot,nflot_max,
549 IF(nflot.GT.0.AND.ncsize.GT.1)
THEN 550 IF(eltflo(iflot).LE.0.OR.isub(iflot).NE.ipid)
THEN 563 & yflot,zflot,tagflo,clsflo,shpflo,shzflo,eltflo,
564 & etaflo,mesh%TYPELM,
565 & dx=dx,dy=dy,dz=dz,isub=isub,
569 & yflot,zflot,tagflo,clsflo,shpflo,shzflo,eltflo,
570 & etaflo,mesh%TYPELM,
575 IF(iflot.LE.nflot)
GO TO 11
580 dx_a%R(iflot)=dx(iflot)
581 dy_a%R(iflot)=dy(iflot)
582 dz_a%R(iflot)=dz(iflot)
586 IF(iflot.LE.nflot)
GO TO 11
596 IF(eltflo(iflot).LE.0)
THEN 606 & yflot,zflot,tagflo,clsflo,shpflo,shzflo,eltflo,
607 & etaflo,mesh%TYPELM,dx=dx,dy=dy,dz=dz,
611 & yflot,zflot,tagflo,clsflo,shpflo,shzflo,eltflo,
612 & etaflo,mesh%TYPELM)
616 IF(iflot.LE.nflot)
GO TO 10
621 dx_a%R(iflot)=dx(iflot)
622 dy_a%R(iflot)=dy(iflot)
623 dz_a%R(iflot)=dz(iflot)
627 IF(iflot.LE.nflot)
GO TO 10
type(bief_obj) svoid_derive
subroutine, public scaract(U, UTILD, UCONV, VCONV, WCONV, FRCONV, X, Y, ZSTAR, FREQ, XCONV, YCONV, ZCONV, FCONV, DX, DY, DZ, DF, Z, SHP, SHZ, SHF, SURDET, DT, IKLE, IFABOR, ELT, ETA, FRE, ELTBUF, ISUB, IELM, IELMU, NELEM, NELMAX, NOMB, NPOIN2, NDP, NRK, NPLAN, NF, MESH, NPLOT, DIM1U, SENS, SHPBUF, SHZBUF, SHFBUF, FREBUF, SIZEBUF, APOST, APERIO, AYA4D, ASIGMA, ASTOCHA, AVISC, AALG)
subroutine, public del_particle(TAG, NFLOT, NFLOT_MAX, XFLOT, YFLOT, ZFLOT, TAGFLO, CLSFLO, SHPFLO, SHZFLO, ELTFLO, ETAFLO, IELM, DX, DY, DZ, ISUB, TEFF, DISLODGE)
subroutine, public interp_algae(NP, NP_TOT, SHP_P, SHZ_P, ELT_P, U_X_AV, U_Y_AV, U_Z_AV, K_AV, EPS_AV, H_FLU, NPOIN, IELM, NDP, NDP2, NPLAN, NELMAX, IKLE, W1, IELMU, NPOINU, UCONV, VCONV, WCONV, AK, EP, H)
subroutine, public bief_interp(U, UTILD, SHP, NDP, SHZ, ETA, SHF, FRE, ELT, NP, NPOIN2, NPLAN, IELM, IKLE, NELMAX, PERIO, YA4D)
integer function p_isum(MYPART)
type(bief_obj), target parclss
subroutine transf(FA, FR, XK, KNEW, NEWF, NEWF1, TAUX1, TAUX2, NPOIN2, NDIRE, NF)
subroutine, public send_info_alg(ISUB, TAG, CLS, TEFF, DISLODGE, FLAG, NPLOT, NPLOT_MAX, U_X_AV, U_Y_AV, U_Z_AV, K_AV, EPS_AV, H_FLU, U_X, U_Y, U_Z, V_X, V_Y, V_Z, NWIN, NDIR, PSI)
subroutine, public send_particles(X, Y, Z, SHP, SHZ, ELT, ETA, ISUB, TAG, CLS, NDP, NPLOT, NPLOT_MAX, MESH, NPLAN, DX, DY, DZ)
subroutine derive(U, V, W, DT, AT, X, Y, Z, IKLE, IFABOR, LT, IELM, IELMU, NDP, NDP2, NPOIN, NPOIN2, NELEM, NELMAX, SURDET, XFLOT, YFLOT, ZFLOT, SHPFLO, SHZFLO, TAGFLO, CLSFLO, ELTFLO, ETAFLO, NFLOT, NFLOT_MAX, MESH, ISUB, DX, DY, DZ, ELTBUF, SHPBUF, SHZBUF, SIZEBUF, STOCHA, VISC, NPLAN, ZSTAR, TRANSF, AALGAE, DALGAE, RALGAE, EALGAE, TALGAE, YALGAE, REL_ALGAE, TW1_ALGAE, TW2_ALGAE, A_ALGAE, ORBVEL, AK, EP, H)
subroutine, public disp_algae(NA_TOT, NA, NDIM, DT, AT, U_X_AV_0, U_Y_AV_0, U_Z_AV_0, K_AV_0, EPS_AV_0, H_FLU, U_X_AV, U_Y_AV, U_Z_AV, U_X_0, U_Y_0, U_Z_0, V_X_0, V_Y_0, V_Z_0, DX_A, DY_A, DZ_A, ELEM_ALG, U_X, U_Y, U_Z, V_X, V_Y, V_Z, X_A, Y_A, Z_A, LT, DALGAE, RALGAE, EALGAE, TALGAE, YALGAE, REL_ALGAE)
double precision, dimension(:,:,:), allocatable psi
subroutine, public del_info_alg(TAG, NFLOT, NFLOT_MAX, IELM, TAGFLO, CLSFLO, FLAGFLO, V_X, V_Y, V_Z, U_X, U_Y, U_Z, U_X_AV, U_Y_AV, U_Z_AV, K_AV, EPS_AV, H_FLU, NWIN, NDIR, PSI)