5 &(mesh,nom,ielm,spheri,cfg,fformat,nfic,equa,refine,nplan,npmax,
6 & nptfrx,nelmax,projection,lati0,longi0,convergence,rlevel)
126 TYPE(bief_mesh) ,
INTENT(INOUT) :: MESH
127 INTEGER ,
INTENT(IN) :: IELM
128 INTEGER ,
INTENT(IN) :: NFIC
129 CHARACTER(LEN=8) ,
INTENT(IN) :: FFORMAT
130 LOGICAL ,
INTENT(IN) :: SPHERI
131 CHARACTER(LEN=6) ,
INTENT(IN) :: NOM
132 CHARACTER(LEN=20),
INTENT(IN) :: EQUA
133 INTEGER ,
INTENT(INOUT) :: CFG(2)
134 INTEGER ,
INTENT(IN) :: REFINE
135 INTEGER ,
INTENT(IN),
OPTIONAL :: NPLAN
136 INTEGER ,
INTENT(IN),
OPTIONAL :: NPMAX
137 INTEGER ,
INTENT(IN),
OPTIONAL :: NPTFRX
138 INTEGER ,
INTENT(IN),
OPTIONAL :: NELMAX,RLEVEL
139 INTEGER ,
INTENT(IN),
OPTIONAL :: PROJECTION
140 DOUBLE PRECISION ,
INTENT(IN),
OPTIONAL :: LATI0,LONGI0
141 LOGICAL ,
INTENT(IN),
OPTIONAL :: CONVERGENCE
145 INTEGER D,IELM0,IELM1,STOCFG,IELB0,IELB1,NSEG,NNPMAX
146 INTEGER NNPTFRX,NNELEB,ERR,NNELMAX,NNPLAN,NPOIN,NPTFR,NELEM
147 INTEGER MXPTVS,MXELVS,NDP,IELEM,NSEGBOR,IPLAN,NPOIN_GLOB
148 INTEGER NVAR,TYP_ELEM,TYP_BND_ELEM,IERR,REFLEVEL
153 INTEGER,
ALLOCATABLE :: IKLES(:)
157 INTEGER,
ALLOCATABLE :: IPOBO(:)
159 INTEGER IELB0V,IELB1V,I
161 CHARACTER(LEN=80) TITLE
164 DOUBLE PRECISION LATI,LONGI
167 DOUBLE PRECISION,
PARAMETER :: R=6.37d6
171 IF(
PRESENT(convergence))
THEN 176 IF(
PRESENT(rlevel).AND.conv)
THEN 181 IF(
PRESENT(projection))
THEN 189 IF(
PRESENT(lati0))
THEN 197 IF(
PRESENT(longi0))
THEN 210 ALLOCATE(mesh%X_ORIG)
211 ALLOCATE(mesh%Y_ORIG)
214 & nelem,nptfr,nptir,ndp,nnplan,
215 & mesh%X_ORIG,mesh%Y_ORIG,
216 & typ_bnd_elem,nneleb)
220 ALLOCATE(ikles(nelem*ndp),stat=err)
221 CALL check_allocate(err,
'ALMESH:IKLES')
225 ALLOCATE(ipobo(npoin),stat=err)
226 CALL check_allocate(err,
'ALMESH:IPOBO')
231 & typ_bnd_elem,nneleb,ikles,ipobo)
236 CALL mxptel(mxptvs,mxelvs,ikles,ielm,
237 & npoin,nelem,ndp,ipobo,.true.)
246 CALL segbor(nsegbor,ikles,nelem,npoin)
255 IF(
PRESENT(npmax))
THEN 260 nnpmax = npoin+(nelem*(4**refine-1)+nsegbor*(2**refine-1))/2
264 IF(
PRESENT(nptfrx))
THEN 268 nnptfrx = nsegbor*2**refine
272 IF(
PRESENT(nelmax))
THEN 276 nnelmax = nelem*4**refine
280 IF(
PRESENT(nplan))
THEN 292 IF(reflevel.GT.0)
THEN 297 nsegbor=nsegbor*2**reflevel
309 IF(reflevel.EQ.0)
ALLOCATE(mesh%NDS(0:81,7))
310 CALL bief_ininds(npoin,nptfr,nelem,nnpmax,nnptfrx,nnelmax,
311 & nnplan,nsegbor,mesh%NDS,nneleb)
355 CALL bief_allvec(1,mesh%SURFAC,
'SURFAC',ielm0,1,1,mesh)
360 CALL bief_allvec(1,mesh%SURDET,
'SURDET',ielm0,1,1,mesh)
367 CALL bief_allvec(1,mesh%LGSEG,
'LGSEG ',ielb0v,1,1,mesh)
378 CALL bief_allvec(1,mesh%XSGBOR,
'XSGBOR',ielb0v,4,1,mesh)
379 CALL bief_allvec(1,mesh%YSGBOR,
'YSGBOR',ielb0v,4,1,mesh)
381 CALL bief_allvec(1,mesh%ZSGBOR,
'ZSGBOR',ielb0v,4,1,mesh)
383 CALL bief_allvec(1,mesh%ZSGBOR,
'ZSGBOR', 0,4,0,mesh)
395 CALL bief_allvec(1,mesh%XNEBOR,
'XNEBOR',ielb1,2,1,mesh)
396 CALL bief_allvec(1,mesh%YNEBOR,
'YNEBOR',ielb1,2,1,mesh)
399 CALL bief_allvec(1,mesh%ZNEBOR,
'ZNEBOR',ielb1,2,1,mesh)
401 CALL bief_allvec(1,mesh%ZNEBOR,
'ZNEBOR', 0,2,0,mesh)
426 CALL bief_allvec(1,mesh%COSLAT,
'COSLAT',ielm,1,2,mesh)
427 CALL bief_allvec(1,mesh%SINLAT,
'SINLAT',ielm,1,2,mesh)
428 CALL cpstvc(mesh%X,mesh%COSLAT)
429 CALL cpstvc(mesh%X,mesh%SINLAT)
431 CALL bief_allvec(1,mesh%COSLAT,
'COSLAT', 0,1,0,mesh)
432 CALL bief_allvec(1,mesh%SINLAT,
'SINLAT', 0,1,0,mesh)
438 CALL bief_allvec(1,mesh%DISBOR,
'DISBOR',ielb0,1,1,mesh)
445 CALL bief_allmat(mesh%M,
'M ',ielm,ielm,cfg,
'Q',
'Q',mesh)
452 IF(cfg(1).EQ.3.OR.10*(ielm/10).EQ.10)
THEN 453 CALL bief_allmat(mesh%MSEG,
'MSEG ',ielm,ielm,cfg,
'Q',
'Q',mesh)
455 CALL bief_allmat(mesh%MSEG,
'MSEG ',ielm,ielm,cfg,
'0',
'0',mesh)
480 IF(equa(1:15).EQ.
'SAINT-VENANT VF')
THEN 482 CALL bief_allvec(1,mesh%VNOIN ,
'VNOIN ',3*nseg,1,0,mesh)
483 CALL bief_allvec(1,mesh%CMI ,
'CMI ',2*nseg,1,0,mesh)
484 CALL bief_allvec(1,mesh%AIRST ,
'AIRST ',2*nseg,1,0,mesh)
485 CALL bief_allvec(1,mesh%DTHAUT,
'DTHAUT',ielm1 ,1,2,mesh)
486 CALL bief_allvec(1,mesh%DPX ,
'DPX ',ielm0 ,3,2,mesh)
487 CALL bief_allvec(1,mesh%DPY ,
'DPY ',ielm0 ,3,2,mesh)
489 CALL bief_allvec(1,mesh%VNOIN ,
'VNOIN ', 0,1,0,mesh)
491 CALL bief_allvec(1,mesh%AIRST ,
'AIRST ', 0,1,0,mesh)
492 CALL bief_allvec(1,mesh%DTHAUT,
'DTHAUT', 0,1,0,mesh)
500 CALL bief_allvec(1,mesh%COORDG ,
'COORDG',4*nseg,1,0,mesh)
522 CALL bief_allvec(2,mesh%IFAC,
'IFAC ',ielm ,1,2,mesh)
533 IF(reflevel.EQ.0)
ALLOCATE(mesh%NELEM)
535 IF(reflevel.EQ.0)
ALLOCATE(mesh%NELMAX)
551 IF(reflevel.EQ.0)
ALLOCATE(mesh%NPTFR)
553 IF(reflevel.EQ.0)
ALLOCATE(mesh%NPTFRX)
558 IF(reflevel.EQ.0)
ALLOCATE(mesh%NELEB)
559 IF(reflevel.EQ.0)
ALLOCATE(mesh%NELEBX)
567 ELSEIF(ielm.EQ.11.OR.ielm.EQ.12.OR.ielm.EQ.13.OR.ielm.EQ.14)
THEN 569 mesh%NELEBX = nnptfrx
570 ELSEIF(ielm.EQ.41)
THEN 571 mesh%NELEB = nptfr*(nnplan-1)
572 mesh%NELEBX = nnptfrx*(nnplan-1)
573 ELSEIF(ielm.EQ.51)
THEN 574 mesh%NELEB = 2*nptfr*(nnplan-1)
575 mesh%NELEBX = 2*nnptfrx*(nnplan-1)
577 WRITE(
lu,*)
'ALMESH, UNEXPECTED ELEMENT FOR NELEB:',ielm
582 IF(reflevel.EQ.0)
ALLOCATE(mesh%DIM1)
584 IF(reflevel.EQ.0)
ALLOCATE(mesh%TYPELM)
586 IF(reflevel.EQ.0)
ALLOCATE(mesh%TYPELMBND)
587 mesh%TYPELMBND = typ_bnd_elem
588 IF(reflevel.EQ.0)
ALLOCATE(mesh%NPOIN)
590 IF(reflevel.EQ.0)
ALLOCATE(mesh%NPMAX)
592 IF(reflevel.EQ.0)
ALLOCATE(mesh%MXPTVS)
594 IF(reflevel.EQ.0)
ALLOCATE(mesh%MXELVS)
597 IF(reflevel.EQ.0)
ALLOCATE(mesh%LV)
599 IF(reflevel.EQ.0)
ALLOCATE(mesh%NSEG)
668 IF(ielm.EQ.41.OR.ielm.EQ.51)
THEN 677 ELSEIF(ielm.EQ.11.OR.ielm.EQ.12.OR.ielm.EQ.13
678 & .OR.ielm.EQ.31)
THEN 683 WRITE(
lu,*)
'ALMESH : UNKNOWN ELEMENT FOR IKLBOR:',ielm
695 ELSEIF(cfg(1).NE.1.AND.cfg(1).NE.3)
THEN 697 99
FORMAT(1x,
'ALMESH : UNKNOWN STORAGE:',1i6)
701 CALL bief_allvec(2,mesh%IFANUM,
'IFANUM', 0 , 1,0,mesh )
716 CALL bief_allvec(2,mesh%LIMVOI,
'LIMVOI',11,2,0,mesh)
717 ELSEIF(cfg(2).NE.1)
THEN 719 97
FORMAT(1x,
'ALMESH: UNKNOWN MATRIX-VECTOR PRODUCT:',1i6)
723 CALL bief_allvec(2,mesh%IKLEM1,
'IKLEM1',0,4,0,mesh)
724 CALL bief_allvec(2,mesh%LIMVOI,
'LIMVOI',0,2,0,mesh)
757 CALL bief_allvec(2,mesh%ELTCAR,
'ELTCAR',ielm,1,1,mesh)
775 IF (reflevel.EQ.0)
ALLOCATE(mesh%NB_NEIGHB)
776 IF (reflevel.EQ.0)
ALLOCATE(mesh%NB_NEIGHB_SEG)
792 & nbmaxnshare*nptir,1,0,mesh)
794 &
ielbor(ielm1,1) ,1,1,mesh)
798 & nbmaxdshare*2*nptir,1,0,mesh)
800 & nbmaxdshare*2*nptir,1,0,mesh)
801 CALL bief_allvec(2,mesh%IFAPAR,
'IFAPAR',10,6,1,mesh)
809 CALL bief_allvec(2,mesh%KNOLG ,
'KNOLG ',0,1,0,mesh)
810 CALL bief_allvec(2,mesh%NACHB ,
'NACHB ',0,1,0,mesh)
812 CALL bief_allvec(2,mesh%INDPU ,
'INDPU ',0,1,0,mesh)
815 CALL bief_allvec(2,mesh%IFAPAR,
'IFAPAR',0,1,0,mesh)
824 IF(equa(1:15).EQ.
'SAINT-VENANT VF')
THEN 825 CALL bief_allvec(2,mesh%NUBO,
'NUBO ',2*nseg,1,0,mesh)
831 IF(equa(1:15).EQ.
'SAINT-VENANT VF')
THEN 841 IF(reflevel.EQ.0)
THEN 851 CALL check_call(ierr,
'ALMESH:GET_MESH_L2G_NUMBERING')
861 CALL cpikle3(mesh%IKLE%I,ikles,nelem,nnelmax,npoin,nnplan,
866 ELSEIF(ielm.EQ.41)
THEN 873 CALL cpikle2(mesh%IKLE%I,mesh%KLEI%I,ikles,
874 & nelem,nnelmax,npoin,nnplan)
878 ELSEIF(ielm.EQ.11.OR.ielm.EQ.12.OR.ielm.EQ.13.OR.ielm.EQ.14
879 & .OR.ielm.EQ.31)
THEN 884 mesh%IKLE%I((i-1)*nnelmax+ielem) = ikles((ielem-1)*ndp+i)
885 mesh%KLEI%I((ielem-1)*ndp+i) = ikles((ielem-1)*ndp+i)
888 IF(ielm.EQ.11.OR.ielm.EQ.12.OR.ielm.EQ.13.OR.ielm.EQ.14)
THEN 891 ELSEIF(ielm.EQ.31)
THEN 894 & projec,lati,longi,z=mesh%Z%R)
901 WRITE(
lu,*)
'ALMESH: UNKNOWN ELEMENT:',ielm
914 npoin_glob=max(npoin_glob,mesh%KNOLG%I(i))
916 npoin_glob=
p_max(npoin_glob)
922 IF(ielm.EQ.41.OR.ielm.EQ.51)
THEN 924 CALL ov_2(
'X=Y ' , mesh%X%R,iplan, mesh%X%R,1,
925 & mesh%X%R,1, 0.d0, nnpmax,npoin)
926 CALL ov_2(
'X=Y ' , mesh%Y%R,iplan, mesh%Y%R,1,
927 & mesh%Y%R,1, 0.d0, nnpmax,npoin)
932 mesh%KNOLG%I(i+(iplan-1)*npoin)=
933 & mesh%KNOLG%I(i)+(iplan-1)*npoin_glob
956 WRITE(
lu,*)
'MESH: ',nom,
' ALLOCATED'
subroutine mxptel(MXPTVS, MXELVS, IKLES, IELM, NPOIN, NELEM, NDP, IPOBO, LISTIN)
integer function dimens(IELM)
integer function bief_nbpts(IELM, MESH)
integer function bief_nbpel(IELM, MESH)
integer function bief_nbfel(IELM, MESH)
subroutine bief_allvec(NAT, VEC, NOM, IELM, DIM2, STATUT, MESH)
subroutine ov_2(OP, X, DIMX, Y, DIMY, Z, DIMZ, C, DIM1, NPOIN)
subroutine bief_allmat(MAT, NOM, IELM1, IELM2, CFG, TYPDIA, TYPEXT, MESH)
subroutine read_mesh_info(FFORMAT, NFIC, TITLE, NVAR, NPOIN, TYP_ELEM, NELEM, NPTFR, NPTIR, NDP, NPLAN, X_ORIG, Y_ORIG, TYP_BND_ELEM, NELEBD)
subroutine bief_ininds(NPOIN, NPTFR, NELEM, NPMAX, NPTFX, NELMAX, NPLAN, NSEGBOR, NDS, NELEB)
subroutine segbor(NSEGBOR, IKLES, NELEM, NPOIN)
integer function ielbor(IELM, I)
subroutine read_mesh_coord(FFORMAT, NFIC, X, Y, NPOIN, PROJECTION, LATI0, LONGI0, Z)
subroutine cpikle2(IKLE3, KLEI3, IKLES, NELEM2, NELMAX2, NPOIN2, NPLAN)
integer function bief_nbsegel(IELM, MESH)
subroutine first_all_biefobj(OBJ)
subroutine almesh(MESH, NOM, IELM, SPHERI, CFG, FFORMAT, NFIC, EQUA, REFINE, NPLAN, NPMAX, NPTFRX, NELMAX, PROJECTION, LATI0, LONGI0, CONVERGENCE, RLEVEL)
subroutine read_mesh_conn(FFORMAT, NFIC, NPOIN, TYP_ELEM, NELEM, NDP, TYP_BND_ELEM, NELEBD, IKLE, IPOBO)
integer function bief_nbmpts(IELM, MESH)
subroutine cpikle3(IKLE3, IKLES, NELEM2, NELMAX2, NPOIN2, NPLAN, KNOLG)
subroutine get_mesh_l2g_numbering(FFORMAT, FID, KNOLG, NPOIN, IERR)
integer function bief_nbseg(IELM, MESH)