almesh.f

Go to the documentation of this file.
00001 C:\opentelemac\v7p0\sources\utils\bief\almesh.f
00002 !
00087                      SUBROUTINE ALMESH
00088 !                    *****************
00089 !
00090      &(MESH,NOM,IELM,SPHERI,CFG,NFIC,EQUA,NPLAN,NPMAX,NPTFRX,NELMAX,
00091      & I3,I4,FILE_FORMAT,PROJECTION,LATI0,LONGI0)
00092 !
00093 !***********************************************************************
00094 ! BIEF   V7P0                                   21/08/2010
00095 !***********************************************************************
00096 !
00097 !
00098 !
00099 !
00100 !
00101 !
00102 !
00103 !
00104 !
00105 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
00106 !| EQUA           |-->| NAME IN 20 CHARACTERS TO ENABLE DIFFERENT
00107 !|                |   | OPTIONS. OPTIONS ARE:
00108 !|                |   | "SAINT-VENANT EF"
00109 !|                |   | "SAINT-VENANT VF"
00110 !|                |   | "BOUSSINESQ"
00111 !| I3             |-->| ABSCISSA IN METERS OF ORIGIN POINT (OPTIONAL)
00112 !| I4             |-->| ORDINATE IN METERS OF ORIGIN POINT (OPTIONAL)
00113 !| IELM           |-->| ELEMENT TYPE WITH THE LARGET NUMBER OF DEGREES
00114 !|                |   | OF FREEDOM THAT WILL BE USED
00115 !| LATI0          |-->| LATITUDE OF ORIGIN POINT
00116 !| LONGI0         |-->| LONGITUDE OF ORIGIN POINT
00117 !| MESH           |-->| MESH STRUCTURE TO BE ALLOCATED
00118 !| NELMAX         |-->| MAXIMUM NUMBER OF ELEMENTS IN THE MESH
00119 !| NFIC           |-->| LOGICAL UNIT WHERE TO READ THE MESH
00120 !| NOM            |-->| NAME OF THE MESH
00121 !| NPLAN          |-->| NUMBER OF PLANES (OPTIONAL,3D MESHES OF PRISMS)
00122 !| NPMAX          |-->| MAXIMUM NUMBER OF POINTS IN THE MESH
00123 !| NPTFRX         |-->| MAXIMUM NUMBER OF BOUNDARY NODES
00124 !| PROJECTION     |<->| SPATIAL PROJECTION TYPE
00125 !| SPHERI         |-->| LOGICAL, IF YES : SPHERICAL COORDINATES
00126 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
00127 !
00128       USE BIEF, EX_ALMESH => ALMESH
00129 !
00130       IMPLICIT NONE
00131       INTEGER LNG,LU
00132       COMMON/INFO/LNG,LU
00133 !
00134 !+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
00135 !
00136       TYPE(BIEF_MESH)  , INTENT(INOUT)           :: MESH
00137       INTEGER          , INTENT(IN)              :: IELM
00138       INTEGER          , INTENT(IN)              :: NFIC
00139       LOGICAL          , INTENT(IN)              :: SPHERI
00140       CHARACTER(LEN=6) , INTENT(IN)              :: NOM
00141       CHARACTER(LEN=20), INTENT(IN)              :: EQUA
00142       INTEGER          , INTENT(INOUT)           :: CFG(2)
00143       INTEGER          , INTENT(IN),    OPTIONAL :: NPLAN
00144       INTEGER          , INTENT(IN),    OPTIONAL :: NPMAX
00145       INTEGER          , INTENT(IN),    OPTIONAL :: NPTFRX
00146       INTEGER          , INTENT(IN),    OPTIONAL :: NELMAX
00147       INTEGER          , INTENT(INOUT), OPTIONAL :: I3,I4,PROJECTION
00148       CHARACTER(LEN=8) , INTENT(IN),    OPTIONAL :: FILE_FORMAT
00149       DOUBLE PRECISION , INTENT(IN),    OPTIONAL :: LATI0,LONGI0
00150 !
00151 !+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
00152 !
00153       INTEGER D,IELM0,IELM1,STOCFG,IELB0,IELB1,NSEG,NNPMAX
00154       INTEGER NNPTFRX,NNELEB,ERR,NNELMAX,NNPLAN,NPOIN,NPTFR,NELEM
00155       INTEGER MXPTVS,MXELVS,NDP,IB(10),IELEM,NSEGBOR,IPLAN,NPOIN_GLOB
00156 !
00157 !     TEMPORARY CONNECTIVITY TABLE
00158 !
00159       INTEGER, ALLOCATABLE :: IKLES(:)
00160 !
00161 !     TEMPORARY TABLE TO NUMBER THE BOUNDARY NODES
00162 !
00163       INTEGER, ALLOCATABLE :: IPOBO(:)
00164 !
00165       INTEGER IELB0V,IELB1V,I
00166       INTEGER, EXTERNAL :: P_IMAX
00167 !
00168       CHARACTER(LEN=8) FFORMAT
00169 !
00170       INTEGER PROJEC
00171       DOUBLE PRECISION LATI,LONGI
00172 !
00173 !-----------------------------------------------------------------------
00174 !
00175       IF(PRESENT(FILE_FORMAT)) THEN
00176         FFORMAT=FILE_FORMAT
00177       ELSE
00178         FFORMAT='SERAFIN '
00179       ENDIF
00180 !
00181 !-----------------------------------------------------------------------
00182 !
00183       IF(PRESENT(PROJECTION)) THEN
00184         PROJEC=PROJECTION
00185       ELSE
00186         PROJEC=1
00187       ENDIF
00188 !
00189 !-----------------------------------------------------------------------
00190 !
00191       IF(PRESENT(LATI0)) THEN
00192         LATI=LATI0
00193       ELSE
00194         LATI=0.D0
00195       ENDIF
00196 !
00197 !-----------------------------------------------------------------------
00198 !
00199       IF(PRESENT(LONGI0)) THEN
00200         LONGI=LONGI0
00201       ELSE
00202         LONGI=0.D0
00203       ENDIF
00204 !
00205 !-----------------------------------------------------------------------
00206 !
00207 !     FIRST READS THE GEOMETRY FILE TO GET NPOIN,.. IB
00208 !
00209       MESH%NAME = NOM
00210 !
00211 !CCCCCCCCCCCCCCCCCCCC
00212 ! 3D : ALSO GETS NNELEB
00213 !CCCCCCCCCCCCCCCCCCCC
00214 !
00215 !     IN PARALLEL MODE, THIS IS WHERE NPTIR IS READ
00216 !
00217       CALL READGEO1(NPOIN,NELEM,NPTFR,NDP,IB,NFIC,NNELEB)
00218 !
00219       IF(PRESENT(I3)) I3=IB(3)
00220       IF(PRESENT(I4)) I4=IB(4)
00221 !
00222 ! ALLOCATES THE TEMPORARY CONNECTIVITY TABLE
00223 !
00224       ALLOCATE(IKLES(NELEM*NDP),STAT=ERR)
00225       CALL CHECK_ALLOCATE(ERR,'ALMESH:IKLES')
00226 !
00227 ! ALLOCATES THE TEMPORARY TABLE FOR THE BOUNDARY NODES
00228 !
00229       ALLOCATE(IPOBO(NPOIN),STAT=ERR)
00230       CALL CHECK_ALLOCATE(ERR,'ALMESH:IPOBO')
00231 !
00232 !CCCCCCCCCCCCCCCCCCCCCC
00233 ! READGEO2 WILL ALSO TAKE IPOBO (ARRAY READ IN THIS SUBROUTINE) IN
00234 ! ARGUMENT. IT IS CURRENTLY ONLY USED INSIDE THIS SUBROUTINE, EXCEPT
00235 ! IN THIS CASE, WHERE IT WILL BE REQUIRED LATER.
00236 ! SINCE IT IS IN THE GEO FILE, WHY NOT USE IT?
00237 ! ARGUMENTS MXPTVS AND MXELVS WILL BE DELETED AND TRANSFERED IN UPCOMING
00238 ! CALL TO MXPTEL. THESE NUMBERS ARE NOT RELATED TO THE READING OF THE
00239 ! GEO FILE.
00240 !CCCCCCCCCCCCCCCCCCCCCC
00241 !
00242 ! READS IPOBO
00243 !
00244       CALL READGEO2(NPOIN,NELEM,NPTFR,NDP,IKLES,IPOBO,IB,NFIC)
00245 !
00246 !CCCCCCCCCCCCCCCCCCCCCC
00247 ! THIS IS WHERE CALL TO MXPTEL WILL NOW BE (INSTEAD OF WITHIN READGEO2)
00248 ! MXPTVS AND MXELVS WILL BE COMPUTED DEPENDING ON THE TYPE OF ELEMENT
00249 !CCCCCCCCCCCCCCCCCCCCCC
00250 !
00251 ! CALCULATES THE MAXIMUM NUMBER OF ELEMENTS AROUND A NODE MXELVS
00252 ! AND THE MAXIMUM NUMBER OF SURROUNDING NODES, MXPTVS
00253 !
00254       CALL MXPTEL(MXPTVS,MXELVS,IKLES,IELM,
00255      &              NPOIN,NELEM,NDP,IPOBO,.TRUE.)
00256 !
00257       DEALLOCATE(IPOBO)
00258 !
00259 !
00260 !-----------------------------------------------------------------------
00261 !
00262 !
00263 !     INITIALISES COMMONS DIMS AND NODES
00264 !
00265       IF(PRESENT(NPMAX)) THEN
00266         NNPMAX = NPMAX
00267       ELSE
00268         NNPMAX = NPOIN
00269       ENDIF
00270       IF(PRESENT(NPTFRX)) THEN
00271         NNPTFRX = NPTFRX
00272       ELSE
00273         NNPTFRX = NPTFR
00274       ENDIF
00275       IF(PRESENT(NELMAX)) THEN
00276         NNELMAX = NELMAX
00277       ELSE
00278         NNELMAX = NELEM
00279       ENDIF
00280       IF(PRESENT(NPLAN)) THEN
00281         NNPLAN = NPLAN
00282       ELSE
00283         NNPLAN = 1
00284       ENDIF
00285 !
00286       IF(NCSIZE.GT.1) THEN
00287 !
00288 !     IN PARALLEL MODE NSEGBOR (COMPUTED IN SEGBOR) IS NOT NPTFR
00289 !
00290         CALL SEGBOR(NSEGBOR,IKLES,NELEM,NPOIN)
00291       ELSE
00292         NSEGBOR=NPTFR
00293       ENDIF
00294 !
00295 !     IN CALL ININDS, ALL VALUES ARE 2D VALUES
00296 !     ONLY NNPLAN TELLS IF IT'S 2D OR 3D
00297 !
00298 !     3D TETRAHEDRONS MESH:
00299 !     ADD THE OPTIONAL ARGUMENT NNELEB
00300 !
00301       ALLOCATE(MESH%NDS(0:81,7))
00302       CALL BIEF_ININDS(NPOIN,NPTFR,NELEM,NNPMAX,NNPTFRX,NNELMAX,NNPLAN,
00303      &                 NSEGBOR,MESH%NDS,NNELEB)
00304 !
00305 !     P0 AND P1 ELEMENTS
00306 !
00307       IELM0  = 10*(IELM/10)
00308       IELM1  = IELM0 + 1
00309       D      = DIMENS(IELM0)
00310 !
00311 ! BOUNDARY ELEMENTS (AT THE SURFACE AND AT THE BOTTOM FOR PRISMS)
00312 !
00313       IELB0  = IELBOR(IELM0,1)
00314       IELB1  = IELBOR(IELM1,1)
00315 !
00316 ! LATERAL BOUNDARY ELEMENTS (DIFFERENT FOR PRISMS)
00317 !
00318       IELB0V = IELBOR(IELM0,2)
00319       IELB1V = IELBOR(IELM1,2)
00320 !
00321 !-----------------------------------------------------------------------
00322 !
00323 !  ALLOCATES THE ARRAYS OF REALS
00324 !
00325 !     COORDINATES BY ELEMENTS: XEL, YEL, ZEL
00326 !
00327       ALLOCATE(MESH%XEL)
00328       ALLOCATE(MESH%YEL)
00329       ALLOCATE(MESH%ZEL)
00330 !
00331       CALL BIEF_ALLVEC(1,MESH%XEL,'XEL   ',
00332      &                 IELM0,BIEF_NBPEL(IELM1,MESH),1,MESH)
00333       CALL BIEF_ALLVEC(1,MESH%YEL,'YEL   ',
00334      &                 IELM0,BIEF_NBPEL(IELM1,MESH),1,MESH)
00335 !
00336       IF(D.GE.3) THEN
00337         CALL BIEF_ALLVEC(1,MESH%ZEL,'ZEL   ',
00338      &                   IELM0,BIEF_NBPEL(IELM1,MESH),1,MESH)
00339       ELSE
00340         CALL BIEF_ALLVEC(1,MESH%ZEL,'ZEL   ',    0,           1,0,MESH)
00341       ENDIF
00342 !
00343 !     SURFACES OF THE ELEMENTS: SURFAC
00344 !     JAJ CAN BE USED FOR ELEMENT VOLUMES...
00345 !
00346       ALLOCATE(MESH%SURFAC)
00347       CALL BIEF_ALLVEC(1,MESH%SURFAC,'SURFAC',IELM0,1,1,MESH)
00348 !
00349 !     1/DET : SURDET ! NOT USED IN 3D, WHY?
00350 !
00351       ALLOCATE(MESH%SURDET)
00352       CALL BIEF_ALLVEC(1,MESH%SURDET,'SURDET',IELM0,1,1,MESH)
00353 !
00354 !     LENGTHS OF THE SEGMENTS: LGSEG
00355 !     CAN BE USED (IN THEORY) FOR LATERAL SURFACES IN 3D,
00356 !     BUT THEN IELB0V INSTEAD OF IELB0! (2D CASE NOT AFFECTED)
00357 !
00358       ALLOCATE(MESH%LGSEG)
00359       CALL BIEF_ALLVEC(1,MESH%LGSEG,'LGSEG ',IELB0V,1,1,MESH)
00360 !
00361 !     NORMALS TO THE SEGMENTS: XSGBOR, YSGBOR, ZSGBOR
00362 ! CAN BE (IN THEORY) USED FOR "NON-SIGMA" MESH FOR LATERAL NORMAL VECTORS
00363 ! PER LATERAL BOUNDARY ELEMENT, BUT THEN IELB0V INSTEAD OF IELB0!
00364 ! 2D CASE NOT AFFECTED
00365 !
00366       ALLOCATE(MESH%XSGBOR)
00367       ALLOCATE(MESH%YSGBOR)
00368       ALLOCATE(MESH%ZSGBOR)
00369 !     SEE NORMAB FOR MEANING OF 4 DIMENSIONS
00370       CALL BIEF_ALLVEC(1,MESH%XSGBOR,'XSGBOR',IELB0V,4,1,MESH)
00371       CALL BIEF_ALLVEC(1,MESH%YSGBOR,'YSGBOR',IELB0V,4,1,MESH)
00372       IF(D.GE.3) THEN
00373         CALL BIEF_ALLVEC(1,MESH%ZSGBOR,'ZSGBOR',IELB0V,4,1,MESH)
00374       ELSE
00375         CALL BIEF_ALLVEC(1,MESH%ZSGBOR,'ZSGBOR',     0,4,0,MESH)
00376       ENDIF
00377 !
00378 !     NORMALS AT THE NODES: XNEBOR, YNEBOR, ZNEBOR
00379 !
00380 ! IN 3D THEY ARE NORMAL VECTORS AT THE BOTTOM
00381 ! SO THAT IELB1 REMAINS
00382 !
00383       ALLOCATE(MESH%XNEBOR)
00384       ALLOCATE(MESH%YNEBOR)
00385       ALLOCATE(MESH%ZNEBOR)
00386 !
00387       CALL BIEF_ALLVEC(1,MESH%XNEBOR,'XNEBOR',IELB1,2,1,MESH)
00388       CALL BIEF_ALLVEC(1,MESH%YNEBOR,'YNEBOR',IELB1,2,1,MESH)
00389 !
00390       IF(D.GE.3) THEN !JAJ NOT USED, ACTUALLY
00391         CALL BIEF_ALLVEC(1,MESH%ZNEBOR,'ZNEBOR',IELB1,2,1,MESH)
00392       ELSE
00393         CALL BIEF_ALLVEC(1,MESH%ZNEBOR,'ZNEBOR',    0,2,0,MESH)
00394       ENDIF
00395 !
00396 !     COORDINATES BY POINTS: X, Y AND Z
00397 !
00398       ALLOCATE(MESH%X)
00399       ALLOCATE(MESH%Y)
00400       ALLOCATE(MESH%Z)
00401       CALL BIEF_ALLVEC(1,MESH%X,'X     ',IELM1,1,1,MESH)
00402       CALL BIEF_ALLVEC(1,MESH%Y,'Y     ',IELM1,1,1,MESH)
00403       IF(D.GE.3) THEN
00404         CALL BIEF_ALLVEC(1,MESH%Z,'Z     ',IELM1,1,1,MESH)
00405       ELSE
00406         CALL BIEF_ALLVEC(1,MESH%Z,'Z     ',    0,1,0,MESH)
00407       ENDIF
00408 !
00409 !     COS AND SIN OF THE LATITUDE
00410 !     WITH IELM (EXAMPLE : VELOCITY IN CORIOLIS)
00411 !     COSLAT AND SINLAT ARE WORKING ARRAYS, TO WHICH
00412 !     THE STRUCTURE OF X IS GIVEN TO BEGIN WITH.
00413 !     THEY CAN BE EXTENDED TO ELEMENT IELM AT A LATER DATE.
00414 !
00415       ALLOCATE(MESH%COSLAT)
00416       ALLOCATE(MESH%SINLAT)
00417       IF(SPHERI) THEN ! DIFFERENT COMPARED TO V2.3
00418         CALL BIEF_ALLVEC(1,MESH%COSLAT,'COSLAT',IELM,1,2,MESH)
00419         CALL BIEF_ALLVEC(1,MESH%SINLAT,'SINLAT',IELM,1,2,MESH)
00420         CALL CPSTVC(MESH%X,MESH%COSLAT)
00421         CALL CPSTVC(MESH%X,MESH%SINLAT)
00422       ELSE
00423         CALL BIEF_ALLVEC(1,MESH%COSLAT,'COSLAT',   0,1,0,MESH)
00424         CALL BIEF_ALLVEC(1,MESH%SINLAT,'SINLAT',   0,1,0,MESH)
00425       ENDIF
00426 !
00427 !     DISTANCES TO BOUNDARIES : DISBOR
00428 !
00429       ALLOCATE(MESH%DISBOR)
00430       CALL BIEF_ALLVEC(1,MESH%DISBOR,'DISBOR',IELB0,1,1,MESH)
00431 !
00432 !     WORKING MATRIX (INTERNAL TO BIEF), WITH CLASSICAL STORAGE
00433 !
00434       STOCFG = CFG(1)
00435       CFG(1) = 1
00436       ALLOCATE(MESH%M)
00437       CALL BIEF_ALLMAT(MESH%M,'M     ',IELM,IELM,CFG,'Q','Q',MESH)
00438       CFG(1) = STOCFG
00439 !
00440 !     WORKING MATRIX BY SEGMENT
00441 !
00442       ALLOCATE(MESH%MSEG)
00443 !     FROM 5.9 ON, ALWAYS DONE IN 2D (IELM=11,12,13 OR 14)
00444       IF(CFG(1).EQ.3.OR.10*(IELM/10).EQ.10) THEN
00445         CALL BIEF_ALLMAT(MESH%MSEG,'MSEG  ',
00446      &                   IELM,IELM,CFG,'Q','Q',MESH)
00447       ELSE
00448         CALL BIEF_ALLMAT(MESH%MSEG,'MSEG  ',
00449      &                   IELM,IELM,CFG,'0','0',MESH)
00450       ENDIF
00451 !
00452 !     WORKING ARRAY FOR A NOT ASSEMBLED VECTOR
00453 !
00454       ALLOCATE(MESH%W)
00455       CALL BIEF_ALLVEC(1,MESH%W,'W     ',
00456      &                 IELM0,BIEF_NBPEL(IELM,MESH),2,MESH)
00457 !
00458 !     WORKING ARRAY FOR A NORMAL VECTOR
00459 !
00460       ALLOCATE(MESH%T)
00461       CALL BIEF_ALLVEC(1,MESH%T,'T     ',IELM,1,2,MESH)
00462 !
00463 !     VNOIN: ARRAY WITH NORMALS VNOIN FOR FINITE VOLUMES
00464 !     CMI: COORDINATES OF THE MIDDLE OF THE SEGMENTS (KINETIC SCHEMES)
00465 !     DTHAUT:
00466 !     DPX,DPY: GRADIENTS OF THE BASE FUNCTIONS
00467 !
00468       ALLOCATE(MESH%VNOIN)
00469       ALLOCATE(MESH%CMI)
00470       ALLOCATE(MESH%AIRST)
00471       ALLOCATE(MESH%DTHAUT)
00472       ALLOCATE(MESH%DPX)
00473       ALLOCATE(MESH%DPY)
00474       IF(EQUA(1:15).EQ.'SAINT-VENANT VF') THEN
00475         NSEG=BIEF_NBSEG(IELM1,MESH)
00476         CALL BIEF_ALLVEC(1,MESH%VNOIN ,'VNOIN ',3*NSEG,1,0,MESH)
00477         CALL BIEF_ALLVEC(1,MESH%CMI   ,'CMI   ',2*NSEG,1,0,MESH)
00478         CALL BIEF_ALLVEC(1,MESH%AIRST ,'AIRST ',2*NSEG,1,0,MESH)
00479         CALL BIEF_ALLVEC(1,MESH%DTHAUT,'DTHAUT',IELM1 ,1,2,MESH)
00480         CALL BIEF_ALLVEC(1,MESH%DPX   ,'DPX   ',IELM0 ,3,2,MESH)
00481         CALL BIEF_ALLVEC(1,MESH%DPY   ,'DPY   ',IELM0 ,3,2,MESH)
00482       ELSE
00483         CALL BIEF_ALLVEC(1,MESH%VNOIN ,'VNOIN ',     0,1,0,MESH)
00484         CALL BIEF_ALLVEC(1,MESH%CMI   ,'CMI   ',     0,1,0,MESH)
00485         CALL BIEF_ALLVEC(1,MESH%AIRST ,'AIRST ',     0,1,0,MESH)
00486         CALL BIEF_ALLVEC(1,MESH%DTHAUT,'DTHAUT',     0,1,0,MESH)
00487         CALL BIEF_ALLVEC(1,MESH%DPX   ,'DPX   ',     0,1,0,MESH)
00488         CALL BIEF_ALLVEC(1,MESH%DPY   ,'DPY   ',     0,1,0,MESH)
00489       ENDIF
00490 !     FOR COORDINATES OF CENTER OF GRAVITY OF ELEMENTS NEIGHBORING EDGES
00491 !
00492       ALLOCATE(MESH%COORDG)
00493       NSEG=BIEF_NBSEG(IELM1,MESH)
00494       CALL BIEF_ALLVEC(1,MESH%COORDG ,'COORDG',4*NSEG,1,0,MESH)
00495 !
00496 !     FOR PARALLEL MODE
00497 !
00498       ALLOCATE(MESH%XSEG)
00499       ALLOCATE(MESH%YSEG)
00500       ALLOCATE(MESH%FAC)
00501 !     THERE ALLVEC IS IN PARINI
00502       ALLOCATE(MESH%BUF_SEND)
00503       ALLOCATE(MESH%BUF_RECV)
00504 !
00505       IF(NCSIZE.GT.1) THEN
00506 !
00507 !       XSEG
00508         CALL BIEF_ALLVEC(1,MESH%XSEG,'XSEG  ',IELBOR(IELM1,2),1,2,MESH)
00509 !       YSEG
00510         CALL BIEF_ALLVEC(1,MESH%YSEG,'YSEG  ',IELBOR(IELM1,2),1,2,MESH)
00511 !       FAC
00512         CALL BIEF_ALLVEC(1,MESH%FAC,'FAC   ',IELM ,1,2,MESH)
00513 !
00514       ELSE
00515         CALL BIEF_ALLVEC(1,MESH%XSEG  ,'XSEG  ',0,1,0,MESH)
00516         CALL BIEF_ALLVEC(1,MESH%YSEG  ,'YSEG  ',0,1,0,MESH)
00517         CALL BIEF_ALLVEC(1,MESH%FAC   ,'FAC   ',0,1,0,MESH)
00518       ENDIF
00519 !
00520 !-----------------------------------------------------------------------
00521 !
00522 !     1) INTEGER VALUES (ALLOCATE BECAUSE THEY ARE POINTERS)
00523 !
00524       ALLOCATE(MESH%NELEM)
00525       MESH%NELEM  = BIEF_NBPTS(IELM0,MESH)
00526       ALLOCATE(MESH%NELMAX)
00527 !     WILL GIVE BACK NNELMAX FEEDED TO BIEF_ININDS ABOVE...
00528       MESH%NELMAX = BIEF_NBMPTS(IELM0,MESH)
00529 !
00530 !
00531 ! I DO USE MESH%NPTFR FOR THE NUMBER OF LATERAL BOUNDARY NODES
00532 ! IELBOR(IELM0,1) CHANGED TO IELBOR(IELM1,1)
00533 ! THE PROBLEM IS, THAT FOR 3D (IELM=41):
00534 ! BIEF_NBPTS(IELBOR(IELM0,1),MESH) IS THE NUMBER OF HORIZONTAL BOUNDARY ELEMENTS
00535 ! BIEF_NBPTS(IELBOR(IELM0,2),MESH) IS THE NUMBER OF VERTICAL BOUNDARY ELEMENTS
00536 ! BIEF_NBPTS(IELBOR(IELM1,1),MESH) IS THE NUMBER OF HORIZONTAL BOUNDARY NODES
00537 ! BIEF_NBPTS(IELBOR(IELM1,2),MESH) IS THE NUMBER OF VERTICAL BOUNDARY NODES
00538 !
00539 ! FUNNY, BUT THE 2D CASE IS NOT AFFECTED, BECAUSE THE NUMBER OF BOUNDARY
00540 ! SEGMENTS IS EQUAL TO THE NUMBER OF BOUNDARY NODES.
00541 !
00542       ALLOCATE(MESH%NPTFR)
00543       MESH%NPTFR  = BIEF_NBPTS(IELBOR(IELM1,2),MESH)
00544       ALLOCATE(MESH%NPTFRX)
00545       MESH%NPTFRX = BIEF_NBMPTS(IELBOR(IELM1,2),MESH)
00546 !
00547 ! NUMBER OF LATERAL BOUNDARY ELEMENTS
00548 !
00549       ALLOCATE(MESH%NELEB)
00550       ALLOCATE(MESH%NELEBX)
00551 !
00552 !     3D MESH
00553 !
00554       IF(IELM.EQ.31) THEN
00555 !       HERE NNELEB HAS BEEN READ IN THE GEOMETRY FILE
00556         MESH%NELEB   = NNELEB
00557         MESH%NELEBX  = NNELEB
00558       ELSEIF(IELM.EQ.11.OR.IELM.EQ.12.OR.IELM.EQ.13.OR.IELM.EQ.14) THEN
00559         MESH%NELEB   = NPTFR
00560         MESH%NELEBX  = NNPTFRX
00561       ELSEIF(IELM.EQ.41) THEN
00562         MESH%NELEB   = NPTFR*(NNPLAN-1)
00563         MESH%NELEBX  = NNPTFRX*(NNPLAN-1)
00564       ELSEIF(IELM.EQ.51) THEN
00565         MESH%NELEB   = 2*NPTFR*(NNPLAN-1)
00566         MESH%NELEBX  = 2*NNPTFRX*(NNPLAN-1)
00567       ELSE
00568         WRITE(LU,*) 'ALMESH, UNEXPECTED ELEMENT FOR NELEB:',IELM
00569         CALL PLANTE(1)
00570         STOP
00571       ENDIF
00572 !
00573       ALLOCATE(MESH%DIM)
00574       MESH%DIM    = DIMENS(IELM0)
00575       ALLOCATE(MESH%TYPELM)
00576       MESH%TYPELM = IELM0
00577       ALLOCATE(MESH%NPOIN)
00578       MESH%NPOIN  = BIEF_NBPTS(IELM1,MESH)
00579       ALLOCATE(MESH%NPMAX)
00580       MESH%NPMAX  = BIEF_NBMPTS(IELM1,MESH)
00581       ALLOCATE(MESH%MXPTVS)
00582       MESH%MXPTVS = MXPTVS
00583       ALLOCATE(MESH%MXELVS)
00584       MESH%MXELVS = MXELVS
00585 !     LV WILL BE RECOMPUTED LATER
00586       ALLOCATE(MESH%LV)
00587       MESH%LV     = 1
00588       ALLOCATE(MESH%NSEG)
00589       MESH%NSEG = BIEF_NBSEG(IELM1,MESH)
00590 !
00591 !     2) ARRAYS OF INTEGERS
00592 !
00593 !     ALLOCATES IKLE AND KLEI (SAME SIZE, 2 INVERTED DIMENSIONS)
00594 !
00595       ALLOCATE(MESH%IKLE)
00596       CALL BIEF_ALLVEC(2,MESH%IKLE,'IKLE  ',
00597      &                 IELM0,BIEF_NBPEL(IELM,MESH),1,MESH)
00598       ALLOCATE(MESH%KLEI)
00599       CALL BIEF_ALLVEC(2,MESH%KLEI,'KLEI  ',
00600      &                 IELM0,BIEF_NBPEL(IELM,MESH),1,MESH)
00601 !
00602 !     IFABOR
00603 !
00604       ALLOCATE(MESH%IFABOR)
00605       CALL BIEF_ALLVEC(2,MESH%IFABOR,'IFABOR',
00606      &                 IELM0,BIEF_NBFEL(IELM,MESH),1,MESH)
00607 !
00608 !     NELBOR
00609 !
00610 ! NELBOR & NULONE
00611 ! IT IS NOW CHANGED TO VERTICAL BOUNDARY ELEMENT...
00612 ! 2D NOT AFFECTED, 3D USAGE NELBO3(NPTFR,NETAGE) - NO. OF LAT. BD. ELEMENTS
00613 !
00614       ALLOCATE(MESH%NELBOR)
00615       CALL BIEF_ALLVEC(2,MESH%NELBOR,'NELBOR',IELBOR(IELM0,2),1,1,MESH)
00616 !
00617 !     NULONE
00618 !
00619 !
00620 ! EXTRAORDINARILY STRANGE GEOMETRICALLY
00621 ! IN 2D NUMBER OF BOUNDARY NODES IS EQUAL TO THE NUMBER OF BOUNDARY
00622 ! ELEMENTS... IN 3D IT IS NOT THE CASE!
00623 ! NULONE 3D IS USED INTERNALLY AS: NULONE(NPTFR,NETAGE,4)
00624 ! "ASSOCIATES THE LOCAL BOUNDARY NUMBERING TO LOCAL 3D NUMBERING"
00625 !
00626       ALLOCATE(MESH%NULONE)
00627 !
00628       CALL BIEF_ALLVEC(2,MESH%NULONE,'NULONE',
00629      &                 IELBOR(IELM0,2),
00630      &                 BIEF_NBPEL(IELBOR(IELM,2),MESH),1,MESH)
00631 !
00632 !!! NOTE : FOR THE TETRAHEDRONS, THIS IS NO LONGER THE CASE. WE READ THE
00633 !          BOUNDARY CONNECTIVITY TABLE BEFORE INITIALISING THE NUMBER OF
00634 !          BOUNDARY NODES AND ELEMENTS. THIS IS WELL DEFINED NOW.
00635 !
00636 ! IN 2D IT IS CALL BIEF_ALLVEC(2, MESH%NULONE, 'NULONE', 0,  2, 1,MESH)
00637 ! WHICH, IN 2D ONLY IS EQUIVALENT TO
00638 !             CALL BIEF_ALLVEC(2, MESH%NULONE, 'NULONE', 1,  2, 1,MESH)
00639 ! IN 3D IT IS CALL BIEF_ALLVEC(2, MESH%NULONE, 'NULONE', 20, 4, 1,MESH)
00640 !
00641 !
00642 !     KP1BOR
00643 !
00644       ALLOCATE(MESH%KP1BOR)
00645       CALL BIEF_ALLVEC(2,MESH%KP1BOR,'KP1BOR', IELBOR(IELM,1),2,1,MESH)
00646 !
00647 !     NBOR: GLOBAL NUMBERS OF THE BOUNDARY NODES
00648 !     ALLOCATES NBOR, IT WILL BE READ IN LECLIM
00649 !
00650       ALLOCATE(MESH%NBOR)
00651       CALL BIEF_ALLVEC(2,MESH%NBOR,'NBOR  ',IELBOR(IELM,2),1,1,MESH)
00652 !
00653 !     IKLBOR: IKLE FOR THE SEGMENTS OR BOUNDARY SIDES
00654 !
00655       ALLOCATE(MESH%IKLBOR)
00656 !
00657       IF(IELM.EQ.41.OR.IELM.EQ.51) THEN
00658 !       LATERAL BOUNDARY SIDES
00659 !       SEE ININDS FOR ELEMENTS 20 AND 21
00660 !       CALL BIEF_ALLVEC(2,MESH%IKLBOR,'IKLBOR',
00661 !    &                   IELBOR(IELM0,2),
00662 !    &                   BIEF_NBPEL(IELBOR(IELM1,2),MESH),1,MESH)
00663         CALL BIEF_ALLVEC(2,MESH%IKLBOR,'IKLBOR',
00664      &                   MESH%NELEBX,
00665      &                   BIEF_NBPEL(IELBOR(IELM1,2),MESH),0,MESH)
00666       ELSEIF(IELM.EQ.11.OR.IELM.EQ.12.OR.IELM.EQ.13
00667      &   .OR.IELM.EQ.31) THEN
00668         CALL BIEF_ALLVEC(2,MESH%IKLBOR,'IKLBOR',
00669      &                   IELBOR(IELM0,1),
00670      &                   BIEF_NBPEL(IELBOR(IELM ,2),MESH),1,MESH)
00671       ELSE
00672         WRITE(LU,*) 'ALMESH : UNKNOWN ELEMENT FOR IKLBOR:',IELM
00673         CALL PLANTE(1)
00674         STOP
00675       ENDIF
00676 !
00677 !     IFANUM: NUMBER OF THE SIDE IN ADJACENT ELEMENT
00678 !
00679       ALLOCATE(MESH%IFANUM)
00680       IF(CFG(1).EQ.2) THEN
00681         CALL BIEF_ALLVEC(2,MESH%IFANUM,'IFANUM',
00682      &                   3*BIEF_NBMPTS(IELM0,MESH)
00683      &                   + BIEF_NBMPTS(01   ,MESH) ,1,0 ,MESH)
00684       ELSEIF(CFG(1).NE.1.AND.CFG(1).NE.3) THEN
00685         IF(LNG.EQ.1) WRITE(LU,98) CFG(1)
00686         IF(LNG.EQ.2) WRITE(LU,99) CFG(1)
00687 98      FORMAT(1X,'ALMESH : STOCKAGE INCONNU :',1I6)
00688 99      FORMAT(1X,'ALMESH : UNKNOWN STORAGE:',1I6)
00689         CALL PLANTE(1)
00690         STOP
00691       ELSE
00692         CALL BIEF_ALLVEC(2,MESH%IFANUM,'IFANUM', 0 , 1,0,MESH )
00693       ENDIF
00694 !
00695 !     IKLEM1: INVERSE CONNECTIVITY TABLE FOR FRONTAL PRODUCT
00696 !     LIMVOI: LIMITING NUMBER OF A GIVEN NUMBER OF NEIGHBOURS
00697 !
00698       ALLOCATE(MESH%IKLEM1)
00699       ALLOCATE(MESH%LIMVOI)
00700       IF(CFG(2).EQ.2) THEN
00701 !       CALL BIEF_ALLVEC(2,MESH%IKLEM1,'IKLEM1',
00702 !                        NBMPTS(IELM1)*MXPTVS,4,0,MESH)
00703 !       FOR OPTASS=3: SYM AND NOT SYM ARE DIFFERENT
00704         CALL BIEF_ALLVEC(2,MESH%IKLEM1,'IKLEM1',
00705      &                   BIEF_NBMPTS(IELM1,MESH)*MXPTVS,8,0,MESH)
00706 !       11 IS HERE THE MAXIMUM MXPTVS PROGRAMMED IN OPASS
00707         CALL BIEF_ALLVEC(2,MESH%LIMVOI,'LIMVOI',11,2,0,MESH)
00708       ELSEIF(CFG(2).NE.1) THEN
00709         IF(LNG.EQ.1) WRITE(LU,96) CFG(2)
00710         IF(LNG.EQ.2) WRITE(LU,97) CFG(2)
00711 96      FORMAT(1X,'ALMESH : PRODUIT MATRICE-VECTEUR INCONNU :',1I6)
00712 97      FORMAT(1X,'ALMESH: UNKNOWN MATRIX-VECTOR PRODUCT:',1I6)
00713         CALL PLANTE(1)
00714         STOP
00715       ELSE
00716         CALL BIEF_ALLVEC(2,MESH%IKLEM1,'IKLEM1',0,4,0,MESH)
00717         CALL BIEF_ALLVEC(2,MESH%LIMVOI,'LIMVOI',0,2,0,MESH)
00718       ENDIF
00719 !
00720 !     INTEGER ARRAYS FOR SEGMENT-BASED STORAGE
00721 !
00722       ALLOCATE(MESH%GLOSEG)
00723       ALLOCATE(MESH%ELTSEG)
00724       ALLOCATE(MESH%ORISEG)
00725       ALLOCATE(MESH%GLOSEGBOR)
00726       ALLOCATE(MESH%ELTSEGBOR)
00727       ALLOCATE(MESH%ORISEGBOR)
00728       !
00729       CALL BIEF_ALLVEC(2,MESH%GLOSEG,'GLOSEG',
00730      &                 BIEF_NBSEG(IELM,MESH),2,0,MESH)
00731       CALL BIEF_ALLVEC(2,MESH%ELTSEG,'ELTSEG',
00732      &                 BIEF_NBMPTS(IELM0,MESH),
00733      &                 BIEF_NBSEGEL(IELM,MESH),0,MESH)
00734       CALL BIEF_ALLVEC(2,MESH%ORISEG,'ORISEG',
00735      &                 BIEF_NBMPTS(IELM0,MESH),
00736      &                 BIEF_NBSEGEL(IELM,MESH),0,MESH)
00737       CALL BIEF_ALLVEC(2,MESH%GLOSEGBOR,'GLOSEGBOR',
00738      &                 BIEF_NBSEG(IELB1,MESH),2,0,MESH)
00739       CALL BIEF_ALLVEC(2,MESH%ELTSEGBOR,'ELTSEGBOR',
00740      &                 BIEF_NBMPTS(IELB0,MESH),
00741      &                 BIEF_NBSEGEL(IELB1,MESH),0,MESH)
00742       CALL BIEF_ALLVEC(2,MESH%ORISEGBOR,'ORISEGBOR',
00743      &                 BIEF_NBMPTS(IELB0,MESH),
00744      &                 BIEF_NBSEGEL(IELB1,MESH),0,MESH)
00745 !
00746 !     INTEGER ARRAY FOR THE METHOD OF CHARACTERISTICS
00747 !     THE STARTING ELEMENT (0 IF NOT IN THIS SUBDOMAIN)
00748 !
00749       ALLOCATE(MESH%ELTCAR)
00750       CALL BIEF_ALLVEC(2,MESH%ELTCAR,'ELTCAR',IELM,1,1,MESH)
00751 !
00752 !     INTEGER ARRAYS FOR PARALLEL MODE
00753 !
00754 !     KNOLG
00755 !     NACHB
00756 !     ISEG
00757 !     INDPU
00758 !     NHP
00759 !     NHM
00760 !
00761       ALLOCATE(MESH%KNOLG)
00762       ALLOCATE(MESH%NACHB)
00763       ALLOCATE(MESH%ISEG)
00764       ALLOCATE(MESH%INDPU)
00765       ALLOCATE(MESH%NHP)
00766       ALLOCATE(MESH%NHM)
00767       ALLOCATE(MESH%IFAPAR)
00768       ALLOCATE(MESH%NB_NEIGHB)
00769       ALLOCATE(MESH%NB_NEIGHB_SEG)
00770 !     THERE ALLVEC IS IN PARINI
00771       ALLOCATE(MESH%NB_NEIGHB_PT)
00772       ALLOCATE(MESH%LIST_SEND)
00773       ALLOCATE(MESH%NH_COM)
00774       ALLOCATE(MESH%NB_NEIGHB_PT_SEG)
00775       ALLOCATE(MESH%LIST_SEND_SEG)
00776       ALLOCATE(MESH%NH_COM_SEG)
00777 !
00778 !     DATA STRUCTURE IN PARALLEL
00779 !
00780       IF(NCSIZE.GT.1) THEN
00781 !
00782         CALL BIEF_ALLVEC(2,MESH%KNOLG,'KNOLG ',
00783      &                   IELM1            ,1,1,MESH)
00784         CALL BIEF_ALLVEC(2,MESH%NACHB,'NACHB ',
00785      &                   NBMAXNSHARE*NPTIR,1,0,MESH)
00786         CALL BIEF_ALLVEC(2,MESH%ISEG ,'ISEG  ',
00787      &                   IELBOR(IELM1,1)  ,1,1,MESH)
00788         CALL BIEF_ALLVEC(2,MESH%INDPU,'INDPU ',
00789      &                   IELM1              ,1,1,MESH)
00790         CALL BIEF_ALLVEC(2,MESH%NHP  ,'NHP   ',
00791      &                   NBMAXDSHARE*2*NPTIR,1,0,MESH)
00792         CALL BIEF_ALLVEC(2,MESH%NHM  ,'NHM   ',
00793      &                   NBMAXDSHARE*2*NPTIR,1,0,MESH)
00794         CALL BIEF_ALLVEC(2,MESH%IFAPAR,'IFAPAR',
00795      &                   10,6,1,MESH)
00796 !
00797         DO I=1,6*BIEF_NBPTS(10,MESH)
00798           MESH%IFAPAR%I(I)=0
00799         ENDDO
00800 !
00801       ELSE
00802 !
00803         CALL BIEF_ALLVEC(2,MESH%KNOLG ,'KNOLG ',0,1,0,MESH)
00804         CALL BIEF_ALLVEC(2,MESH%NACHB ,'NACHB ',0,1,0,MESH)
00805         CALL BIEF_ALLVEC(2,MESH%ISEG  ,'ISEG  ',0,1,0,MESH)
00806         CALL BIEF_ALLVEC(2,MESH%INDPU ,'INDPU ',0,1,0,MESH)
00807         CALL BIEF_ALLVEC(2,MESH%NHP   ,'NHP   ',0,1,0,MESH)
00808         CALL BIEF_ALLVEC(2,MESH%NHM   ,'NHM   ',0,1,0,MESH)
00809         CALL BIEF_ALLVEC(2,MESH%IFAPAR,'IFAPAR',0,1,0,MESH)
00810 !
00811       ENDIF
00812 !
00813 !-----------------------------------------------------------------------
00814 !
00815 !  FINITE VOLUMES
00816 !
00817       ALLOCATE(MESH%NUBO)
00818       IF(EQUA(1:15).EQ.'SAINT-VENANT VF') THEN
00819         CALL BIEF_ALLVEC(2,MESH%NUBO,'NUBO  ',2*NSEG,1,0,MESH)
00820       ELSE
00821         CALL BIEF_ALLVEC(2,MESH%NUBO,'NUBO  ',     0,1,0,MESH)
00822       ENDIF
00823 !
00824       ALLOCATE(MESH%JMI)
00825       IF(EQUA(1:15).EQ.'SAINT-VENANT VF') THEN
00826         CALL BIEF_ALLVEC(2,MESH%JMI,'JMI   ',NSEG,1,0,MESH)
00827       ELSE
00828         CALL BIEF_ALLVEC(2,MESH%JMI,'JMI   ',   0,1,0,MESH)
00829       ENDIF
00830 !
00831 !-----------------------------------------------------------------------
00832 !
00833 !     FILLS ARRAYS IKLE, X AND Y (AND Z)
00834 !
00835 !     PRISMS CUT INTO TETRAHEDRONS
00836 !
00837       IF(IELM.EQ.51) THEN
00838 !
00839 !       NOTE : NO Z HERE, AS IELM.EQ.41, SEE NOTE BELOW
00840         CALL READGEO3(MESH%KNOLG%I,MESH%X%R,MESH%Y%R,NPOIN,NFIC,IB,
00841      &                FFORMAT,PROJEC,LATI,LONGI)
00842 !
00843         CALL CPIKLE3(MESH%IKLE%I,IKLES,NELEM,NNELMAX,NPOIN,NNPLAN,
00844      &               MESH%KNOLG%I)
00845 !
00846 !     PRISMS
00847 !
00848       ELSEIF(IELM.EQ.41) THEN
00849 !
00850 !       NOTE : WITH PRISMS Z IS COMPUTED WITH ZF AND H, OR
00851 !              READ IN THE PREVIOUS COMPUTATION FILE, HENCE NO Z HERE
00852         CALL READGEO3(MESH%KNOLG%I,MESH%X%R,MESH%Y%R,NPOIN,NFIC,IB,
00853      &                FFORMAT,PROJEC,LATI,LONGI)
00854 !
00855         CALL CPIKLE2(MESH%IKLE%I,MESH%KLEI%I,IKLES,
00856      &               NELEM,NNELMAX,NPOIN,NNPLAN)
00857 !
00858 !     TRIANGLES OR TETRAHEDRONS
00859 !
00860       ELSEIF(IELM.EQ.11.OR.IELM.EQ.12.OR.IELM.EQ.13.OR.IELM.EQ.14
00861      &   .OR.IELM.EQ.31) THEN
00862 !
00863 !       IKLES(NDP,NELEM) COPIED INTO IKLE(NELMAX,NDP) AND KLEI(NDP,NELMAX)
00864         DO I = 1,NDP
00865           DO IELEM  = 1,NELEM
00866             MESH%IKLE%I((I-1)*NNELMAX+IELEM) = IKLES((IELEM-1)*NDP+I)
00867             MESH%KLEI%I((IELEM-1)*NDP+I)     = IKLES((IELEM-1)*NDP+I)
00868           ENDDO
00869         ENDDO
00870         IF(IELM.EQ.11.OR.IELM.EQ.12.OR.IELM.EQ.13.OR.IELM.EQ.14) THEN
00871           CALL READGEO3(MESH%KNOLG%I,MESH%X%R,MESH%Y%R,NPOIN,NFIC,IB,
00872      &                  FFORMAT,PROJEC,LATI,LONGI)
00873         ELSEIF(IELM.EQ.31) THEN
00874 !         TETRAHEDRONS: READS THE Z COORDINATE AFTER X AND Y
00875           CALL READGEO3(MESH%KNOLG%I,MESH%X%R,MESH%Y%R,NPOIN,NFIC,IB,
00876      &                  FFORMAT,PROJEC,LATI,LONGI,Z=MESH%Z%R)
00877         ENDIF
00878 !
00879       ELSE
00880 !
00881 ! OTHER ELEMENT TYPES
00882 !
00883         WRITE(LU,*) 'ALMESH : UNKNOWN ELEMENT:',IELM
00884         CALL PLANTE(1)
00885         STOP
00886 !
00887       ENDIF
00888 !
00889 !     NOW WE HAVE KNOLG IN 2D
00890 !     FINDING THE NUMBER OF POINTS IN THE ORIGINAL MESH
00891 !     = MAXIMUM OF ALL KNOLG OF ALL SUB-DOMAINS
00892 !
00893       NPOIN_GLOB=0
00894       IF(NCSIZE.GT.1) THEN
00895         DO I=1,NPOIN
00896           NPOIN_GLOB=MAX(NPOIN_GLOB,MESH%KNOLG%I(I))
00897         ENDDO
00898         NPOIN_GLOB=P_IMAX(NPOIN_GLOB)
00899       ENDIF
00900 !
00901 !     COMPLEMENTS: ARRAYS X, Y FOR PRISMS AND TETRAHEDRONS
00902 !                  KNOLG FOR PRISMS AND TETRAHEDRONS
00903 !
00904       IF(IELM.EQ.41.OR.IELM.EQ.51) THEN
00905         DO IPLAN = 2,NNPLAN
00906           CALL OV_2( 'X=Y     ' , MESH%X%R,IPLAN, MESH%X%R,1,
00907      &                            MESH%X%R,1, 0.D0, NNPMAX,NPOIN)
00908           CALL OV_2( 'X=Y     ' , MESH%Y%R,IPLAN, MESH%Y%R,1,
00909      &                            MESH%Y%R,1, 0.D0, NNPMAX,NPOIN)
00910         ENDDO
00911         IF(NCSIZE.GT.1) THEN
00912           DO IPLAN = 2,NNPLAN
00913             DO I=1,NPOIN
00914               MESH%KNOLG%I(I+(IPLAN-1)*NPOIN)=
00915      &        MESH%KNOLG%I(I)+(IPLAN-1)*NPOIN_GLOB
00916             ENDDO
00917           ENDDO
00918         ENDIF
00919       ENDIF
00920 !
00921 !-----------------------------------------------------------------------
00922 !
00923 ! DEALLOCATES TEMPORARY ARRAYS
00924 !
00925       DEALLOCATE(IKLES)
00926 !
00927 !-----------------------------------------------------------------------
00928 !
00929       IF(LNG.EQ.1) WRITE(LU,*) 'MAILLAGE : ',NOM,' ALLOUE'
00930       IF(LNG.EQ.2) WRITE(LU,*) 'MESH: ',NOM,' ALLOCATED'
00931 !
00932 !-----------------------------------------------------------------------
00933 !
00934       RETURN
00935       END

Generated on Fri Aug 31 2013 18:12:58 by S.E.Bourban (HRW) using doxygen 1.7.0