49 . X , V , ITAB , IPART_STATE, NODTAG ,
50 . IPART , IPARTS , IPARTQ, IPARTTG , MAT_PARAM,
51 . IGEO , IPARG , IXS , IXQ , IXTG ,
52 . ELBUF_TAB, MULTI_FVM, BUFMAT, IPM)
69 USE multimat_param_mod ,
ONLY : m51_n0phas, m51_nvphas
70 USE matparam_def_mod,
ONLY : matparam_struct_
71 use element_mod ,
only : nixs,nixq,nixtg
75#include "implicit_f.inc"
91 INTEGER,
INTENT(IN) :: ITAB(NUMNOD)
93 INTEGER,
INTENT(INOUT) :: NODTAG(NUMNOD),
95 INTEGER,
TARGET :: IPARTS(*),IPARTQ(*),IPARTTG(*)
96 my_real,
INTENT(IN) :: X(3,NUMNOD),V(3,NUMNOD)
97 my_real,
INTENT(IN),
TARGET :: bufmat(*)
98 TYPE (ELBUF_STRUCT_),
DIMENSION(NGROUP),
TARGET,
INTENT(IN) :: ELBUF_TAB
99 TYPE(multi_fvm_struct),
INTENT(IN) :: MULTI_FVM
100 TYPE(matparam_struct_) ,
DIMENSION(NUMMAT) INTENT(IN)
104 INTEGER I, N, JJ, J, IPRT, K, KK, INOD
105 INTEGER NG, NEL, NFT, LFT, LLT, ITY, ISOLNOD, NPT
106 INTEGER NUM_CENTROIDS, MLW, NBMAT, NB2, ISUBMAT, NNOD
108 TYPE(g_bufel_) ,
POINTER :: GBUF
109 my_real min_x,min_y,min_z,max_x,max_y,max_z,p0(3),p0_inf(3),p0_sup(3),length
110 my_real shift_cy,shift_cz
111 my_real shift_ny,shift_nz
114 my_real dotprod,tol,xyz(3),vel(3),dist,vect(3)
115 CHARACTER FILNAM*2048, SHORTNAME*128, CHSTAT*4
116 INTEGER XMIN_CELL_ID,YMIN_CELL_ID,ZMIN_CELL_ID,XMAX_CELL_ID,YMAX_CELL_ID,ZMAX_CELL_ID
117 INTEGER IS_ITY_1, IS_ITY_2, IS_ITY_7, IMAT, NPAR, IADBUF
118 INTEGER,
POINTER,
DIMENSION(:) :: IPART_PTR
119 my_real,
POINTER,
DIMENSION(:) :: uparam
120 TYPE(buf_mat_) ,
POINTER :: MBUF
121 INTEGER,
ALLOCATABLE,
DIMENSION(:,:) :: GET_CELL_FOM_CENTROID
122 INTEGER NPTS(NSPMD),NCELL(NSPMD),NPTS_TOT,
123 my_real,
DIMENSION(:,:),
ALLOCATABLE :: work
124 my_real :: len_(nspmd),len_tot
125 my_real :: shift_cy_min, shift_ny_min
126 INTEGER,
ALLOCATABLE,
DIMENSION(:) :: IDX, NODTAG_G
128INTEGER :: LEN, LEN_TMP_NAME
129 CHARACTER :: TMP_NAME*2048
130 INTEGER :: IFILNAM(2048)
170 isolnod = iparg(28,ng)
173 gbuf => elbuf_tab(ng)%GBUF
182 ipart_ptr => iparts(1:numels)
187 ipart_ptr => ipartq(1:numelq)
188 ELSEIF(ity == 7 .AND. n2d /= 0)
THEN
192 ipart_ptr => iparttg(1:numeltg)
199 IF(ipart_state(iprt)==0)cycle
200 num_centroids = num_centroids +1
202 IF(is_ity_1==1)inod=ixs(1+k,n)
203 IF(is_ity_2==1)inod=ixq(1+k,n)
204 IF(is_ity_7==1)inod=ixtg(1+k,n)
205 IF(is_ity_1==1)nodtag(ixs(1+k,n)) = 1
206 IF(is_ity_2==1)nodtag(ixq(1+k,n)) = 1
207 IF(is_ity_7==1)nodtag(ixtg(1+k,n)) = 1
208 IF(x(1,inod)<min_x)
THEN
212 IF(x(2,inod)<min_y)
THEN
216 IF(x(3,inod)<min_z)
THEN
220 IF(x(1,inod)>max_x)
THEN
224 IF(x(2,inod)>max_y)
THEN
228 IF(x(3,inod)>max_z)
THEN
241 state_inimap_buf(1)%NUM_CENTROIDS = num_centroids
242 state_inimap_buf(1)%NUM_POINTS = 0
246 IF(nodtag(i) == 1)
THEN
253 IF(.NOT.
ALLOCATED(state_inimap_buf(1)%CELL_IDS))
ALLOCATE(state_inimap_buf(1)%CELL_IDS(num_centroids))
254 IF(.NOT.
ALLOCATED(state_inimap_buf(1)%POS_CENTROIDS))
ALLOCATE(state_inimap_buf(1)%POS_CENTROIDS(num_centroids))
255 IF(.NOT.
ALLOCATED(state_inimap_buf(1)%POS2_CENTROIDS))
ALLOCATE(state_inimap_buf(1)%POS2_CENTROIDS(num_centroids))
256 IF(.NOT.
ALLOCATED(get_cell_fom_centroid))
THEN
257 ALLOCATE(get_cell_fom_centroid(2,num_centroids))
260 IF(num_centroids > 0)
THEN
266 vect(1:3)=(/lx,ly,lz/)
267 length = sqrt(vect(2)*vect(2) + vect(3)*vect(3))
269 p0_inf(2) = sum( x(2,ixs(2:9,ymin_cell_id)) ) / npt
270 p0_inf(3) = sum( x(3,ixs(2:9,zmin_cell_id)) ) / npt
271 ELSEIF(is_ity_2==1)
THEN
272 p0_inf(2) = sum( x(2,ixq(2:5,ymin_cell_id)) ) / npt
273 p0_inf(3) = sum( x(3,ixq(2:5,zmin_cell_id)) ) / npt
274 ELSEIF(is_ity_7==1)
THEN
275 p0_inf(2) = sum( x(2,ixtg(2:4,ymin_cell_id)) ) / npt
276 p0_inf(3) = sum( x(3,ixtg(2:4,zmin_cell_id)) ) / npt
280 state_inimap_buf(1)%SHIFT_Cy = shift_cy
281 state_inimap_buf(1)%SHIFT_Cz = shift_cz
282 state_inimap_buf(1)%LENGTH = length
284 state_inimap_buf(1)%SHIFT_Cy = zero
285 state_inimap_buf(1)%SHIFT_Cz = zero
286 state_inimap_buf(1)%LENGTH = zero
296 state_inimap_buf(1)%SHIFT_Ny = shift_ny
297 state_inimap_buf(1)%SHIFT_Nz = shift_nz
305 isolnod = iparg(28,ng)
308 gbuf => elbuf_tab(ng)%GBUF
316 IF(ipart_state(iprt)==0)cycle
319 p0(2) = sum( x(2,ixs(2:9,n)) ) / npt
320 p0(3) = sum( x(3,ixs(2:9,n)) ) / npt
321 cell_id = ixs(nixs,n)
322 ELSEIF(is_ity_2==1)
THEN
323 p0(2) = sum( x(2,ixq(2:5,n)) ) / npt
324 p0(3) = sum( x(3,ixq(2:5,n)) ) / npt
325 cell_id = ixq(nixq,n)
326 ELSEIF(is_ity_7==1)
THEN
327 p0(2) = sum( x(2,ixtg(2:4,n)) ) / npt
328 p0(3) = sum( x(3,ixtg(2:4,n)) ) / npt
329 cell_id = ixtg(nixtg,n)
337 get_cell_fom_centroid(1,k) = ng
338 get_cell_fom_centroid(2,k) = i
346 IF(.NOT.
ALLOCATED(idx))
ALLOCATE(idx(num_centroids))
347 DO k=1,num_centroids ; idx(k)=k;
ENDDO
348 IF(num_centroids>0)
CALL quicksort(work(:,3), idx, 1, num_centroids)
351 state_inimap_buf(1)%POS_CENTROIDS(k) = work(idx(k),1)
352 state_inimap_buf(1)%POS2_CENTROIDS(k) = work(idx(k),2)
353 state_inimap_buf(1)%CELL_IDS(k) = work(k,3)
355 IF(
ALLOCATED(work))
DEALLOCATE(work)
361 IF(num_centroids > 0)
THEN
363 nbmat = multi_fvm%NBMAT
369 state_inimap_buf(1)%MLW = mlw
370 state_inimap_buf(1)%NSUBMAT = nbmat
371 ALLOCATE(state_inimap_buf(1)%SUBMAT(nbmat))
373 ALLOCATE(state_inimap_buf(1)%SUBMAT(i)%VFRAC(num_centroids))
374 ALLOCATE(state_inimap_buf(1)%SUBMAT(i)%RHO(num_centroids))
375 ALLOCATE(state_inimap_buf(1)%SUBMAT(i)%E(num_centroids))
376 ALLOCATE(state_inimap_buf(1)%SUBMAT(i)%PRES(num_centroids))
380 state_inimap_buf(1)%NUM_POINTS = num_centroids
381 IF(.NOT.
ALLOCATED(state_inimap_buf(1)%POS_NODES))
ALLOCATE(state_inimap_buf(1)%POS_NODES(num_centroids))
382 IF(.NOT.
ALLOCATED(state_inimap_buf(1)%POS2_NODES))
ALLOCATE(state_inimap_buf(1)%POS2_NODES(num_centroids))
383 IF(.NOT.
ALLOCATED(state_inimap_buf(1)%VEL_NODES))
ALLOCATE(state_inimap_buf(1)%VEL_NODES(num_centroids))
384 IF(.NOT.
ALLOCATED(state_inimap_buf(1)%VEL2_NODES))
ALLOCATE(state_inimap_buf(1)%VEL2_NODES(num_centroids))
385 IF(.NOT.
ALLOCATED(state_inimap_buf(1)%NODE_IDS))
ALLOCATE(state_inimap_buf(1)%NODE_IDS(num_centroids))
387 DO k=1, num_centroids
388 ng = get_cell_fom_centroid(1,idx(k))
389 i = get_cell_fom_centroid(2,idx(k))
391 state_inimap_buf(1)%POS_NODES(k) = state_inimap_buf(1)%POS_CENTROIDS(k)
392 state_inimap_buf(1)%POS2_NODES(k) = state_inimap_buf(1)%POS2_CENTROIDS(k)
393 state_inimap_buf(1)%VEL_NODES(k) = multi_fvm%VEL(2,i+nft)
394 state_inimap_buf(1)%VEL2_NODES(k) = multi_fvm%VEL(3,i+nft)
395 state_inimap_buf(1)%NODE_IDS(k) = state_inimap_buf(1)%CELL_IDS(k)
399 DO k=1, num_centroids
400 ng = get_cell_fom_centroid(1,idx(k))
401 i = get_cell_fom_centroid(2,idx(k))
403 state_inimap_buf(1)%SUBMAT(isubmat)%VFRAC(k) = multi_fvm%PHASE_ALPHA(isubmat,i+nft)
404 state_inimap_buf(1)%SUBMAT(isubmat)%RHO(k) = multi_fvm%PHASE_RHO(isubmat,i+nft)
405 state_inimap_buf(1)%SUBMAT(isubmat)%E(k) = multi_fvm%PHASE_EINT(isubmat,i+nft)
406 state_inimap_buf(1)%SUBMAT(isubmat)%PRES(k) = multi_fvm%PRES(i+nft)
412 DO k=1, num_centroids
413 ng = get_cell_fom_centroid(1,idx(k))
414 i = get_cell_fom_centroid(2,idx(k))
420 IF(mat_param(imat)%MULTIMAT%MID(isubmat) == 0)
EXIT
421 nb2=
max(nb2,ipm(5,imat))
425 uparam => bufmat(iadbuf:iadbuf+npar-1)
426 kk = m51_n0phas + (uparam(276+isubmat)-1)*m51_nvphas
427 mbuf => elbuf_tab(ng)%BUFLY(1)%MAT(1,1,1)
428 state_inimap_buf(1)%SUBMAT(isubmat)%VFRAC(k) = mbuf%VAR(nel*(01+kk-1)+i)
429 state_inimap_buf(1)%SUBMAT(isubmat)%RHO(k) = mbuf%VAR(nel*(12+kk-1)+i)
430 state_inimap_buf(1)%SUBMAT(isubmat)%E(k) = mbuf%VAR(nel
431 state_inimap_buf(1)%SUBMAT(isubmat)%PRES(k) = mbuf%VAR(nel*(18+kk-1)+i)
434 state_inimap_buf(1)%NSUBMAT = nb2
436 DO k=1, num_centroids
437 ng = get_cell_fom_centroid(1,idx(k))
438 i = get_cell_fom_centroid(2,idx(k))
439 gbuf => elbuf_tab(ng)%GBUF
441 state_inimap_buf(1)%SUBMAT(1)%VFRAC(k) = 1.d00
442 state_inimap_buf(1)%SUBMAT(1)%RHO(k) = gbuf%RHO(i)
443 state_inimap_buf(1)%SUBMAT(1)%E(k) = gbuf%EINT(i)
444 state_inimap_buf(1)%SUBMAT(1)%PRES(k) = -third * (gbuf%SIG(i) + gbuf%SIG(i + nel) + gbuf%SIG(i + 2 * nel))
451 IF(num_centroids > 0)
THEN
453 ALLOCATE(work(numnod,4))
455 IF(.NOT.
ALLOCATED(state_inimap_buf(1)%POS_NODES))
ALLOCATE(state_inimap_buf(1)%POS_NODES(nnod))
456 IF(.NOT.
ALLOCATED(state_inimap_buf(1)%POS2_NODES))
ALLOCATE(state_inimap_buf
457 IF(.NOT.
ALLOCATED(state_inimap_buf(1)%VEL_NODES))
ALLOCATE(state_inimap_buf(1)%VEL_NODES(nnod
458 IF(.NOT.
ALLOCATED(state_inimap_buf(1)%VEL2_NODES))
ALLOCATE(state_inimap_buf(1)%VEL2_NODES(nnod))
459 IF(.NOT.
ALLOCATED(state_inimap_buf(1)%NODE_IDS))
ALLOCATE(state_inimap_buf(1)%NODE_IDS(nnod))
462 IF(nodtag(i) == 1)
THEN
468 work(nnod,1) = x(2,i)
469 work(nnod,2) = x(3,i)
470 work(nnod,3) = v(2,i)
471 work(nnod,4) = v(3,i)
472 state_inimap_buf(1)%NODE_IDS(nnod) = itab(i)
475 state_inimap_buf(1)%NUM_POINTS=nnod
477 IF(
ALLOCATED(idx))
DEALLOCATE(idx)
478 IF(.NOT.
ALLOCATED(idx))
ALLOCATE(idx(nnod))
479 DO k=1,nnod ; idx(k)=k;
ENDDO
480 CALL quicksort_i2(state_inimap_buf(1)%NODE_IDS(:), idx, 1, nnod)
482 state_inimap_buf(1)%POS_NODES(k) = work(idx(k),1)
483 state_inimap_buf(1)%POS2_NODES(k) = work(idx(k),2)
484 state_inimap_buf(1)%VEL_NODES(k) = work(idx(k),3)
485 state_inimap_buf(1)%VEL2_NODES(k) = work(idx(k),4)
487 IF(
ALLOCATED(work))
DEALLOCATE(work)
504 shift_cy_min = state_inimap_buf(1)%SHIFT_Cy
505 shift_ny_min = state_inimap_buf(1)%SHIFT_Ny
506 shift_cz_min = state_inimap_buf(1)%SHIFT_Cz
507 shift_nz_min = state_inimap_buf(1)%SHIFT_Nz
509 IF(state_inimap_buf(i)%NUM_CENTROIDS==0)cycle
510 shift_cy_min =
min(shift_cy_min, state_inimap_buf(i)%SHIFT_Cy)
511 shift_ny_min =
min(shift_ny_min, state_inimap_buf(i)%SHIFT_Ny)
512 shift_cz_min =
min(shift_cz_min, state_inimap_buf(i)%SHIFT_Cz)
513 shift_nz_min =
min(shift_nz_min, state_inimap_buf(i)%SHIFT_Nz)
515 state_inimap_buf(1)%SHIFT_Cy = shift_cy_min
516 state_inimap_buf(1)%SHIFT_Ny = shift_ny_min
517 state_inimap_buf(1)%SHIFT_Cz = shift_cz_min
518 state_inimap_buf(1)%SHIFT_Nz = shift_nz_min
525 len_tot=state_inimap_buf(1)%LENGTH ;
526 ncell_tot = state_inimap_buf(1)%NUM_CENTROIDS ;
527 IF(ispmd == 0 .AND. nspmd > 1)
THEN
534 IF(state_inimap_buf(i)%NUM_CENTROIDS==0)
THEN
540 npts(i)= state_inimap_buf(i)%NUM_POINTS ;
541 npts_tot=npts_tot+npts(i)
542 len_(i)=state_inimap_buf(i)%LENGTH ;
543 len_tot=len_tot+len_(i)
544 ncell(i)= state_inimap_buf(i)%NUM_CENTROIDS ;
545 ncell_tot = ncell_tot + ncell(i)
547 ALLOCATE(work(npts_tot,5))
555 work(j,1) = state_inimap_buf(i)%POS_NODES(k)
556 work(j,2) = state_inimap_buf(i)%POS2_NODES(k)
557 work(j,3) = state_inimap_buf(i)%VEL_NODES(k)
558 work(j,4) = state_inimap_buf(i)%VEL2_NODES(k)
559 work(j,5) = state_inimap_buf(i)%NODE_IDS(k)
564 IF(
ALLOCATED(idx))
DEALLOCATE(idx)
565 IF(.NOT.
ALLOCATED(idx))
ALLOCATE(idx(npts_tot))
566 DO k=1,npts_tot ; idx(k)=k;
ENDDO
567 CALL quicksort(work(:,5), idx, 1, npts_tot)
574 ALLOCATE(nodtag_g(npts_tot))
575 nodtag_g(1:npts_tot)=1
578 IF(work(j,5) == work(j-1,5))
THEN
589 state_inimap_buf(1)%NUM_POINTS=k
590 IF(
ALLOCATED(state_inimap_buf(1)%VEL_NODES))
DEALLOCATE(state_inimap_buf(1)%VEL_NODES)
591 IF(
ALLOCATED(state_inimap_buf(1)%VEL2_NODES))
DEALLOCATE(state_inimap_buf(1)%VEL2_NODES)
592 IF(
ALLOCATED(state_inimap_buf(1)%POS_NODES))
DEALLOCATE(state_inimap_buf(1)%POS_NODES)
593 IF(
ALLOCATED(state_inimap_buf(1)%POS2_NODES))
DEALLOCATE(state_inimap_buf(1)%POS2_NODES)
594 IF(
ALLOCATED(state_inimap_buf(1)%NODE_IDS))
DEALLOCATE(state_inimap_buf(1)%NODE_IDS)
595 ALLOCATE(state_inimap_buf(1)%VEL_NODES(npts_tot), state_inimap_buf(1)%VEL2_NODES(npts_tot))
596 ALLOCATE(state_inimap_buf(1)%POS_NODES(npts_tot), state_inimap_buf(1)%POS2_NODES(npts_tot))
597 ALLOCATE(state_inimap_buf(1)%NODE_IDS(npts_tot))
601 IF(nodtag_g(k)==0)cycle
604 state_inimap_buf(1)%POS_NODES(j)=work(idx(k),1)
605 state_inimap_buf(1)%POS2_NODES(j)=work(idx(k),2)
606 state_inimap_buf(1)%VEL_NODES(j)=work(idx(k),3)
607 state_inimap_buf(1)%VEL2_NODES(j)=work(idx(k),4)
608 state_inimap_buf(1)%NODE_IDS(j)=work(k,5)
611 state_inimap_buf(1)%NUM_POINTS=npts_tot
612 IF(
ALLOCATED(work))
DEALLOCATE(work)
613 IF(
ALLOCATED(nodtag_g))
DEALLOCATE(nodtag_g)
615 nbmat=state_inimap_buf(1)%NSUBMAT
616 ALLOCATE(work(ncell_tot,3+4*nbmat))
624 work(j,1) = state_inimap_buf(i)%POS_CENTROIDS(k)
625 work(j,2) = state_inimap_buf(i)%POS2_CENTROIDS(k)
626 work(j,3) = float(state_inimap_buf(i)%CELL_IDS(k))
627 nbmat = state_inimap_buf(i)%NSUBMAT
629 work(j,3+ 4*(jj-1)+1) = state_inimap_buf(i)%SUBMAT(jj)%VFRAC(k)
630 work(j,3+ 4*(jj-1)+2) = state_inimap_buf(i)%SUBMAT(jj)%RHO(k)
631 work(j,3+ 4*(jj-1)+3) = state_inimap_buf(i)%SUBMAT(jj)%E(k)
632 work(j,3+ 4*(jj-1)+4) = state_inimap_buf(i)%SUBMAT(jj)%PRES(k)
639 IF(
ALLOCATED(state_inimap_buf(1)%POS_CENTROIDS))
DEALLOCATE(state_inimap_buf(1)%POS_CENTROIDS)
640 IF(
ALLOCATED(state_inimap_buf(1)%POS2_CENTROIDS))
DEALLOCATE(state_inimap_buf(1)%POS2_CENTROIDS
641 IF(
ALLOCATED(state_inimap_buf(1)%CELL_IDS))
DEALLOCATE(state_inimap_buf(1)%CELL_IDS)
642 nbmat = state_inimap_buf(1)%NSUBMAT
644 IF(
ALLOCATED(state_inimap_buf(1)%SUBMAT(jj)%VFRAC))
DEALLOCATE(state_inimap_buf(1)%SUBMAT(jj)%VFRAC)
645 IF(
ALLOCATED(state_inimap_buf(1)%SUBMAT(jj)%RHO ))
DEALLOCATE(state_inimap_buf(1)%SUBMAT(jj)%RHO)
646 IF(
ALLOCATED(state_inimap_buf(1)%SUBMAT(jj)%E ))
DEALLOCATE(state_inimap_buf(1)%SUBMAT(jj)%E)
647 IF(
ALLOCATED(state_inimap_buf(1)%SUBMAT(jj)%PRES))
DEALLOCATE(state_inimap_buf(1)%SUBMAT(jj)%PRES)
649 ALLOCATE(state_inimap_buf(1)%CELL_IDS(ncell_tot))
650 ALLOCATE(state_inimap_buf(1)%POS_CENTROIDS(ncell_tot))
651 ALLOCATE(state_inimap_buf(1)%POS2_CENTROIDS(ncell_tot))
653 ALLOCATE(state_inimap_buf(1)%SUBMAT(jj)%VFRAC(ncell_tot))
654 ALLOCATE(state_inimap_buf(1)%SUBMAT(jj)%RHO(ncell_tot))
655 ALLOCATE(state_inimap_buf(1)%SUBMAT(jj)%E(ncell_tot))
656 ALLOCATE(state_inimap_buf(1)%SUBMAT(jj)%PRES(ncell_tot))
659 IF(
ALLOCATED(idx))
DEALLOCATE(idx)
660 IF(.NOT.
ALLOCATED(idx))
ALLOCATE(idx(ncell_tot))
661 DO k=1,ncell_tot ; idx(k)=k;
ENDDO
662 CALL quicksort(work(:,3), idx, 1, ncell_tot)
665 state_inimap_buf(1)%POS_CENTROIDS(j)=work(idx(j),1)
666 state_inimap_buf(1)%POS2_CENTROIDS(j)=work(idx(j),2)
667 state_inimap_buf(1)%CELL_IDS(j)=int(work(j,3))
668 nbmat = state_inimap_buf(1)%NSUBMAT
670 state_inimap_buf(1)%SUBMAT(jj)%VFRAC(j)=work(idx(j),3+ 4*(jj-1)+1)
671 state_inimap_buf(1)%SUBMAT(jj)%RHO(j)=work(idx(j),3+ 4*(jj-1)+2)
672 state_inimap_buf(1)%SUBMAT(jj)%E(j)=work(idx(j),3+ 4*(jj-1)+3)
673 state_inimap_buf(1)%SUBMAT(jj)%PRES(j)=work(idx(j),3+ 4*(jj-1)+4)
676 state_inimap_buf(1)%NUM_CENTROIDS = ncell_tot
677 state_inimap_buf(1)%LENGTH = len_tot
679 endif!
IF(ispmd == 0 .AND. nspmd > 1)
THEN
682 IF(ncell_tot == 0 .OR. len_tot == zero)
THEN
683 CALL ancmsg(msgid=284,anmode=aninfo,c1=" -- 2d domain is not detected : check x-projection
")
685.AND.
ELSEIF(LEN_TOT > 0 NCELL_TOT > 0)THEN
686 IF(LX/LEN_TOT > EM06)THEN
687 CALL ANCMSG(MSGID=284,ANMODE=ANINFO,C1=" -- 2d domain is not detected.
")
697 !---OUTPUT FILE HEADER
700 NBMAT = STATE_INIMAP_BUF(1)%NSUBMAT
701 WRITE(CHSTAT,'(I4.4)')STATE_INIMAP_CALL_NUMBER
703 FILNAM=ROOTNAM(1:ROOTLEN)//'_2D_'//CHSTAT//'.inimap'
704 SHORTNAME=ROOTNAM(1:ROOTLEN)//'_2D_'//CHSTAT//'.inimap'
706 LEN_TMP_NAME = OUTFILE_NAME_LEN + LEN
707 TMP_NAME=OUTFILE_NAME(1:OUTFILE_NAME_LEN)//FILNAM(1:LEN)
709 IFILNAM(I)=ICHAR(TMP_NAME(I:I))
711 CALL CUR_FIL_C(IUINIMAP)
712 CALL OPEN_C(IFILNAM,LEN_TMP_NAME,6)
714 CALL WRITE_I_C(INVERS,1)
716 CALL WRITE_I_C(NCYCLE,1)
717 CALL WRITE_I_C(NCELL_TOT,1)
718 CALL WRITE_I_C(STATE_INIMAP_BUF(1)%NUM_POINTS,1)
719 CALL WRITE_I_C(NBMAT,1)
723 !--- OUTPUT FUNCTION FROM CELL DATA BUFFER ---!
724 NBMAT = STATE_INIMAP_BUF(1)%NSUBMAT
725 SHIFT_Cy = STATE_INIMAP_BUF(1)%SHIFT_Cy
726 SHIFT_Ny = STATE_INIMAP_BUF(1)%SHIFT_Ny
727 SHIFT_Cz = STATE_INIMAP_BUF(1)%SHIFT_Cz
728 SHIFT_Nz = STATE_INIMAP_BUF(1)%SHIFT_Nz
729 NUM_CENTROIDS = STATE_INIMAP_BUF(1)%NUM_CENTROIDS
732 CALL WRITE_DB(STATE_INIMAP_BUF(1)%POS_CENTROIDS(1) ,NUM_CENTROIDS)
733 CALL WRITE_DB(STATE_INIMAP_BUF(1)%POS2_CENTROIDS(1) ,NUM_CENTROIDS)
737 CALL WRITE_DB(STATE_INIMAP_BUF(1)%SUBMAT(ISUBMAT)%VFRAC(1) ,NUM_CENTROIDS)
742 CALL WRITE_DB(STATE_INIMAP_BUF(1)%SUBMAT(ISUBMAT)%RHO(1) ,NUM_CENTROIDS)
745 !---pressure fraction
747 CALL WRITE_DB(STATE_INIMAP_BUF(1)%SUBMAT(ISUBMAT)%PRES(1) ,NUM_CENTROIDS)
750 !--- OUTPUT VELOCITY FUNCTION ---!
752 IF(STATE_INIMAP_BUF(1)%NUM_POINTS == STATE_INIMAP_BUF(1)%NUM_CENTROIDS)THEN
753 CALL WRITE_DB(STATE_INIMAP_BUF(1)%VEL_NODES(1) ,STATE_INIMAP_BUF(1)%NUM_POINTS)
754 CALL WRITE_DB(STATE_INIMAP_BUF(1)%VEL2_NODES(1) ,STATE_INIMAP_BUF(1)%NUM_POINTS)
756 CALL WRITE_DB(STATE_INIMAP_BUF(1)%POS_NODES(1) ,STATE_INIMAP_BUF(1)%NUM_POINTS)
757 CALL WRITE_DB(STATE_INIMAP_BUF(1)%POS2_NODES(1) ,STATE_INIMAP_BUF(1)%NUM_POINTS)
758 CALL WRITE_DB(STATE_INIMAP_BUF(1)%VEL_NODES(1) ,STATE_INIMAP_BUF(1)%NUM_POINTS)
759 CALL WRITE_DB(STATE_INIMAP_BUF(1)%VEL2_NODES(1) ,STATE_INIMAP_BUF(1)%NUM_POINTS)
768 !---OUTPUT FILE : FOOTER & CLOSE
769 SHORTNAME=SHORTNAME//'.gz'
770 WRITE (IOUT,500) SHORTNAME(1:LEN_TRIM(TRIM(SHORTNAME)))
771 WRITE (ISTDO,500) SHORTNAME(1:LEN_TRIM(TRIM(SHORTNAME)))
775 IF(ALLOCATED(GET_CELL_FOM_CENTROID))DEALLOCATE(GET_CELL_FOM_CENTROID)
777 NBMAT = STATE_INIMAP_BUF(JJ)%NSUBMAT
778 IF(ALLOCATED(STATE_INIMAP_BUF(JJ)%SUBMAT))THEN
780 IF(ALLOCATED(STATE_INIMAP_BUF(JJ)%SUBMAT(I)%VFRAC))DEALLOCATE(STATE_INIMAP_BUF(JJ)%SUBMAT(I)%VFRAC)
781 IF(ALLOCATED(STATE_INIMAP_BUF(JJ)%SUBMAT(I)%RHO)) DEALLOCATE(STATE_INIMAP_BUF(JJ)%SUBMAT(I)%RHO)
782 IF(ALLOCATED(STATE_INIMAP_BUF(JJ)%SUBMAT(I)%E)) DEALLOCATE(STATE_INIMAP_BUF(JJ)%SUBMAT(I)%E)
785 IF(ALLOCATED(STATE_INIMAP_BUF(JJ)%SUBMAT ))DEALLOCATE(STATE_INIMAP_BUF(JJ)%SUBMAT)
786 IF(ALLOCATED(STATE_INIMAP_BUF(JJ)%POS_NODES ))DEALLOCATE(STATE_INIMAP_BUF(JJ)%POS_NODES)
787 IF(ALLOCATED(STATE_INIMAP_BUF(JJ)%VEL_NODES ))DEALLOCATE(STATE_INIMAP_BUF(JJ)%VEL_NODES)
788 IF(ALLOCATED(STATE_INIMAP_BUF(JJ)%POS2_NODES ))DEALLOCATE(STATE_INIMAP_BUF(JJ)%POS2_NODES)
789 IF(ALLOCATED(STATE_INIMAP_BUF(JJ)%VEL2_NODES ))DEALLOCATE(STATE_INIMAP_BUF(JJ)%VEL2_NODES)
790 IF(ALLOCATED(STATE_INIMAP_BUF(JJ)%NODE_IDS ))DEALLOCATE(STATE_INIMAP_BUF(JJ)%NODE_IDS)
791 IF(ALLOCATED(STATE_INIMAP_BUF(JJ)%POS_CENTROIDS))DEALLOCATE(STATE_INIMAP_BUF(JJ)%POS_CENTROIDS)
792 IF(ALLOCATED(STATE_INIMAP_BUF(JJ)%POS_CENTROIDS))DEALLOCATE(STATE_INIMAP_BUF(JJ)%POS2_CENTROIDS)
793 IF(ALLOCATED(STATE_INIMAP_BUF(JJ)%CELL_IDS))DEALLOCATE(STATE_INIMAP_BUF(JJ)%CELL_IDS)
798 IF(ALLOCATED(STATE_INIMAP_BUF))DEALLOCATE(STATE_INIMAP_BUF)
803 500 FORMAT (4X,' STATE FILE:',1X,A,' WRITTEN')