42 . X , V , ITAB , IPART_STATE, NODTAG ,
43 . IPART , IPARTS , IPARTQ, IPARTTG , MAT_PARAM,
44 . IGEO , IPARG , IXS , IXQ , IXTG ,
45 . ELBUF_TAB, MULTI_FVM, BUFMAT, IPM)
62 USE multimat_param_mod ,
ONLY : m51_n0phas, m51_nvphas
63 USE matparam_def_mod,
ONLY : matparam_struct_
67#include "implicit_f.inc"
83 INTEGER,
INTENT(IN) :: ITAB(NUMNOD), IPART(LIPART1,*),IGEO(NPROPGI
85INTEGER,
INTENT(INOUT) :: NODTAG(NUMNOD), IPM(NPROPMI,*)
86 INTEGER,
TARGET :: IPARTS(*),IPARTQ(*),IPARTTG(*)
87 my_real,
INTENT(IN) :: x(3,numnod),v(3,numnod)
88 my_real,
INTENT(IN),
TARGET :: bufmat(*
89 TYPE (ELBUF_STRUCT_),
DIMENSION(NGROUP),
TARGET,
INTENT(IN) :: ELBUF_TAB
90 TYPE(multi_fvm_struct),
INTENT(IN) :: MULTI_FVM
91 TYPE(matparam_struct_) ,
DIMENSION(NUMMAT) ,
INTENT(IN) :: MAT_PARAM
95 INTEGER I, N, JJ,J, IPRT0, IPRT, K, STAT_NUMELS_1, KK, INOD
96 INTEGER NG, NEL, NFT, LFT, LLT, ITY, ISOLNOD, IOFF,NPT
97 INTEGER NUM_CENTROIDS, IPOS,MLW,IFORM,NBMAT,NB2,ISUBMAT,NNOD,NNOD2
99 TYPE(g_bufel_) ,
POINTER :: GBUF
100 my_real min_x,min_y,min_z,max_x,max_y,max_z,p0(3),p0_inf(3),p0_sup(3),length
106 CHARACTER FILNAM*100, CHSTAT*4
107 INTEGER XMIN_CELL_ID,,ZMIN_CELL_ID,XMAX_CELL_ID,YMAX_CELL_ID,ZMAX_CELL_ID
108 INTEGER IS_ITY_1, IS_ITY_2, IS_ITY_7, LAST_CELL,FIRST_CELL,IMAT,NPAR,IADBUF
109 INTEGER,
POINTER,
DIMENSION(:) :: IPART_PTR
110 my_real,
POINTER,
DIMENSION(:) :: uparam
111 TYPE(buf_mat_) ,
POINTER :: MBUF
112 INTEGER,
ALLOCATABLE,
DIMENSION(:,:) :: GET_CELL_FOM_CENTROID
113 INTEGER NPTS(NSPMD),NCELL(NSPMD),NPTS_TOT,NCELL_TOT
114 my_real,
DIMENSION(:,:),
ALLOCATABLE :: work
116 my_real :: shift_cy_min, shift_ny_min, shift_cz_min, shift_nz_min
117 INTEGER,
ALLOCATABLE,
DIMENSION(:) :: IDX, NODTAG_G
118 INTEGER :: CELL_ID,IDX1(21),IDX2(21),IDX3(21)
128 CALL ancmsg(msgid=288,anmode=aninfo)
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
207 IF(is_ity_7==1)nodtag(ixtg(1+k
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))
263 IF(num_centroids > 0)
THEN
269 vect(1:3)=(/lx,ly,lz/)
270 length = sqrt(vect(2)*vect(2) + vect(3)*vect(3))
272 p0_inf(2) = sum( x(2,ixs(2:9,ymin_cell_id)) ) / npt
273 p0_inf(3) = sum( x(3,ixs(2:9,zmin_cell_id)) ) / npt
274 ELSEIF(is_ity_2==1)
THEN
275 p0_inf(2) = sum( x(2,ixq(2:5,ymin_cell_id)) ) / npt
276 p0_inf(3) = sum( x(3,ixq(2:5,zmin_cell_id)) ) / npt
277 ELSEIF(is_ity_7==1)
THEN
278 p0_inf(2) = sum( x(2,ixtg(2:4,ymin_cell_id)) ) / npt
279 p0_inf(3) = sum( x(3,ixtg(2:4,zmin_cell_id)) ) / npt
283 state_inimap_buf(1)%SHIFT_Cy = shift_cy
284 state_inimap_buf(1)%SHIFT_Cz = shift_cz
285 state_inimap_buf(1)%LENGTH = length
287 state_inimap_buf(1)%SHIFT_Cy = zero
288 state_inimap_buf(1)%SHIFT_Cz = zero
289 state_inimap_buf(1)%LENGTH = zero
299 state_inimap_buf(1)%SHIFT_Ny = shift_ny
300 state_inimap_buf(1)%SHIFT_Nz = shift_nz
304 ALLOCATE(work(num_centroids,3))
308 isolnod = iparg(28,ng)
311 gbuf => elbuf_tab(ng)%GBUF
319 IF(ipart_state(iprt)==0)cycle
322 p0(2) = sum( x(2,ixs(2:9,n)) ) / npt
323 p0(3) = sum( x(3,ixs(2:9,n)) ) / npt
324 cell_id = ixs(nixs,n)
325 ELSEIF(is_ity_2==1)
THEN
326 p0(2) = sum( x(2,ixq(2:5,n)) ) / npt
327 p0(3) = sum( x(3,ixq(2:5,n)) ) / npt
328 cell_id = ixq(nixq,n)
329 ELSEIF(is_ity_7==1)
THEN
330 p0(2) = sum( x(2,ixtg(2:4,n)) ) / npt
331 p0(3) = sum( x(3,ixtg(2:4,n)) ) / npt
332 cell_id = ixtg(nixtg,n)
340 get_cell_fom_centroid(1,k) = ng
341 get_cell_fom_centroid(2,k) = i
349 IF(.NOT.
ALLOCATED(idx))
ALLOCATE(idx(num_centroids))
350 DO k=1,num_centroids ; idx(k)=k;
ENDDO
351 IF(num_centroids>0)
CALL quicksort(work(:,3), idx, 1, num_centroids)
354 state_inimap_buf(1)%POS_CENTROIDS(k) = work(idx(k),1)
355 state_inimap_buf(1)%POS2_CENTROIDS(k) = work(idx(k),2)
356 state_inimap_buf(1)%CELL_IDS(k) = work(k,3)
358 IF(
ALLOCATED(work))
DEALLOCATE(work)
364 IF(num_centroids > 0)
THEN
366 nbmat = multi_fvm%NBMAT
372 state_inimap_buf(1)%MLW = mlw
373 state_inimap_buf(1)%NSUBMAT = nbmat
374 ALLOCATE(state_inimap_buf(1)%SUBMAT(nbmat))
376 ALLOCATE(state_inimap_buf(1)%SUBMAT(i)%VFRAC(num_centroids))
377 ALLOCATE(state_inimap_buf(1)%SUBMAT(i)%RHO(num_centroids))
378 ALLOCATE(state_inimap_buf(1)%SUBMAT(i)%E(num_centroids))
379 ALLOCATE(state_inimap_buf(1)%SUBMAT(i)%PRES(num_centroids))
383 state_inimap_buf(1)%NUM_POINTS = num_centroids
384 IF(.NOT.
ALLOCATED(state_inimap_buf(1)%POS_NODES))
ALLOCATE(state_inimap_buf(1)%POS_NODES
385 IF(.NOT.
ALLOCATED(state_inimap_buf(1)%POS2_NODES))
ALLOCATE(state_inimap_buf(1)%POS2_NODES(num_centroids))
386 IF(.NOT.
ALLOCATED(state_inimap_buf(1)%VEL_NODES))
ALLOCATE(state_inimap_buf(1)%VEL_NODES(num_centroids))
387 IF(.NOT.
ALLOCATED(state_inimap_buf(1)%VEL2_NODES))
ALLOCATE(state_inimap_buf(1)%VEL2_NODES(num_centroids))
388 IF(.NOT.
ALLOCATED(state_inimap_buf(1)%NODE_IDS))
ALLOCATE(state_inimap_buf(1)%NODE_IDS(num_centroids))
390 DO k=1, num_centroids
391 ng = get_cell_fom_centroid(1,idx(k))
392 i = get_cell_fom_centroid(2,idx(k))
394 state_inimap_buf(1)%POS_NODES(k) = state_inimap_buf(1)%POS_CENTROIDS(k)
395 state_inimap_buf(1)%POS2_NODES(k) = state_inimap_buf(1)%POS2_CENTROIDS(k)
396 state_inimap_buf(1)%VEL_NODES(k) = multi_fvm%VEL(2,i+nft)
397 state_inimap_buf(1)%VEL2_NODES(k) = multi_fvm%VEL(3,i+nft)
398 state_inimap_buf(1)%NODE_IDS(k) = state_inimap_buf(1)%CELL_IDS
402 DO k=1, num_centroids
403 ng = get_cell_fom_centroid(1,idx(k))
404 i = get_cell_fom_centroid(2,idx(k))
406 state_inimap_buf(1)%SUBMAT(isubmat)%VFRAC(k) = multi_fvm%PHASE_ALPHA(isubmat,i+nft)
407 state_inimap_buf(1)%SUBMAT(isubmat)%RHO(k) = multi_fvm%PHASE_RHO(isubmat,i+nft)
408 state_inimap_buf(1)%SUBMAT(isubmat)%E(k) = multi_fvm%PHASE_EINT(isubmat,i+nft)
409 state_inimap_buf(1)%SUBMAT(isubmat)%PRES(k) = multi_fvm%PRES(i+nft)
415 DO k=1, num_centroids
416 ng = get_cell_fom_centroid(1,idx(k))
417 i = get_cell_fom_centroid(2,idx(k))
423 IF(mat_param(imat)%MULTIMAT%MID(isubmat) == 0)
EXIT
424 nb2=
max(nb2,ipm(5,imat))
428 uparam => bufmat(iadbuf:iadbuf+npar)
429 kk = m51_n0phas + (uparam(276+isubmat)-1)*m51_nvphas
430 mbuf => elbuf_tab(ng)%BUFLY(1)%MAT(1,1,1)
431 state_inimap_buf(1)%SUBMAT(isubmat)%VFRAC(k) = mbuf%VAR(nel*(01+kk-1)+i)
432 state_inimap_buf(1)%SUBMAT(isubmat)%RHO(k) = mbuf%VAR(nel*(12+kk-1)+i)
433 state_inimap_buf(1)%SUBMAT(isubmat)%E(k) = mbuf%VAR(nel*(08+kk-1)+i)
434 state_inimap_buf(1)%SUBMAT(isubmat)%PRES(k) = mbuf%VAR(nel*(18+kk-1)+i)
437 state_inimap_buf(1)%NSUBMAT = nb2
439 DO k=1, num_centroids
440 ng = get_cell_fom_centroid(1,idx(k))
441 i = get_cell_fom_centroid(2,idx(k))
442 gbuf => elbuf_tab(ng)%GBUF
444 state_inimap_buf(1)%SUBMAT(1)%VFRAC(k) = 1.d00
445 state_inimap_buf(1)%SUBMAT(1)%RHO(k) = gbuf%RHO(i)
446 state_inimap_buf(1)%SUBMAT(1)%E(k) = gbuf%EINT(i)
447 state_inimap_buf(1)%SUBMAT(1)%PRES(k) = -third * (gbuf%SIG(i) + gbuf%SIG(i + nel) + gbuf%SIG(i + 2 * nel))
454 IF(num_centroids > 0)
THEN
456 ALLOCATE(work(numnod,4))
458 IF(.NOT.
ALLOCATED(state_inimap_buf(1)%POS_NODES))
ALLOCATE(state_inimap_buf(1)%POS_NODES(nnod))
459 IF(.NOT.
ALLOCATED(state_inimap_buf(1)%POS2_NODES))
ALLOCATE(state_inimap_buf(1)%POS2_NODES(nnod))
460 IF(.NOT.
ALLOCATED(state_inimap_buf(1)%VEL_NODES))
ALLOCATE(state_inimap_buf(1)%VEL_NODES(nnod))
461 IF(.NOT.
ALLOCATED(state_inimap_buf(1)%VEL2_NODES))
ALLOCATE(state_inimap_buf
462 IF(.NOT.
ALLOCATED(state_inimap_buf(1)%NODE_IDS))
ALLOCATE(state_inimap_buf(1)%NODE_IDS(nnod))
465 IF(nodtag(i) == 1)
THEN
471 work(nnod,1) = x(2,i)
472 work(nnod,2) = x(3,i)
473 work(nnod,3) = v(2,i)
474 work(nnod,4) = v(3,i)
475 state_inimap_buf(1)%NODE_IDS(nnod) = itab(i)
478 state_inimap_buf(1)%NUM_POINTS=nnod
480 IF(
ALLOCATED(idx))
DEALLOCATE(idx)
481 IF(.NOT.
ALLOCATED(idx))
ALLOCATE(idx(nnod))
482 DO k=1,nnod ; idx(k)=k;
ENDDO
483 CALL quicksort_i2(state_inimap_buf(1)%NODE_IDS(:), idx, 1, nnod)
485 state_inimap_buf(1)%POS_NODES(k) = work(idx(k),1)
486 state_inimap_buf(1)%POS2_NODES(k) = work(idx(k),2)
487 state_inimap_buf(1)%VEL_NODES(k) = work(idx(k),3)
488 state_inimap_buf(1)%VEL2_NODES(k) = work(idx(k),4)
490 IF(
ALLOCATED(work))
DEALLOCATE(work)
507 shift_cy_min = state_inimap_buf(1)%SHIFT_Cy
508 shift_ny_min = state_inimap_buf(1)%SHIFT_Ny
509 shift_cz_min = state_inimap_buf(1)%SHIFT_Cz
510 shift_nz_min = state_inimap_buf(1)%SHIFT_Nz
512 IF(state_inimap_buf(i)%NUM_CENTROIDS==0)cycle
513 shift_cy_min =
min(shift_cy_min, state_inimap_buf(i)%SHIFT_Cy)
514 shift_ny_min =
min(shift_ny_min, state_inimap_buf(i)%SHIFT_Ny)
515 shift_cz_min =
min(shift_cz_min, state_inimap_buf(i)%SHIFT_Cz)
516 shift_nz_min =
min(shift_nz_min, state_inimap_buf(i)%SHIFT_Nz)
518 state_inimap_buf(1)%SHIFT_Cy = shift_cy_min
519 state_inimap_buf(1)%SHIFT_Ny = shift_ny_min
520 state_inimap_buf(1)%SHIFT_Cz = shift_cz_min
521 state_inimap_buf(1)%SHIFT_Nz = shift_nz_min
528 len_tot=state_inimap_buf(1)%LENGTH ;
529 ncell_tot = state_inimap_buf(1)%NUM_CENTROIDS ;
530 IF(ispmd == 0 .AND. nspmd > 1)
THEN
531 !--cumulated dimensions
537 IF(state_inimap_buf(i)%NUM_CENTROIDS==0)
THEN
543 npts(i)= state_inimap_buf(i)%NUM_POINTS ;
544 npts_tot=npts_tot+npts(i)
545 len_(i)=state_inimap_buf(i)%LENGTH ;
546 len_tot=len_tot+len_(i)
547 ncell(i)= state_inimap_buf(i)%NUM_CENTROIDS ;
548 ncell_tot = ncell_tot + ncell(i)
550 ALLOCATE(work(npts_tot,5))
558 work(j,1) = state_inimap_buf(i)%POS_NODES(k)
559 work(j,2) = state_inimap_buf(i)%POS2_NODES(k)
560 work(j,3) = state_inimap_buf(i)%VEL_NODES(k)
561 work(j,4) = state_inimap_buf(i)%VEL2_NODES(k)
562 work(j,5) = state_inimap_buf(i)%NODE_IDS(k)
567 IF(
ALLOCATED(idx))
DEALLOCATE(idx)
568 IF(.NOT.
ALLOCATED(idx))
ALLOCATE(idx(npts_tot))
569 DO k=1,npts_tot ; idx(k)=k;
ENDDO
570 CALL quicksort(work(:,5), idx, 1, npts_tot)
577 ALLOCATE(nodtag_g(npts_tot))
578 nodtag_g(1:npts_tot)=1
581 IF(work(j,5) == work(j-1,5))
THEN
592 state_inimap_buf(1)%NUM_POINTS=k
593 IF(
ALLOCATED(state_inimap_buf(1)%VEL_NODES))
DEALLOCATE(state_inimap_buf(1)%VEL_NODES)
594 IF(
ALLOCATED(state_inimap_buf(1)%VEL2_NODES))
DEALLOCATE(state_inimap_buf(1)%VEL2_NODES)
595 IF(
ALLOCATED(state_inimap_buf(1)%POS_NODES))
DEALLOCATE(state_inimap_buf(1)%POS_NODES)
596 IF(
ALLOCATED(state_inimap_buf(1)%POS2_NODES))
DEALLOCATE(state_inimap_buf(1)%POS2_NODES)
597 IF(
ALLOCATED(state_inimap_buf(1)%NODE_IDS))
DEALLOCATE(state_inimap_buf(1)%NODE_IDS)
598 ALLOCATE(state_inimap_buf(1)%VEL_NODES(npts_tot), state_inimap_buf(1)%VEL2_NODES(npts_tot))
599 ALLOCATE(state_inimap_buf(1)%POS_NODES(npts_tot), state_inimap_buf(1)%POS2_NODES(npts_tot))
600 ALLOCATE(state_inimap_buf(1)%NODE_IDS(npts_tot))
604 IF(nodtag_g(k)==0)cycle
607 state_inimap_buf(1)%POS_NODES(j)=work(idx(k),1)
608 state_inimap_buf(1)%POS2_NODES(j)=work(idx(k),2)
609 state_inimap_buf(1)%VEL_NODES(j)=work(idx(k
610 state_inimap_buf(1)%VEL2_NODES(j)=work(idx(k),4
611 state_inimap_buf(1)%NODE_IDS(j)=work(k,5)
614 state_inimap_buf(1)%NUM_POINTS=npts_tot
615 IF(
ALLOCATED(work))
DEALLOCATE(work)
616 IF(
ALLOCATED(nodtag_g))
DEALLOCATE
620 nbmat=
max(nbmat,state_inimap_buf(i)%NSUBMAT)
622 ALLOCATE(work(ncell_tot,3+4*nbmat))
630 work(j,1) = state_inimap_buf(i)%POS_CENTROIDS(k)
631 work(j,2) = state_inimap_buf(i)%POS2_CENTROIDS(k)
632 work(j,3) = float(state_inimap_buf(i)%CELL_IDS(k))
633 nbmat = state_inimap_buf(i)%NSUBMAT
635 work(j,3+ 4*(jj-1)+1) = state_inimap_buf(i)%SUBMAT(jj)%VFRAC(k)
636 work(j,3+ 4*(jj-1)+2) = state_inimap_buf(i)%SUBMAT(jj)%RHO(k)
637 work(j,3+ 4*(jj-1)+3) = state_inimap_buf(i)%SUBMAT(jj)%E(k)
638 work(j,3+ 4*(jj-1)+4) = state_inimap_buf(i)%SUBMAT(jj)%PRES(k)
645 IF(
ALLOCATED(state_inimap_buf(1)%POS_CENTROIDS))
DEALLOCATE(state_inimap_buf(1)%POS_CENTROIDS)
646 IF(
ALLOCATED(state_inimap_buf(1)%POS2_CENTROIDS))
DEALLOCATE(state_inimap_buf(1)%POS2_CENTROIDS)
647 IF(
ALLOCATED(state_inimap_buf(1)%CELL_IDS))
DEALLOCATE(state_inimap_buf(1)%CELL_IDS)
648 nbmat = state_inimap_buf(1)%NSUBMAT
650 IF(
ALLOCATED(state_inimap_buf(1)%SUBMAT(jj)%VFRAC))
DEALLOCATE(state_inimap_buf(1)%SUBMAT(jj)%VFRAC
651 IF(
ALLOCATED(state_inimap_buf(1)%SUBMAT(jj)%RHO ))
DEALLOCATE(state_inimap_buf(1)%SUBMAT(jj)%RHO)
652 IF(
ALLOCATED(state_inimap_buf(1)%SUBMAT(jj)%E ))
DEALLOCATE(state_inimap_buf(1)%SUBMAT
653 IF(
ALLOCATED(state_inimap_buf(1)%SUBMAT(jj)%PRES))
DEALLOCATE(state_inimap_buf(1)%SUBMAT(jj)%PRES)
655 ALLOCATE(state_inimap_buf(1)%CELL_IDS(ncell_tot))
656 ALLOCATE(state_inimap_buf(1)%POS_CENTROIDS(ncell_tot))
657 ALLOCATE(state_inimap_buf(1)%POS2_CENTROIDS(ncell_tot))
659 ALLOCATE(state_inimap_buf(1)%SUBMAT(jj)%VFRAC(ncell_tot))
660 ALLOCATE(state_inimap_buf(1)%SUBMAT(jj)%RHO(ncell_tot))
661 ALLOCATE(state_inimap_buf(1)%SUBMAT(jj)%E(ncell_tot))
662 ALLOCATE(state_inimap_buf(1)%SUBMAT(jj)%PRES(ncell_tot))
665 IF(
ALLOCATED(idx))
DEALLOCATE(idx)
666 IF(.NOT.
ALLOCATED(idx))
ALLOCATE(idx(ncell_tot))
667 DO k=1,ncell_tot ; idx(k)=k;
ENDDO
668 CALL quicksort(work(:,3), idx, 1, ncell_tot)
671 state_inimap_buf(1)%POS_CENTROIDS(j)=work(idx(j),1)
672 state_inimap_buf(1)%POS2_CENTROIDS(j)=work(idx(j),2)
673 state_inimap_buf(1)%CELL_IDS(j)=int(work(j,3))
674 nbmat = state_inimap_buf(1)%NSUBMAT
676 state_inimap_buf(1)%SUBMAT(jj)%VFRAC(j)=work(idx(j),3+ 4*(jj-1)+1)
677 state_inimap_buf(1)%SUBMAT(jj)%RHO(j)=work(idx(j),3+ 4*(jj-1)+2)
678 state_inimap_buf(1)%SUBMAT(jj)%E(j)=work(idx(j),3+ 4*(jj-1)+3)
679 state_inimap_buf(1)%SUBMAT(jj)%PRES(j)=work(idx(j),3+ 4*(jj-1)+4)
682 state_inimap_buf(1)%NUM_CENTROIDS = ncell_tot
683 state_inimap_buf(1)%LENGTH = len_tot
688 IF(ncell_tot == 0 .OR. len_tot == zero)
THEN
689 CALL ancmsg(msgid=284,anmode=aninfo,c1=
" -- 2D DOMAIN IS NOT DETECTED : CHECK X-PROJECTION")
691 ELSEIF(len_tot > 0 .AND. ncell_tot > 0)
THEN
692 IF(lx/len_tot > em06)
THEN
693 CALL ancmsg(msgid=284,anmode=aninfo,c1=
" -- 2D DOMAIN IS NOT DETECTED.")
706 WRITE(chstat,
'(I4.4)')state_inimap_call_number
707 filnam=rootnam(1:rootlen)//
'_2D_'//chstat//
'.inimap'
708 OPEN(unit=220582,file=filnam(1:len(trim(filnam))),access=
'SEQUENTIAL',form=
'FORMATTED',status=
'UNKNOWN')
709 WRITE(unit=220582,fmt=
'(A,I10)')
'#state file for mappgin with /INIMAP2D, iteration = ',state_inimap_call_number
710 WRITE(unit=220582,fmt=
'(A,A)')
'# ROOTNAME = ',rootnam(1:rootlen)
711 WRITE(unit=220582,fmt='(a,i0)
') '# VERSION = ',ST_INVERS
712 WRITE(unit=220582,fmt=
'(A,F20.13)')
'# TIME = ',tt
713 WRITE(unit=220582,fmt=
'(A,I10)')
'# NCYCLE = ',ncycle
714 WRITE(unit=220582,fmt=
'(A,I10)')
'# NCELL = ',ncell_tot
723 nbmat = state_inimap_buf(1)%NSUBMAT
724 shift_cy = state_inimap_buf(1)%SHIFT_Cy
725 shift_ny = state_inimap_buf(1)%SHIFT_Ny
726 shift_cz = state_inimap_buf(1)%SHIFT_Cz
727 shift_nz = state_inimap_buf(1)%SHIFT_Nz
728 num_centroids = state_inimap_buf(1)%NUM_CENTROIDS
732 WRITE(unit=220582,fmt=2001)ipos+isubmat,isubmat
733 DO k=1, num_centroids
734 WRITE(unit=220582,fmt=
'(3E20.12)') state_inimap_buf(1)%POS_CENTROIDS(k)
735 . ,state_inimap_buf(1)%POS2_CENTROIDS(k)
736 . ,state_inimap_buf(1)%SUBMAT(isubmat)%VFRAC(k)
743 WRITE(unit=220582,fmt=2002)ipos+isubmat,isubmat
744 DO k=1, num_centroids
745 WRITE(unit=220582,fmt=
'(3E20.12)') state_inimap_buf(1)%POS_CENTROIDS(k)
746 . ,state_inimap_buf(1)%POS2_CENTROIDS(k)
754 WRITE(unit=220582,fmt=2003)ipos+isubmat,isubmat
755 DO k=1, num_centroids
756 WRITE(unit=220582,fmt=
'(3E20.12)') state_inimap_buf(1)%POS_CENTROIDS(k)
758 . ,state_inimap_buf(1)%SUBMAT(isubmat)%E(k)
765 WRITE(unit=220582,fmt=2004)ipos+isubmat,isubmat
766 DO k=1, num_centroids
767 WRITE(unit=220582,fmt=
'(3E20.12)') state_inimap_buf(1)%POS_CENTROIDS(k)
768 . ,state_inimap_buf(1)%POS2_CENTROIDS(k)
769 . ,state_inimap_buf(1)%SUBMAT(isubmat)%PRES(k)
775 WRITE(unit=220582,fmt=3000)
776 DO jj=1,state_inimap_buf(1)%NUM_POINTS
777 WRITE(unit=220582,fmt=
'(4E20.12,I10)')
778 . state_inimap_buf(1)%POS_NODES(jj) ,state_inimap_buf(1)%POS2_NODES(jj),
779 . state_inimap_buf(1)%VEL_NODES(jj), state_inimap_buf(1)%VEL2_NODES(jj)
789 IF(
ALLOCATED(get_cell_fom_centroid))
DEALLOCATE(get_cell_fom_centroid)
791 nbmat = state_inimap_buf(jj)%NSUBMAT
792 IF(
ALLOCATED(state_inimap_buf(jj)%SUBMAT))
THEN
794 IF(
ALLOCATED(state_inimap_buf(jj)%SUBMAT(i)%VFRAC))
DEALLOCATE(state_inimap_buf(jj)%SUBMAT(i)%VFRAC)
795 IF(
ALLOCATED(state_inimap_buf(jj)%SUBMAT(i)%RHO))
DEALLOCATE(state_inimap_buf(jj)%SUBMAT(i)%RHO)
796 IF(
ALLOCATED(state_inimap_buf(jj)%SUBMAT(i)%E))
DEALLOCATE(state_inimap_buf(jj)%SUBMAT(i)%E)
799 IF(
ALLOCATED(state_inimap_buf(jj)%SUBMAT ))
DEALLOCATE(state_inimap_buf(jj)%SUBMAT)
800 IF(
ALLOCATED(state_inimap_buf(jj)%POS_NODES ))
DEALLOCATE(state_inimap_buf(jj)%POS_NODES)
801 IF(
ALLOCATED(state_inimap_buf(jj)%VEL_NODES ))
DEALLOCATE(state_inimap_buf(jj)%VEL_NODES)
802 IF(
ALLOCATED(state_inimap_buf(jj)%POS2_NODES ))
DEALLOCATE(state_inimap_buf(jj)%POS2_NODES)
803 IF(
ALLOCATED(state_inimap_buf(jj)%VEL2_NODES ))
DEALLOCATE(state_inimap_buf(jj)%VEL2_NODES)
804 IF(
ALLOCATED(state_inimap_buf(jj)%NODE_IDS ))
DEALLOCATE(state_inimap_buf(jj)%NODE_IDS
805 IF(
ALLOCATED(state_inimap_buf(jj)%POS_CENTROIDS))
DEALLOCATE(state_inimap_buf(jj)%POS_CENTROIDS)
806 IF(
ALLOCATED(state_inimap_buf(jj)%POS_CENTROIDS))
DEALLOCATE(state_inimap_buf(jj)%POS2_CENTROIDS)
807 IF(
ALLOCATED(state_inimap_buf(jj)%CELL_IDS))
DEALLOCATE(state_inimap_buf(jj)%CELL_IDS)
811 WRITE(unit=220582,fmt=1000)
815 idx1=(/1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21/)
818 IF(is_stat_inimap_vp)
THEN
819 WRITE(unit=220582,fmt=
'(A)') '
#/INIMAP2D/VP/1'
821 WRITE(unit=220582,fmt=
'(A)')
'#/INIMAP2D/VE/1'
823 WRITE(unit=220582,fmt=
'(A)')
'#default input to update from /STATE/INIMAP2D'
824 WRITE(unit=220582,fmt=
'(A)')
'## Node1 Node2 Node3'
825 WRITE(unit=220582,fmt=
'(A)')
'# 0 0 0'
826 WRITE(unit=220582,fmt=
'(A)')
'## Grbric Grquad Grtria'
827 WRITE(unit=220582,fmt=
'(A)')
'# 0 0 0'
828 WRITE(unit=220582,fmt=
'(A)')
'## Fct_v Fscale_v'
829 WRITE(unit=220582,fmt=
'(A)')
'# 400 1.0'
830 DO imat=1,
min(21,nbmat
831 WRITE(unit=220582,fmt=
'(A)')
'## Fct_vf Fct_rho Fscale_rho Fct_p Fscale_p'
832 WRITE(unit=220582,fmt=
'(A1,I10,2(I10,F20.0))')
'#', idx1(imat),idx2(imat),1.0,idx3(imat),1.0
834 WRITE(unit=220582,fmt=1000)
836 WRITE (iout,500) filnam(1:len(trim(filnam)))
837 WRITE (istdo,500) filnam(1:len(trim(filnam)))
843 IF(
ALLOCATED(state_inimap_buf))
DEALLOCATE(state_inimap_buf
853 500
FORMAT (4x,
' STATE FILE:',1x,a,
' WRITTEN')
855 1000
FORMAT(
'#---1----|----2----|----3----|----4----|----5----|----6----|----7----|----8----|----9----|---10----|')
857 1500
FORMAT(
'#---1----|----2----|----3----|----4----|----5----|----6----|----7----|----8----|----9----|---10----|',/,
858 .
'/MOVE_FUNCT/',i0,/,
859 .
'move_function__',i0,/,
860 .
'# ASCALEx FSCALEy ASHIFTx FSHIFTy',/,
863 2001
FORMAT(
'#---1----|----2----|----3----|----4----|----5----|----6----|----7----|----8----|----9----|---10----|',/,
865 .
'volume fraction submaterial_',i0,/,
867 .
'#---1----|----2----|----3----|----4----|----5----|----6----|----7----|----8----|----9----|---10----|')
868 2002
FORMAT(
'#---1----|----2----|----3----|----4----|----5----|----6----|----7----|----8----|----9----|---10----|',/,
870 .
'mass density submaterial_',i0,/,
872 .
'#---1----|----2----|----3----|----4----|----5----|----6----|----7----|----8----|----9----|---10----|'
873 2003
FORMAT(
'#---1----|----2----|----3----|----4----|----5----|----6----|----7----|----8----|----9----|---10----|'
875 .
'energy density submaterial_',i0,/,
877 .
'#---1----|----2----|----3----|----4----|----5----|----6----|----7----|----8----|----9----|---10----|')
878 2004
FORMAT(
'#---1----|----2----|----3----|----4----|----5----|----6----|----7----|----8----|----9----|---10----|',/,
880 .
'pressure submaterial_',i0,/,
882 .
'#---1----|----2----|----3----|----4----|----5----|----6----|----7----|----8----|----9----|---10----|')
884 3000
FORMAT(
'#---1----|----2----|----3----|----4----|----5----|----6----|----7----|----8----|----9----|---10----|',/,
886 .
'velocity_function'/,
888 .
'#---1----|----2----|----3----|----4----|----5----|----6----|----7----|----8----|----9----|---10----|')