The TELEMAC-MASCARET system  trunk
charac.f
Go to the documentation of this file.
1 ! *****************
2  SUBROUTINE charac
3 ! *****************
4 !
5  &( fn , ftild , nomb , uconv , vconv , wconv , frconv ,
6  & zstar , freq ,
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 )
13 !
14 !***********************************************************************
15 ! BIEF V6P3 21/08/2010
16 !***********************************************************************
17 !
18 !brief CALLS THE METHOD OF CHARACTERISTICS
19 !+ (SUBROUTINE CARACT).
20 !
21 !warning So far the size of some arrays cannot be checked:
22 !+ FRE, ELT, ETA, IT3, ISUB, FREBUF, it would be better to send
23 !+ BIEF_OBJ structures.
24 !
25 !history J-M HERVOUET (LNHE)
26 !+ 12/02/2010
27 !+ V6P0
28 !+ First version.
29 !
30 !history N.DURAND (HRW), S.E.BOURBAN (HRW)
31 !+ 13/07/2010
32 !+ V6P0
33 !+ Translation of French comments within the FORTRAN sources into
34 !+ English comments
35 !
36 !history N.DURAND (HRW), S.E.BOURBAN (HRW)
37 !+ 21/08/2010
38 !+ V6P0
39 !+ Creation of DOXYGEN tags for automated documentation and
40 !+ cross-referencing of the FORTRAN sources
41 !
42 !history J-M HERVOUET (LNHE)
43 !+ 03/01/2012
44 !+ V6P2
45 !+ NPOIN instead of NPOIN2 in the call to SCARACT at the position
46 !+ of argument NPLOT (goes with corrections in Streamline.f)
47 !
48 !history J-M HERVOUET (LNHE)
49 !+ 18/04/2013
50 !+ V6P3
51 !+ NPOIN instead of NPOIN2 in the call to SCARACT at the position
52 !+ of argument NPLOT (goes with corrections in Streamline.f)
53 !
54 !history J-M HERVOUET (LNHE)
55 !+ 02/05/2013
56 !+ V6P3
57 !+ Arguments STOCHA and VISC added. Attribute target added for some
58 !+ others (it helps prepare weak form of characteristics).
59 !
60 !history J-M HERVOUET (LNHE)
61 !+ 16/05/2013
62 !+ V6P3
63 !+ Attribute target for ISUB.
64 !
65 !history J-M HERVOUET (LNHE)
66 !+ 18/03/2013
67 !+ V6P3
68 !+ Now weak form of characteristics also available, see OPTCHA.
69 !
70 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
71 !| AGGLO |-->| MASS-LUMPING (FOR WEAK FORM)
72 !| AM1 |<->| A MATRIX (FOR WEAK FORM)
73 !| RHS |<->| A RIGHT-HAND SIDE (FOR WEAK FORM)
74 !| DT |-->| TIME STEP
75 !| ELT |<->| ARRIVAL ELEMENT
76 !| ETA |<->| ARRIVAL LAYER (IN 3D WITH PRISMS)
77 !| FRCONV |-->| FREQUENCY COMPONENT OF ADVECTION FIELD
78 !| FRE |<->| ARRIVAL FREQUENCY (IN 4D)
79 !| FREBUF |<->| INTEGER WORK ARRAY (IN 4D)
80 !| FREQ |-->| DISCRETISED FREQUENCIES (IN 4D).
81 !| | | IF NOT TOMAWAC, MUST BE ZSTAR !!!!!!!!!!!
82 !| FN |-->| VARIABLES AT TIME N .
83 !| FTILD |<--| VARIABLES AFTER ADVECTION .
84 !| IELM |-->| TYPE OF ELEMENT : 11 : TRIANGLE P1
85 !| | | 41 : PRISM IN TELEMAC3D
86 !| IFAMAS |-->| A MODIFIED IFABOR WHEN ELEMENTS ARE MASKED
87 !| IKLE2 |-->| CONNECTIVITY TABLE FOR TRIANGLES
88 !| IT3 |<->| INTEGER WORK ARRAY
89 !| ISUB |<->| ARRIVAL SUB-DOMAIN (IN PARALLEL)
90 !| JF |-->| FREQUENCY (IN A RANGE OF 1 TO NF)
91 !| LISTIN |-->| IF YES, PRINTS INFORMATIONS ON LISTING (WEAK FORM)
92 !| MESH |-->| MESH STRUCTURE
93 !| MSK |-->| IF YES, THERE IS MASKED ELEMENTS.
94 !| NELEM2 |-->| NUMBER OF ELEMENTS IN 2D
95 !| NELMAX2 |-->| MAXIMUM NUMBER OF ELEMENTS IN 2D
96 !| NF |-->| NUMBER OF FREQUENCIES (IN 4D)
97 !| NGAUSS |-->| NUMBER OF GAUSS POINTS (WEAK FORM)
98 !| NOMB |-->| NUMBER OF VARIABLES TO BE ADVECTED
99 !| NPLAN |-->| NUMBER OF PLANES IN THE 3D MESH OF PRISMS
100 !| NPOIN2 |-->| NUMBER OF POINTS IN THE 2D MESH
101 !| OPTCHA |-->| OPTION FOR THE FORM OF CHARACTERISTICS
102 !| | | 1 : STRONG (CLASSICAL) FORM
103 !| | | 2 : BACKWARD WEAK FORM
104 !| PERIO |-->| IF YES, PERIODIC VERSION ON THE VERTICAL
105 !| POST |-->| IF YES, DATA MUST BE KEPT FOR A POSTERIORI
106 !| | | INTERPOLATION
107 !| SHP |<->| BARYCENTRIC COORDINATES OF POINTS IN TRIANGLES
108 !| SHZ |<->| BARYCENTRIC COORDINATES ON VERTICAL
109 !| SHF |<->| BARYCENTRIC COORDINATES ON THE FREQUENCY AXIS
110 !| SIGMA |-->| IF YES, TRANSFORMES MESH FOR TELEMAC-3D
111 !| SLV |-->| A SOLVER CONFIGURATION (FOR WEAK FORM)
112 !| STOCHA |-->| STOCHASTIC DIFFUSION MODEL
113 !| | | 0: NO DIFFUSION 1: BROWNIAN MODEL
114 !| SURDET2 |-->| GEOMETRIC COEFFICIENT USED IN PARAMETRIC TRANSFORMATION
115 !| TB |<->| BLOCK CONTAINING THE BIEF_OBJ WORK ARRAYS
116 !| UCONV |-->| X-COMPONENT OF ADVECTION FIELD
117 !| UNSV |-->| 1/(INTEGRAL OF TEST FUNCTIONS)
118 !| VCONV |-->| Y-COMPONENT OF ADVECTION FIELD
119 !| VISC |-->| VISCOSITY (MAY BE TENSORIAL)
120 !| WCONV |-->| Z-COMPONENT OF ADVECTION FIELD IN THE TRANSFORMED MESH
121 !| YA4D |-->| IF YES, 4D VERSION FOR TOMAWAC
122 !| ZSTAR |-->| TRANSFORMED VERTICAL COORDINATES IN 3D
123 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
124 !
125  USE bief, ex_charac => charac
126  USE streamline, ONLY : scaract
128  & t3weak,t4weak,t5weak,t6weak,
129  & t7weak,shpwea,ftild_weak,shpbuf,
130  & shzbuf,shzwea
131 !
133  IMPLICIT NONE
134 !
135 !+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
136 !
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(*)
141 ! NEXT 4 DIMENSIONS ARE A MINIMUM IT IS MORE WITH WEAK FORM
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
158 !
159  LOGICAL, INTENT(IN), OPTIONAL :: POST,PERIO,YA4D,SIGMA
160  INTEGER, INTENT(IN), OPTIONAL :: STOCHA
161  TYPE(bief_obj), INTENT(IN), OPTIONAL, TARGET :: VISC
162 !
163 !+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
164 !
165  INTEGER NPOIN,IELMU,SIZEBUF,ASTOCHA
166 !
167 !-----------------------------------------------------------------------
168 !
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
175  INTRINSIC min
176 !
177 !-----------------------------------------------------------------------
178 !
179 ! HARDCODED NUMBER OF SUB-STEPS FOR COMPUTING THE PATH-LINES
180 !
181  nrk=3
182 !
183 !-----------------------------------------------------------------------
184 !
185  IF(optcha.GT.1) THEN
186  IF(ielm.EQ.11) THEN
187  ng=ngauss*nelem2
188  ELSEIF(ielm.EQ.41) THEN
189  ng=ngauss*nelem2*(nplan-1)
190  ENDIF
191  IF(.NOT.deja_charac) THEN
192  CALL allblo(ftild_weak,'FTIWEA')
193  CALL bief_allvec_in_block(ftild_weak,ftild%N,1,
194  & 'FTW ',ng,1,0,mesh)
195  CALL bief_allvec(1,t1weak,'T1WEAK',ng,1,0,mesh)
196  CALL bief_allvec(1,t2weak,'T2WEAK',ng,1,0,mesh)
197  CALL bief_allvec(1,t4weak,'T4WEAK',ng,1,0,mesh)
198  CALL bief_allvec(1,t5weak,'T5WEAK',ng,1,0,mesh)
199  CALL bief_allvec(1,shpwea,'SHPWEA',ng,3,0,mesh)
200  IF(ielm.EQ.41) THEN
201  CALL bief_allvec(1,t3weak,'T3WEAK',ng,1,0,mesh)
202  CALL bief_allvec(1,t6weak,'T6WEAK',ng,1,0,mesh)
203  CALL bief_allvec(1,t7weak,'T7WEAK',ng,1,0,mesh)
204  CALL bief_allvec(1,shzwea,'SHZWEA',ng,1,0,mesh)
205  ELSE
206  CALL bief_allvec(1,t3weak,'T3WEAK', 1,1,0,mesh)
207  CALL bief_allvec(1,t6weak,'T6WEAK', 1,1,0,mesh)
208  CALL bief_allvec(1,t7weak,'T7WEAK', 1,1,0,mesh)
209  CALL bief_allvec(1,shzwea,'SHZWEA',1 ,1,0,mesh)
210  ENDIF
211  IF(ncsize.GT.1) THEN
212  CALL bief_allvec(1,shpbuf,'SHPBUF',ng,3,0,mesh)
213  ELSE
214  CALL bief_allvec(1,shpbuf,'SHPBUF',1 ,3,0,mesh)
215  ENDIF
216  IF(ncsize.GT.1.AND.ielm.EQ.41) THEN
217  CALL bief_allvec(1,shzbuf,'SHZBUF',ng,1,0,mesh)
218  ELSE
219  CALL bief_allvec(1,shzbuf,'SHZBUF',1 ,1,0,mesh)
220  ENDIF
221  deja_charac=.true.
222  ENDIF
223  ENDIF
224 !
225 !-----------------------------------------------------------------------
226 ! OPTIONAL OPTIONS
227 !-----------------------------------------------------------------------
228 !
229 ! ENABLING A POSTERIORI INTERPOLATION
230 !
231  IF(PRESENT(post)) THEN
232  apost=post
233  ELSE
234  apost=.false.
235  ENDIF
236 !
237 ! PERIODICITY FOR TOMAWAC
238 !
239  IF(PRESENT(perio)) THEN
240  aperio=perio
241  ELSE
242  aperio=.false.
243  ENDIF
244 !
245 ! 4D FOR TOMAWAC
246 !
247  IF(PRESENT(ya4d)) THEN
248  aya4d=ya4d
249  ELSE
250  aya4d=.false.
251  ENDIF
252 !
253 ! TRANSFORMED MESH FOR TELEMAC-3D
254 !
255  IF(PRESENT(sigma)) THEN
256  asigma=sigma
257  ELSE
258  asigma=.false.
259  ENDIF
260 !
261 ! STOCHASTIC DIFFUSION
262 !
263  IF(PRESENT(stocha)) THEN
264  astocha=stocha
265  ELSE
266  astocha=0
267  ENDIF
268  IF(PRESENT(visc)) THEN
269  avisc => visc
270  ELSE
271  IF(astocha.NE.0) THEN
272  WRITE(lu,*) 'CHARAC: WITH STOCHASTIC DIFFUSION'
273  WRITE(lu,*) ' AN ARGUMENT VISC MUST BE GIVEN'
274  CALL plante(1)
275  stop
276  ELSE
277 ! HERE A DUMMY TARGET, WILL NOT BE USED
278 ! MAYBE NULLIFY WOULD BE BETTER ?
279  avisc => ifamas
280  ENDIF
281  ENDIF
282 !
283 !-----------------------------------------------------------------------
284 ! TABLEAUX DE TRAVAIL PRIS DANS LE BLOC TB
285 !-----------------------------------------------------------------------
286 !
287  IF(tb%N.GE.10) THEN
288  t8 =>tb%ADR( 8)%P
289  t9 =>tb%ADR( 9)%P
290  t10=>tb%ADR(10)%P
291  IF(optcha.GT.1) THEN
292  t1 =>t1weak
293  t2 =>t2weak
294  t3 =>t3weak
295  t4 =>t4weak
296  t5 =>t5weak
297  t6 =>t6weak
298  t7 =>t7weak
299  pt_shp=>shpwea%R
300  pt_shz=>shzwea%R
301  pt_shpbuf=>shpbuf
302  pt_ftild=>ftild_weak
303  ELSE
304  t1 =>tb%ADR(1)%P
305  t2 =>tb%ADR(2)%P
306  t3 =>tb%ADR(3)%P
307  t4 =>tb%ADR(4)%P
308  t5 =>tb%ADR(5)%P
309  t6 =>tb%ADR(6)%P
310  t7 =>tb%ADR(7)%P
311  pt_shp=>shp%R
312  pt_shz=>shz%R
313  pt_shpbuf=>mesh%M%X
314  pt_ftild=>ftild
315  ENDIF
316  ELSE
317  WRITE(lu,*) 'SIZE OF BLOCK TB:',tb%N
318  WRITE(lu,*) 'TOO SMALL IN CHARAC'
319  WRITE(lu,*) '10 REQUESTED'
320  CALL plante(1)
321  stop
322  ENDIF
323 !
324 !-----------------------------------------------------------------------
325 ! DEPLOIEMENT DE LA STRUCTURE DE MAILLAGE
326 !-----------------------------------------------------------------------
327 !
328  npoin = mesh%NPOIN
329  ielmu = uconv%ELM
330 !
331 ! PREPARING WORK ARRAYS
332 !
333 ! THE OFF-DIAGONAL TERMS OF WORK MATRIX IN MESH WILL BE USED AS
334 ! SHPBUF(3,SIZEBUF)
335 !
336  IF(optcha.GT.1) THEN
337  sizebuf=ng
338  ELSE
339  sizebuf=(mesh%M%X%MAXDIM1*mesh%M%X%MAXDIM2)/3
340 ! T7 WILL BE USED AS SHZBUF(SIZEBUF)
341  sizebuf=min(sizebuf,t7%MAXDIM1)
342 ! IT3 WILL BE USED AS ELTBUF
343  sizebuf=min(sizebuf,npoin)
344  ENDIF
345 !
346 !-----------------------------------------------------------------------
347 ! ARE THERE QUADRATIC OR QUASI-BUBBLE VARIABLES ?
348 ! AND COMPUTATION OF LARGEST NUMBER OF POINTS
349 !-----------------------------------------------------------------------
350 !
351  quad=.false.
352  quab=.false.
353  npt=0
354  IF(fn%TYPE.EQ.4) THEN
355  DO i=1,fn%N
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)
359  ENDDO
360  ELSEIF(fn%TYPE.EQ.2) THEN
361  IF(fn%ELM.EQ.12) quab = .true.
362  IF(fn%ELM.EQ.13) quad = .true.
363  npt=max(npt,fn%DIM1)
364  ENDIF
365  IF(quab.AND.quad) THEN
366  WRITE(lu,*) 'CHARAC: QUADRATIC AND QUASI-BUBBLE CANNOT BE MIXED'
367  CALL plante(1)
368  stop
369  ENDIF
370 !
371 !-----------------------------------------------------------------------
372 ! CHECKING SHP SIZE (ONCE A BUG...)
373 !-----------------------------------------------------------------------
374 !
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'
379  CALL plante(1)
380  stop
381  ENDIF
382 !
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'
387  CALL plante(1)
388  stop
389  ENDIF
390 !
391 !-----------------------------------------------------------------------
392 ! APPEL DE SCARACT
393 !-----------------------------------------------------------------------
394 !
395  IF(msk) THEN
396 ! APPEL AVEC IFAMAS
397  ifa=>ifamas%I
398  ELSE
399 ! APPEL AVEC IFABOR
400  ifa=>mesh%IFABOR%I
401  ENDIF
402 !
403 ! STARTING X AND Y OF POINTS (T1=XCONV AND T2=YCONV)
404 !
405  IF(optcha.GT.1) THEN
406 !
407  CALL char_gauss(t1%R,t2%R,t3%R,shpwea%R,shzwea%R,elt,eta,
408  & mesh%X%R,mesh%Y%R,
409  & ikle2%I,npoin2,nelem2,nelmax2,ng,ngauss,ielm,
410  & nplan,zstar%R)
411  IF(ielm.EQ.11) THEN
412  dim1f=ng
413  ELSEIF(ielm.EQ.41) THEN
414  dim1f=npoin2
415  ENDIF
416  npt=ng
417 !
418  ELSE
419 !
420  CALL os('X=Y ',x=t1,y=mesh%X)
421  CALL os('X=Y ',x=t2,y=mesh%Y)
422 !
423 ! IELM MUST BE INTENT(INOUT) BECAUSE IT IS SUCH IN CHGDIS
424  IF(quad) THEN
425  CALL chgdis(t1,ielm,13,mesh)
426  CALL chgdis(t2,ielm,13,mesh)
427  ELSEIF(quab) THEN
428  CALL chgdis(t1,ielm,12,mesh)
429  CALL chgdis(t2,ielm,12,mesh)
430  ENDIF
431 !
432  IF(ielm.EQ.11) THEN
433  CALL gtsh11(shp%R,elt,ikle2%I,mesh%ELTCAR%I,npoin2,
434  & nelem2,nelmax2,mesh%NSEG,quab,quad)
435  dim1f=npt
436  ELSEIF(ielm.EQ.41) THEN
437 ! STARTING Z OF POINTS (T3=ZCONV)
438  DO iplan=1,nplan
439  DO i= (iplan-1)*npoin2+1,iplan*npoin2
440  t3%R(i)=zstar%R(iplan)
441  ENDDO
442  ENDDO
443 ! IN 4D, STARTING F OF POINTS (T9=FCONV)
444  IF(aya4d) THEN
445  CALL ov('X=C ', x=t9%R, c=freq%R(jf),
446  & dim1=npoin2*nplan)
447  ENDIF
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)
451  dim1f=npoin2
452  ELSE
453  WRITE(lu,*) 'ELEMENT NOT IMPLEMENTED IN CHARAC: ',ielm
454  CALL plante(1)
455  stop
456  ENDIF
457 !
458  ENDIF
459 !
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,
462 ! XCONV YCONV ZCONV FCONV DX DY DZ DF
463  & t1%R ,t2%R ,t3%R ,t9%R ,t4%R,t5%R,t6%R,t8%R,
464 ! SHP
465  & mesh%Z%R,pt_shp,pt_shz,shf%R,
466  & surdet2%R,dt,ikle2%I,ifa,elt,
467  & eta,fre,it3,isub,
468  & ielm,ielmu,nelem2,nelmax2,nomb,npoin2,
469  & 3,nrk,nplan,nf,mesh,npt,dim1f,-1,
470 ! SHPBUF SHZBUF SHFBUF
471  & pt_shpbuf%R,t7%R ,t10%R,frebuf,sizebuf,
472  & apost,aperio,aya4d,asigma,astocha,avisc)
473 !
474  IF(optcha.GT.1) THEN
475 !
476  IF(nomb.GT.0) THEN
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
483  DO i=1,nomb
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.)
489  ENDDO
490  ENDIF
491  ENDIF
492 !
493  ELSE
494 !
495 ! PARALLEL COMMUNICATION
496 !
497  IF(ncsize.GT.1.AND.nomb.GT.0) THEN
498  IF(ftild%TYPE.EQ.2) THEN
499  CALL parcom(ftild,1,mesh)
500  ELSEIF(ftild%TYPE.EQ.4) THEN
501  DO i=1,nomb
502  CALL parcom(ftild%ADR(i)%P,1,mesh)
503  ENDDO
504  ENDIF
505  ENDIF
506 !
507  ENDIF
508 !
509 !-----------------------------------------------------------------------
510 !
511  RETURN
512  END
subroutine ov(OP, X, Y, Z, C, DIM1)
Definition: ov.f:7
subroutine gtsh11(SHP, ELT, IKLE, ELTCAR, NPOIN, NELEM, NELMAX, NSEG, QUAB, QUAD)
Definition: gtsh11.f:7
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)
Definition: streamline.f:6854
subroutine chgdis(X, OLDELT, NEWELT, MESH)
Definition: chgdis.f:7
subroutine allblo(BLO, NOM)
Definition: allblo.f:7
subroutine bief_allvec(NAT, VEC, NOM, IELM, DIM2, STATUT, MESH)
Definition: bief_allvec.f:7
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)
Definition: char_weak.F:8
subroutine char_gauss(XCONV, YCONV, ZCONV, SHP, SHZ, ELT, ETA, X, Y, IKLE, NPOIN, NELEM, NELMAX, NG, NGAUSS, IELM, NPLAN, ZSTAR)
Definition: char_gauss.f:8
subroutine gtsh41(SHP, SHZ, SHF, WS, FS, ELT, ETA, FRE, IKLE, ELTCAR, NPOIN2, NELMAX2, NPLAN, JF, NF, YA4D)
Definition: gtsh41.f:8
type(bief_obj), target t2weak
type(bief_obj), target t1weak
subroutine os(OP, X, Y, Z, C, IOPT, INFINI, ZERO)
Definition: os.f:7
subroutine parcom(X, ICOM, MESH)
Definition: parcom.f:7
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)
Definition: charac.f:14
Definition: bief.f:3