5 &( fn , ftild , nomb , uconv , vconv , wconv , frconv ,
7 & dt , ifamas , ielm , npoin2 , nplan , jf , nf ,
8 & msk , shp , shz , shf , tb , elt ,
9 & eta , fre , it3 , isub , frebuf, mesh ,
10 & nelem2, nelmax2, ikle2 , surdet2, am1 , rhs , slv ,
11 & agglo , listin , ngauss, unsv , optcha, post , perio ,
12 & ya4d , sigma , stocha, visc )
128 & t3weak,t4weak,t5weak,t6weak,
129 & t7weak,shpwea,ftild_weak,shpbuf,
137 INTEGER ,
INTENT(IN) :: NOMB,OPTCHA,NGAUSS
138 INTEGER ,
INTENT(IN) :: NPLAN,JF,NF,NELEM2
139 INTEGER ,
INTENT(IN) :: NPOIN2,NELMAX2
140 INTEGER ,
INTENT(INOUT) :: IELM,FRE(*)
142 INTEGER ,
INTENT(INOUT) :: ELT(*)
143 INTEGER ,
INTENT(INOUT) :: ETA(*)
144 INTEGER ,
INTENT(INOUT) :: IT3(*)
145 INTEGER ,
INTENT(INOUT) :: ISUB(*)
146 INTEGER ,
INTENT(INOUT) :: FREBUF(*)
147 TYPE(bief_obj) ,
INTENT(IN) :: FN,UCONV,VCONV,WCONV
148 TYPE(bief_obj) ,
INTENT(IN) :: FRCONV
149 TYPE(bief_obj) ,
INTENT(IN) :: ZSTAR,IKLE2
150 TYPE(bief_obj) ,
INTENT(IN) :: SURDET2,FREQ,UNSV
151 TYPE(bief_obj) ,
INTENT(INOUT) :: TB,SHF,AM1,RHS
152 TYPE(bief_obj) ,
INTENT(INOUT),
TARGET :: FTILD,SHP,SHZ
153 LOGICAL ,
INTENT(IN) :: MSK,LISTIN
154 DOUBLE PRECISION,
INTENT(IN) :: DT,AGGLO
155 TYPE(bief_mesh) ,
INTENT(INOUT) :: MESH
156 TYPE(bief_obj) ,
INTENT(IN),
TARGET :: IFAMAS
157 TYPE(slvcfg) ,
INTENT(INOUT) :: SLV
159 LOGICAL,
INTENT(IN),
OPTIONAL :: POST,PERIO,YA4D,SIGMA
160 INTEGER,
INTENT(IN),
OPTIONAL :: STOCHA
161 TYPE(bief_obj),
INTENT(IN),
OPTIONAL,
TARGET :: VISC
165 INTEGER NPOIN,IELMU,SIZEBUF,ASTOCHA
169 TYPE(bief_obj),
POINTER :: T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,AVISC
170 TYPE(bief_obj),
POINTER :: PT_FTILD,PT_SHPBUF
171 INTEGER,
DIMENSION(:),
POINTER :: IFA
172 DOUBLE PRECISION,
DIMENSION(:),
POINTER :: PT_SHP,PT_SHZ
173 INTEGER I,NPT,DIM1F,IPLAN,NG,NRK
174 LOGICAL QUAD,QUAB,APOST,APERIO,AYA4D,ASIGMA
188 ELSEIF(ielm.EQ.41)
THEN 189 ng=ngauss*nelem2*(nplan-1)
192 CALL allblo(ftild_weak,
'FTIWEA')
194 &
'FTW ',ng,1,0,mesh)
216 IF(ncsize.GT.1.AND.ielm.EQ.41)
THEN 231 IF(
PRESENT(post))
THEN 239 IF(
PRESENT(perio))
THEN 247 IF(
PRESENT(ya4d))
THEN 255 IF(
PRESENT(sigma))
THEN 263 IF(
PRESENT(stocha))
THEN 268 IF(
PRESENT(visc))
THEN 271 IF(astocha.NE.0)
THEN 272 WRITE(
lu,*)
'CHARAC: WITH STOCHASTIC DIFFUSION' 273 WRITE(
lu,*)
' AN ARGUMENT VISC MUST BE GIVEN' 317 WRITE(
lu,*)
'SIZE OF BLOCK TB:',tb%N
318 WRITE(
lu,*)
'TOO SMALL IN CHARAC' 319 WRITE(
lu,*)
'10 REQUESTED' 339 sizebuf=(mesh%M%X%MAXDIM1*mesh%M%X%MAXDIM2)/3
341 sizebuf=min(sizebuf,t7%MAXDIM1)
343 sizebuf=min(sizebuf,npoin)
354 IF(fn%TYPE.EQ.4)
THEN 356 IF(fn%ADR(i)%P%ELM.EQ.12) quab = .true.
357 IF(fn%ADR(i)%P%ELM.EQ.13) quad = .true.
358 npt=max(npt,fn%ADR(i)%P%DIM1)
360 ELSEIF(fn%TYPE.EQ.2)
THEN 361 IF(fn%ELM.EQ.12) quab = .true.
362 IF(fn%ELM.EQ.13) quad = .true.
365 IF(quab.AND.quad)
THEN 366 WRITE(
lu,*)
'CHARAC: QUADRATIC AND QUASI-BUBBLE CANNOT BE MIXED' 375 IF(3*npt.GT.shp%MAXDIM1*shp%MAXDIM2)
THEN 376 WRITE(
lu,*)
'SIZE OF SHP:',shp%MAXDIM1*shp%MAXDIM2
377 WRITE(
lu,*)
'TOO SMALL IN CHARAC, ',3*npt
378 WRITE(
lu,*)
'REQUESTED' 383 IF(max(npoin2,npt).GT.t2%MAXDIM1)
THEN 384 WRITE(
lu,*)
'SIZE OF T2:',t2%MAXDIM1
385 WRITE(
lu,*)
'TOO SMALL IN CHARAC, ',max(npoin2,npt)
386 WRITE(
lu,*)
'REQUESTED' 407 CALL char_gauss(t1%R,t2%R,t3%R,shpwea%R,shzwea%R,elt,eta,
409 & ikle2%I,npoin2,nelem2,nelmax2,ng,ngauss,ielm,
413 ELSEIF(ielm.EQ.41)
THEN 420 CALL os(
'X=Y ',x=t1,y=mesh%X)
421 CALL os(
'X=Y ',x=t2,y=mesh%Y)
425 CALL chgdis(t1,ielm,13,mesh)
426 CALL chgdis(t2,ielm,13,mesh)
428 CALL chgdis(t1,ielm,12,mesh)
429 CALL chgdis(t2,ielm,12,mesh)
433 CALL gtsh11(shp%R,elt,ikle2%I,mesh%ELTCAR%I,npoin2,
434 & nelem2,nelmax2,mesh%NSEG,quab,quad)
436 ELSEIF(ielm.EQ.41)
THEN 439 DO i= (iplan-1)*npoin2+1,iplan*npoin2
440 t3%R(i)=zstar%R(iplan)
445 CALL ov(
'X=C ', x=t9%R, c=freq%R(jf),
448 CALL gtsh41(shp%R,shz%R,shf%R,wconv%R,frconv%R,
449 & elt,eta,fre,ikle2%I,mesh%ELTCAR%I,
450 & npoin2,nelmax2,nplan,jf,nf,aya4d)
453 WRITE(
lu,*)
'ELEMENT NOT IMPLEMENTED IN CHARAC: ',ielm
460 CALL scaract(fn,pt_ftild,uconv%R,vconv%R,wconv%R,frconv%R,
461 & mesh%X%R,mesh%Y%R,zstar%R,freq%R,
463 & t1%R ,t2%R ,t3%R ,t9%R ,t4%R,t5%R,t6%R,t8%R,
465 & mesh%Z%R,pt_shp,pt_shz,shf%R,
466 & surdet2%R,dt,ikle2%I,ifa,elt,
468 & ielm,ielmu,nelem2,nelmax2,nomb,npoin2,
469 & 3,nrk,nplan,nf,mesh,npt,dim1f,-1,
471 & pt_shpbuf%R,t7%R ,t10%R,frebuf,sizebuf,
472 & apost,aperio,aya4d,asigma,astocha,avisc)
477 IF(ftild%TYPE.EQ.2)
THEN 478 CALL char_weak(ftild,ftild_weak,mesh%SURFAC%R,ikle2%I,
479 & npoin2,nelem2,nelmax2,ng,ngauss,
480 & mesh,t2,tb,agglo,ielm,nplan,mesh%Z%R,
481 & rhs,am1,slv,unsv,listin,.true.)
482 ELSEIF(ftild%TYPE.EQ.4)
THEN 484 CALL char_weak(ftild%ADR(i)%P,ftild_weak%ADR(i)%P,
485 & mesh%SURFAC%R,ikle2%I,
486 & npoin2,nelem2,nelmax2,ng,ngauss,
487 & mesh,t2,tb,agglo,ielm,nplan,mesh%Z%R,
488 & rhs,am1,slv,unsv,listin,.true.)
497 IF(ncsize.GT.1.AND.nomb.GT.0)
THEN 498 IF(ftild%TYPE.EQ.2)
THEN 500 ELSEIF(ftild%TYPE.EQ.4)
THEN 502 CALL parcom(ftild%ADR(i)%P,1,mesh)
subroutine ov(OP, X, Y, Z, C, DIM1)
subroutine gtsh11(SHP, ELT, IKLE, ELTCAR, NPOIN, NELEM, NELMAX, NSEG, QUAB, QUAD)
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 chgdis(X, OLDELT, NEWELT, MESH)
subroutine allblo(BLO, NOM)
subroutine bief_allvec(NAT, VEC, NOM, IELM, DIM2, STATUT, MESH)
subroutine bief_allvec_in_block(BLO, N, NAT, NOMGEN, IELM, NDIM, STATUT, MESH)
subroutine char_weak(FTILD, FTILD_WEAK, SURFAC, IKLE, NPOIN, NELEM, NELMAX, NG, NGAUSS, MESH, T2, TB, AGGLO, IELM, NPLAN, Z, CV1, AM1, SLV, UNSV, LISTIN, SOLV)
subroutine char_gauss(XCONV, YCONV, ZCONV, SHP, SHZ, ELT, ETA, X, Y, IKLE, NPOIN, NELEM, NELMAX, NG, NGAUSS, IELM, NPLAN, ZSTAR)
subroutine gtsh41(SHP, SHZ, SHF, WS, FS, ELT, ETA, FRE, IKLE, ELTCAR, NPOIN2, NELMAX2, NPLAN, JF, NF, YA4D)
type(bief_obj), target t2weak
type(bief_obj), target t1weak
subroutine os(OP, X, Y, Z, C, IOPT, INFINI, ZERO)
subroutine parcom(X, ICOM, MESH)
subroutine charac(FN, FTILD, NOMB, UCONV, VCONV, WCONV, FRCONV, ZSTAR, FREQ, DT, IFAMAS, IELM, NPOIN2, NPLAN, JF, NF, MSK, SHP, SHZ, SHF, TB, ELT, ETA, FRE, IT3, ISUB, FREBUF, MESH, NELEM2, NELMAX2, IKLE2, SURDET2, AM1, RHS, SLV, AGGLO, LISTIN, NGAUSS, UNSV, OPTCHA, POST, PERIO, YA4D, SIGMA, STOCHA, VISC)