43 . X , V , ITAB , IPART_STATE, NODTAG ,
44 . IPART , IPARTS , IPARTQ, IPARTTG , MAT_PARAM,
45 . IGEO , IPARG , IXS , IXQ , IXTG ,
46 . ELBUF_TAB, MULTI_FVM, BUFMAT, IPM)
63 USE multimat_param_mod ,
ONLY : m51_n0phas, m51_nvphas
64 USE matparam_def_mod,
ONLY : matparam_struct_
65 use element_mod ,
only : nixs,nixq,nixtg
69#include "implicit_f.inc"
85 INTEGER,
INTENT(IN) :: ITAB(NUMNOD), IPART(LIPART1,*),IGEO(NPROPGI,NUMGEO), IXS(NIXS,NUMELS), IPART_STATE(NPART),
86 . IPARG(NPARG,*),IXQ(NIXQ,NUMELQ),IXTG(NIXTG,NUMELTG)
87 INTEGER,
INTENT(INOUT) :: NODTAG(NUMNOD), IPM(NPROPMI,*)
88 INTEGER,
TARGET :: IPARTS(*),IPARTQ(*),IPARTTG(*)
89 my_real,
INTENT(IN) :: x(3,numnod),v(3,numnod)
90 my_real,
INTENT(IN),
TARGET :: bufmat(*)
91 TYPE (ELBUF_STRUCT_),
DIMENSION(NGROUP),
TARGET,
INTENT(IN) :: ELBUF_TAB
92 TYPE(multi_fvm_struct),
INTENT(IN) :: MULTI_FVM
93 TYPE(matparam_struct_) ,
DIMENSION(NUMMAT) ,
INTENT(IN) :: MAT_PARAM
97 INTEGER I, N, JJ, J, IPRT, , KK, INOD
98 INTEGER NG, NEL, NFT, LFT, LLT, ITY, ISOLNOD, NPT
99 INTEGER NUM_CENTROIDS, IPOS, MLW, NBMAT, NB2, ISUBMAT, NNOD
101 TYPE(g_bufel_) ,
POINTER :: GBUF
102 my_real min_x,min_y,min_z,max_x,max_y,max_z,p0(3),p0_inf(3),p0_sup(3),length
107 my_real dotprod,tol,xyz(3),vel(3),dist,vect(3)
108 CHARACTER FILNAM*100, CHSTAT*4
109 INTEGER XMIN_CELL_ID,YMIN_CELL_ID,ZMIN_CELL_ID,XMAX_CELL_ID,YMAX_CELL_ID,ZMAX_CELL_ID
110 INTEGER IS_ITY_1, IS_ITY_2, IS_ITY_7, IMAT, NPAR, IADBUF
111 INTEGER,
POINTER,
DIMENSION(:) :: IPART_PTR
112 my_real,
POINTER,
DIMENSION(:) :: uparam
113 TYPE(buf_mat_) ,
POINTER :: MBUF
114 INTEGER,
ALLOCATABLE,
DIMENSION(:,:) :: GET_CELL_FOM_CENTROID
115 INTEGER NPTS(NSPMD),NCELL(NSPMD),NPTS_TOT,NCELL_TOT
116 my_real,
DIMENSION(:,:),
ALLOCATABLE :: work
118 my_real :: shift_cy_min, shift_ny_min, shift_cz_min, shift_nz_min
119 INTEGER,
ALLOCATABLE,
DIMENSION(:) :: IDX, NODTAG_G
120 INTEGER :: CELL_ID,IDX1(21),IDX2(21),IDX3(21)
130 CALL ancmsg(msgid=288,anmode=aninfo)
172 isolnod = iparg(28,ng)
175 gbuf => elbuf_tab(ng)%GBUF
184 ipart_ptr => iparts(1:numels)
189 ipart_ptr => ipartq(1:numelq)
190 ELSEIF(ity == 7 .AND. n2d /= 0)
THEN
194 ipart_ptr => iparttg(1:numeltg)
201 IF(ipart_state(iprt)==0)cycle
202 num_centroids = num_centroids +1
204 IF(is_ity_1==1)inod=ixs(1+k,n)
205 IF(is_ity_2==1)inod=ixq(1+k,n)
206 IF(is_ity_7==1)inod=ixtg(1+k,n)
207 IF(is_ity_1==1)nodtag(ixs(1+k,n)) = 1
208 IF(is_ity_2==1)nodtag(ixq(1+k,n)) = 1
209 IF(is_ity_7==1)nodtag(ixtg(1+k,n)) = 1
210 IF(x(1,inod)<min_x)
THEN
214 IF(x(2,inod)<min_y)
THEN
218 IF(x(3,inod)<min_z)
THEN
222 IF(x(1,inod)>max_x)
THEN
226 IF(x(2,inod)>max_y)
THEN
230 IF(x(3,inod)>max_z)
THEN
243 state_inimap_buf(1)%NUM_CENTROIDS = num_centroids
244 state_inimap_buf(1)%NUM_POINTS = 0
248 IF(nodtag(i) == 1)
THEN
255 IF(.NOT.
ALLOCATED(state_inimap_buf(1)%CELL_IDS))
ALLOCATE(state_inimap_buf(1)%CELL_IDS(num_centroids))
256 IF(.NOT.
ALLOCATED(state_inimap_buf(1)%POS_CENTROIDS))
ALLOCATE(state_inimap_buf(1)%POS_CENTROIDS(num_centroids))
257 IF(.NOT.
ALLOCATED(state_inimap_buf(1)%POS2_CENTROIDS))
ALLOCATE(state_inimap_buf(1)%POS2_CENTROIDS(num_centroids))
258 IF(.NOT.
ALLOCATED(get_cell_fom_centroid))
THEN
259 ALLOCATE(get_cell_fom_centroid(2,num_centroids))
265 IF(num_centroids > 0)
THEN
271 vect(1:3)=(/lx,ly,lz/)
272 length = sqrt(vect(2)*vect(2) + vect(3)*vect(3))
274 p0_inf(2) = sum( x(2,ixs(2:9,ymin_cell_id)) ) / npt
275 p0_inf(3) = sum( x(3,ixs(2:9,zmin_cell_id)) ) / npt
276 ELSEIF(is_ity_2==1)
THEN
277 p0_inf(2) = sum( x(2,ixq(2:5,ymin_cell_id)) ) / npt
278 p0_inf(3) = sum( x(3,ixq(2:5,zmin_cell_id)) ) / npt
279 ELSEIF(is_ity_7==1)
THEN
280 p0_inf(2) = sum( x(2,ixtg(2:4,ymin_cell_id)) ) / npt
281 p0_inf(3) = sum( x(3,ixtg(2:4,zmin_cell_id)) ) / npt
285 state_inimap_buf(1)%SHIFT_Cy = shift_cy
286 state_inimap_buf(1)%SHIFT_Cz = shift_cz
287 state_inimap_buf(1)%LENGTH = length
289 state_inimap_buf(1)%SHIFT_Cy = zero
290 state_inimap_buf(1)%SHIFT_Cz = zero
291 state_inimap_buf(1)%LENGTH = zero
301 state_inimap_buf(1)%SHIFT_Ny = shift_ny
302 state_inimap_buf(1)%SHIFT_Nz = shift_nz
306 ALLOCATE(work(num_centroids,3))
310 isolnod = iparg(28,ng)
313 gbuf => elbuf_tab(ng)%GBUF
321 IF(ipart_state(iprt)==0)cycle
324 p0(2) = sum( x(2,ixs(2:9,n)) ) / npt
325 p0(3) = sum( x(3,ixs(2:9,n)) ) / npt
326 cell_id = ixs(nixs,n)
327 ELSEIF(is_ity_2==1)
THEN
328 p0(2) = sum( x(2,ixq(2:5,n)) ) / npt
329 p0(3) = sum( x(3,ixq(2:5,n)) ) / npt
330 cell_id = ixq(nixq,n)
331 ELSEIF(is_ity_7==1)
THEN
332 p0(2) = sum( x(2,ixtg(2:4,n)) ) / npt
333 p0(3) = sum( x(3,ixtg(2:4,n)) ) / npt
334 cell_id = ixtg(nixtg,n)
342 get_cell_fom_centroid(1,k) = ng
343 get_cell_fom_centroid(2,k) = i
351 IF(.NOT.
ALLOCATED(idx))
ALLOCATE(idx(num_centroids))
352 DO k=1,num_centroids ; idx(k)=k;
ENDDO
353 IF(num_centroids>0)
CALL quicksort(work(:,3), idx, 1, num_centroids)
356 state_inimap_buf(1)%POS_CENTROIDS(k) = work(idx(k),1)
357 state_inimap_buf(1)%POS2_CENTROIDS(k) = work(idx(k),2)
358 state_inimap_buf(1)%CELL_IDS(k) = work(k,3)
360 IF(
ALLOCATED(work))
DEALLOCATE(work)
366 IF(num_centroids > 0)
THEN
368 nbmat = multi_fvm%NBMAT
374 state_inimap_buf(1)%MLW = mlw
375 state_inimap_buf(1)%NSUBMAT = nbmat
376 ALLOCATE(state_inimap_buf(1)%SUBMAT(nbmat))
378 ALLOCATE(state_inimap_buf(1)%SUBMAT(i)%VFRAC(num_centroids))
379 ALLOCATE(state_inimap_buf(1)%SUBMAT(i)%RHO(num_centroids))
380 ALLOCATE(state_inimap_buf(1)%SUBMAT(i)%E(num_centroids))
381 ALLOCATE(state_inimap_buf(1)%SUBMAT(i)%PRES(num_centroids))
385 state_inimap_buf(1)%NUM_POINTS = num_centroids
386 IF(.NOT.
ALLOCATED(state_inimap_buf(1)%POS_NODES))
ALLOCATE(state_inimap_buf(1)%POS_NODES(num_centroids))
387 IF(.NOT.
ALLOCATED(state_inimap_buf(1)%POS2_NODES))
ALLOCATE(state_inimap_buf(1)%POS2_NODES(num_centroids))
388 IF(.NOT.
ALLOCATED(state_inimap_buf(1)%VEL_NODES))
ALLOCATE(state_inimap_buf(1)%VEL_NODES(num_centroids
389 IF(.NOT.
ALLOCATED(state_inimap_buf(1)%VEL2_NODES))
ALLOCATE(state_inimap_buf(1)%VEL2_NODES(num_centroids))
390 IF(.NOT.
ALLOCATED(state_inimap_buf(1)%NODE_IDS))
ALLOCATE(state_inimap_buf(1)%NODE_IDS(num_centroids))
392 DO k=1, num_centroids
393 ng = get_cell_fom_centroid(1,idx(k))
394 i = get_cell_fom_centroid(2,idx(k))
396 state_inimap_buf(1)%POS_NODES(k) = state_inimap_buf(1)%POS_CENTROIDS(k)
397 state_inimap_buf(1)%POS2_NODES(k) = state_inimap_buf(1)%POS2_CENTROIDS(k)
398 state_inimap_buf(1)%VEL_NODES(k) = multi_fvm%VEL(2,i+nft)
399 state_inimap_buf(1)%VEL2_NODES(k) = multi_fvm%VEL(3,i+nft)
400 state_inimap_buf(1)%NODE_IDS(k) = state_inimap_buf(1)%CELL_IDS(k)
404 DO k=1, num_centroids
405 ng = get_cell_fom_centroid(1,idx(k))
406 i = get_cell_fom_centroid(2,idx(k))
408 state_inimap_buf(1)%SUBMAT(isubmat)%VFRAC(k) = multi_fvm%PHASE_ALPHA(isubmat,i+nft)
409 state_inimap_buf(1)%SUBMAT(isubmat)%RHO(k) = multi_fvm%PHASE_RHO(isubmat,i+nft)
410 state_inimap_buf(1)%SUBMAT(isubmat)%E(k) = multi_fvm%PHASE_EINT(isubmat,i+nft)
411 state_inimap_buf(1)%SUBMAT(isubmat)%PRES(k) = multi_fvm%PRES(i+nft)
417 DO k=1, num_centroids
418 ng = get_cell_fom_centroid(1,idx(k))
419 i = get_cell_fom_centroid(2,idx(k))
425 IF(mat_param(imat)%MULTIMAT%MID(isubmat) == 0)
EXIT
430 uparam => bufmat(iadbuf:iadbuf+npar-1)
431 kk = m51_n0phas + (uparam(276+isubmat)-1)*m51_nvphas
432 mbuf => elbuf_tab(ng)%BUFLY(1)%MAT(1,1,1)
433 state_inimap_buf(1)%SUBMAT(isubmat)%VFRAC(k) = mbuf%VAR(nel*(01+kk-1)+i)
434 state_inimap_buf(1)%SUBMAT(isubmat)%RHO(k) = mbuf%VAR(nel*(12+kk-1)+i)
435 state_inimap_buf(1)%SUBMAT(isubmat)%E(k) = mbuf%VAR(nel*(08+kk-1)+i)
436 state_inimap_buf(1)%SUBMAT(isubmat)%PRES(k) = mbuf%VAR(nel*(18+kk-1)+i)
439 state_inimap_buf(1)%NSUBMAT = nb2
441 DO k=1, num_centroids
442 ng = get_cell_fom_centroid(1,idx(k))
443 i = get_cell_fom_centroid(2,idx(k))
444 gbuf => elbuf_tab(ng)%GBUF
446 state_inimap_buf(1)%SUBMAT(1)%VFRAC(k) = 1.d00
447 state_inimap_buf(1)%SUBMAT(1)%RHO(k) = gbuf%RHO(i)
448 state_inimap_buf(1)%SUBMAT(1)%E(k) = gbuf%EINT(i)
449 state_inimap_buf(1)%SUBMAT(1)%PRES(k) = -third * (gbuf%SIG(i) + gbuf%SIG(i + nel) + gbuf%SIG(i + 2 * nel))
456 IF(num_centroids > 0)
THEN
458 ALLOCATE(work(numnod,4))
460 IF(.NOT.
ALLOCATED(state_inimap_buf(1)%POS_NODES))
ALLOCATE(state_inimap_buf(1)%POS_NODES(nnod))
461 IF(.NOT.
ALLOCATED(state_inimap_buf(1)%POS2_NODES))
ALLOCATE(state_inimap_buf(1)%POS2_NODES(nnod
462 IF(.NOT.
ALLOCATED(state_inimap_buf(1)%VEL_NODES))
ALLOCATE(state_inimap_buf(1)%VEL_NODES(nnod))
463 IF(.NOT.
ALLOCATED(state_inimap_buf(1)%VEL2_NODES))
ALLOCATE(state_inimap_buf(1)%VEL2_NODES(nnod))
464 IF(.NOT.
ALLOCATED(state_inimap_buf(1)%NODE_IDS))
ALLOCATE(state_inimap_buf(1)%NODE_IDS(nnod))
467 IF(nodtag(i) == 1)
THEN
473 work(nnod,1) = x(2,i)
474 work(nnod,2) = x(3,i)
475 work(nnod,3) = v(2,i)
476 work(nnod,4) = v(3,i)
477 state_inimap_buf(1)%NODE_IDS(nnod) = itab(i)
480 state_inimap_buf(1)%NUM_POINTS=nnod
482 IF(
ALLOCATED(idx))
DEALLOCATE(idx)
483 IF(.NOT.
ALLOCATED(idx))
ALLOCATE(idx(nnod))
484 DO k=1,nnod ; idx(k)=k;
ENDDO
485 CALL quicksort_i2(state_inimap_buf(1)%NODE_IDS(:), idx, 1, nnod)
487 state_inimap_buf(1)%POS_NODES(k) = work(idx(k),1)
488 state_inimap_buf(1)%POS2_NODES(k) = work(idx(k),2)
489 state_inimap_buf(1)%VEL_NODES(k) = work(idx(k),3)
490 state_inimap_buf(1)%VEL2_NODES(k) = work(idx(k),4)
492 IF(
ALLOCATED(work))
DEALLOCATE(work)
509 shift_cy_min = state_inimap_buf(1)%SHIFT_Cy
510 shift_ny_min = state_inimap_buf(1)%SHIFT_Ny
511 shift_cz_min = state_inimap_buf(1)%SHIFT_Cz
512 shift_nz_min = state_inimap_buf(1)%SHIFT_Nz
514 IF(state_inimap_buf(i)%NUM_CENTROIDS==0)cycle
515 shift_cy_min =
min(shift_cy_min, state_inimap_buf(i)%SHIFT_Cy)
516 shift_ny_min =
min(shift_ny_min, state_inimap_buf(i)%SHIFT_Ny)
517 shift_cz_min =
min(shift_cz_min, state_inimap_buf(i)%SHIFT_Cz)
518 shift_nz_min =
min(shift_nz_min, state_inimap_buf(i)%SHIFT_Nz)
520 state_inimap_buf(1)%SHIFT_Cy = shift_cy_min
521 state_inimap_buf(1)%SHIFT_Ny = shift_ny_min
522 state_inimap_buf(1)%SHIFT_Cz = shift_cz_min
523 state_inimap_buf(1)%SHIFT_Nz = shift_nz_min
530 len_tot=state_inimap_buf(1)%LENGTH ;
531 ncell_tot = state_inimap_buf(1)%NUM_CENTROIDS ;
532 IF(ispmd == 0 .AND. nspmd > 1)
THEN
539 IF(state_inimap_buf(i)%NUM_CENTROIDS==0)
THEN
545 npts(i)= state_inimap_buf(i)%NUM_POINTS ;
546 npts_tot=npts_tot+npts(i)
547 len_(i)=state_inimap_buf(i)%LENGTH ;
548 len_tot=len_tot+len_(i)
549 ncell(i)= state_inimap_buf(i)%NUM_CENTROIDS ;
550 ncell_tot = ncell_tot + ncell(i)
552 ALLOCATE(work(npts_tot,5))
560 work(j,1) = state_inimap_buf(i)%POS_NODES(k)
561 work(j,2) = state_inimap_buf(i)%POS2_NODES(k)
562 work(j,3) = state_inimap_buf(i)%VEL_NODES(k)
563 work(j,4) = state_inimap_buf(i)%VEL2_NODES(k)
564 work(j,5) = state_inimap_buf(i)%NODE_IDS(k)
569 IF(
ALLOCATED(idx))
DEALLOCATE(idx)
570 IF(.NOT.
ALLOCATED(idx))
ALLOCATE(idx(npts_tot))
571 DO k=1,npts_tot ; idx(k)=k;
ENDDO
572 CALL quicksort(work(:,5), idx, 1, npts_tot)
579 ALLOCATE(nodtag_g(npts_tot))
580 nodtag_g(1:npts_tot)=1
583 IF(work(j,5) == work(j-1,5))
THEN
594 state_inimap_buf(1)%NUM_POINTS=k
595 IF(
ALLOCATED(state_inimap_buf(1)%VEL_NODES))
DEALLOCATE(state_inimap_buf(1)%VEL_NODES)
596 IF(
ALLOCATED(state_inimap_buf(1)%VEL2_NODES))
DEALLOCATE(state_inimap_buf(1)%VEL2_NODES)
597 IF(
ALLOCATED(state_inimap_buf(1)%POS_NODES))
DEALLOCATE(state_inimap_buf(1)%POS_NODES)
598 IF(
ALLOCATED(state_inimap_buf(1)%POS2_NODES))
DEALLOCATE(state_inimap_buf(1)%POS2_NODES)
599 IF(
ALLOCATED(state_inimap_buf(1)%NODE_IDS))
DEALLOCATE(state_inimap_buf(1)%NODE_IDS)
600 ALLOCATE(state_inimap_buf(1)%VEL_NODES(npts_tot), state_inimap_buf(1)%VEL2_NODES(npts_tot))
601 ALLOCATE(state_inimap_buf(1)%POS_NODES(npts_tot), state_inimap_buf(1)%POS2_NODES(npts_tot))
602 ALLOCATE(state_inimap_buf(1)%NODE_IDS(npts_tot))
606 IF(nodtag_g(k)==0)cycle
609 state_inimap_buf(1)%POS_NODES(j)=work(idx(k),1)
610 state_inimap_buf(1)%POS2_NODES(j)=work(idx(k),2)
611 state_inimap_buf(1)%VEL_NODES(j)=work(idx(k),3)
612 state_inimap_buf(1)%VEL2_NODES(j)=work(idx(k),4)
613 state_inimap_buf(1)%NODE_IDS(j)=work(k,5)
616 state_inimap_buf(1)%NUM_POINTS=npts_tot
617 IF(
ALLOCATED(work))
DEALLOCATE(work)
618 IF(
ALLOCATED(nodtag_g))
DEALLOCATE(nodtag_g)
622 nbmat=
max(nbmat,state_inimap_buf(i)%NSUBMAT)
624 ALLOCATE(work(ncell_tot,3+4*nbmat))
632 work(j,1) = state_inimap_buf(i)%POS_CENTROIDS(k)
633 work(j,2) = state_inimap_buf(i)%POS2_CENTROIDS(k)
634 work(j,3) = float(state_inimap_buf(i)%CELL_IDS(k))
635 nbmat = state_inimap_buf(i)%NSUBMAT
637 work(j,3+ 4*(jj-1)+1) = state_inimap_buf(i)%SUBMAT(jj)%VFRAC(k)
638 work(j,3+ 4*(jj-1)+2) = state_inimap_buf(i)%SUBMAT(jj)%RHO(k)
639 work(j,3+ 4*(jj-1)+3) = state_inimap_buf(i)%SUBMAT(jj)%E(k)
640 work(j,3+ 4*(jj-1)+4) = state_inimap_buf(i)%SUBMAT(jj)%PRES(k)
647 IF(
ALLOCATED(state_inimap_buf(1)%POS_CENTROIDS))
DEALLOCATE(state_inimap_buf(1)%POS_CENTROIDS)
648 IF(
ALLOCATED(state_inimap_buf(1)%POS2_CENTROIDS))
DEALLOCATE(state_inimap_buf(1)%POS2_CENTROIDS)
649 IF(
ALLOCATED(state_inimap_buf(1)%CELL_IDS))
DEALLOCATE(state_inimap_buf(1)%CELL_IDS)
650 nbmat = state_inimap_buf(1)%NSUBMAT
652 IF(
ALLOCATED(state_inimap_buf(1)%SUBMAT(jj)%VFRAC))
DEALLOCATE(state_inimap_buf(1)%SUBMAT(jj)%VFRAC)
653 IF(
ALLOCATED(state_inimap_buf(1)%SUBMAT(jj)%RHO ))
DEALLOCATE(state_inimap_buf(1)%SUBMAT(jj)%RHO)
654 IF(
ALLOCATED(state_inimap_buf(1)%SUBMAT(jj)%E ))
DEALLOCATE(state_inimap_buf(1)%SUBMAT(jj)%E)
655 IF(
ALLOCATED(state_inimap_buf(1)%SUBMAT(jj)%PRES))
DEALLOCATE(state_inimap_buf(1)%SUBMAT(jj)%PRES)
657 ALLOCATE(state_inimap_buf(1)%CELL_IDS(ncell_tot
658 ALLOCATE(state_inimap_buf(1)%POS_CENTROIDS(ncell_tot))
659 ALLOCATE(state_inimap_buf(1)%POS2_CENTROIDS(ncell_tot))
661 ALLOCATE(state_inimap_buf(1)%SUBMAT(jj)%VFRAC(ncell_tot))
662 ALLOCATE(state_inimap_buf(1)%SUBMAT(jj)%RHO(ncell_tot))
663 ALLOCATE(state_inimap_buf(1)%SUBMAT(jj)%E(ncell_tot))
664 ALLOCATE(state_inimap_buf(1)%SUBMAT(jj)%PRES(ncell_tot))
667 IF(
ALLOCATED(idx))
DEALLOCATE(idx)
668 IF(.NOT.
ALLOCATED(idx))
ALLOCATE(idx(ncell_tot))
669 DO k=1,ncell_tot ; idx(k)=k;
ENDDO
670 CALL quicksort(work(:,3), idx, 1, ncell_tot)
673 state_inimap_buf(1)%POS_CENTROIDS(j)=work(idx(j),1)
674 state_inimap_buf(1)%POS2_CENTROIDS(j)=work(idx(j),2)
675 state_inimap_buf(1)%CELL_IDS(j)=int(work(j,3))
676 nbmat = state_inimap_buf(1)%NSUBMAT
678 state_inimap_buf(1)%SUBMAT(jj)%VFRAC(j)=work(idx(j),3+ 4*(jj-1)+1)
679 state_inimap_buf(1)%SUBMAT(jj)%RHO(j)=work(idx(j),3+ 4*(jj-1)+2)
680 state_inimap_buf(1)%SUBMAT(jj)%E(j)=work(idx(j),3+ 4*(jj-1)+3)
681 state_inimap_buf(1)%SUBMAT(jj)%PRES(j)=work(idx(j),3+ 4*(jj-1)+4)
684 state_inimap_buf(1)%NUM_CENTROIDS = ncell_tot
685 state_inimap_buf(1)%LENGTH = len_tot
690 IF(ncell_tot == 0 .OR. len_tot == zero)
THEN
691 CALL ancmsg(msgid=284,anmode=aninfo,c1=
" -- 2D DOMAIN IS NOT DETECTED : CHECK X-PROJECTION")
693 ELSEIF(len_tot > 0 .AND. ncell_tot > 0)
THEN
694 IF(lx/len_tot > em06)
THEN
695 CALL ancmsg(msgid=284,anmode=aninfo,c1=
" -- 2D DOMAIN IS NOT DETECTED.")
708 WRITE(chstat,
'(I4.4)')state_inimap_call_number
709 filnam=rootnam(1:rootlen)//
'_2D_'//chstat//
'.inimap'
710 OPEN(unit=220582,file=filnam(1:len(trim(filnam))),access=
'SEQUENTIAL',form=
'FORMATTED',status=
'UNKNOWN')
711 WRITE(unit=220582,fmt=
'(A,I10)')
'#state file for mappgin with /INIMAP2D, iteration = ',state_inimap_call_number
712 WRITE(unit=220582,fmt=
'(A,A)')
'# ROOTNAME = ',rootnam(1:rootlen)
713 WRITE(unit=220582,fmt=
'(A,I0)')
'# VERSION = ',st_invers
714 WRITE(unit=220582,fmt=
'(A,F20.13)')
'# TIME = ',tt
715 WRITE(unit=220582,fmt=
'(A,I10)')
'# NCYCLE = ',ncycle
716 WRITE(unit=220582,fmt=
'(A,I10)')
'# NCELL = ',ncell_tot
725 nbmat = state_inimap_buf(1)%NSUBMAT
726 shift_cy = state_inimap_buf(1)%SHIFT_Cy
727 shift_ny = state_inimap_buf(1)%SHIFT_Ny
728 shift_cz = state_inimap_buf(1)%SHIFT_Cz
729 shift_nz = state_inimap_buf(1)%SHIFT_Nz
730 num_centroids = state_inimap_buf(1)%NUM_CENTROIDS
734 WRITE(unit=220582,fmt=2001)ipos+isubmat,isubmat
735 DO k=1, num_centroids
736 WRITE(unit=220582,fmt=
'(3E20.12)') state_inimap_buf(1)%POS_CENTROIDS(k)
737 . ,state_inimap_buf(1)%POS2_CENTROIDS(k)
738 . ,state_inimap_buf(1)%SUBMAT(isubmat)%VFRAC(k)
745 WRITE(unit=220582,fmt=2002)ipos+isubmat,isubmat
746 DO k=1, num_centroids
747 WRITE(unit=220582,fmt=
'(3E20.12)') state_inimap_buf(1)%POS_CENTROIDS(k)
748 . ,state_inimap_buf(1)%POS2_CENTROIDS(k)
749 . ,state_inimap_buf(1)%SUBMAT(isubmat)%RHO(k)
756 WRITE(unit=220582,fmt=2003)ipos+isubmat,isubmat
757 DO k=1, num_centroids
758 WRITE(unit=220582,fmt=
'(3E20.12)') state_inimap_buf(1)%POS_CENTROIDS(k)
759 . ,state_inimap_buf(1)%POS2_CENTROIDS(k)
760 . ,state_inimap_buf(1)%SUBMAT(isubmat)%E(k)
767 WRITE(unit=220582,fmt=2004)ipos+isubmat,isubmat
768 DO k=1, num_centroids
769 WRITE(unit=220582,fmt=
'(3E20.12)') state_inimap_buf(1)%POS_CENTROIDS(k)
770 . ,state_inimap_buf(1)%POS2_CENTROIDS(k)
771 . ,state_inimap_buf(1)%SUBMAT(isubmat)%PRES(k)
777 WRITE(unit=220582,fmt=3000)
778 DO jj=1,state_inimap_buf(1)%NUM_POINTS
779 WRITE(unit=220582,fmt=
'(4E20.12,I10)')
780 . state_inimap_buf(1)%POS_NODES(jj) ,state_inimap_buf(1)%POS2_NODES(jj),
781 . state_inimap_buf(1)%VEL_NODES(jj), state_inimap_buf(1)%VEL2_NODES(jj)
791 IF(
ALLOCATED(get_cell_fom_centroid))
DEALLOCATE(get_cell_fom_centroid)
793 nbmat = state_inimap_buf(jj)%NSUBMAT
794 IF(
ALLOCATED(state_inimap_buf(jj)%SUBMAT))
THEN
796 IF(
ALLOCATED(state_inimap_buf(jj)%SUBMAT(i)%VFRAC))
DEALLOCATE(state_inimap_buf(jj)%SUBMAT(i)%VFRAC)
797 IF(
ALLOCATED(state_inimap_buf(jj)%SUBMAT(i)%RHO))
DEALLOCATE(state_inimap_buf(jj)%SUBMAT(i)%RHO)
798 IF(
ALLOCATED(state_inimap_buf(jj)%SUBMAT(i)%E))
DEALLOCATE(state_inimap_buf(jj)%SUBMAT(i)%E)
801 IF(
ALLOCATED(state_inimap_buf(jj)%SUBMAT ))
DEALLOCATE(state_inimap_buf(jj)%SUBMAT)
802 IF(
ALLOCATED(state_inimap_buf(jj)%POS_NODES ))
DEALLOCATE(state_inimap_buf(jj)%POS_NODES)
803 IF(
ALLOCATED(state_inimap_buf(jj)%VEL_NODES ))
DEALLOCATE(state_inimap_buf(jj)%VEL_NODES)
804 IF(
ALLOCATED(state_inimap_buf(jj)%POS2_NODES ))
DEALLOCATE(state_inimap_buf(jj)%POS2_NODES)
805 IF(
ALLOCATED(state_inimap_buf(jj)%VEL2_NODES ))
DEALLOCATE(state_inimap_buf(jj)%VEL2_NODES)
806 IF(
ALLOCATED(state_inimap_buf(jj)%NODE_IDS ))
DEALLOCATE(state_inimap_buf(jj)%NODE_IDS)
807 IF(
ALLOCATED(state_inimap_buf(jj)%POS_CENTROIDS))
DEALLOCATE(state_inimap_buf(jj)%POS_CENTROIDS)
808 IF(
ALLOCATED(state_inimap_buf(jj)%POS_CENTROIDS))
DEALLOCATE(state_inimap_buf(jj)%POS2_CENTROIDS)
809 IF(
ALLOCATED(state_inimap_buf(jj)%CELL_IDS))
DEALLOCATE(state_inimap_buf(jj)%CELL_IDS)
813 WRITE(unit=220582,fmt=1000)
817 idx1=(/1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21/)
820 IF(is_stat_inimap_vp)
THEN
821 WRITE(unit=220582,fmt=
'(A)')
'#/INIMAP2D/VP/1'
823 WRITE(unit=220582,fmt=
'(A)')
'#/INIMAP2D/VE/1'
825 WRITE(unit=220582,fmt=
'(A)')
'#default input to update from /STATE/INIMAP2D'
826 WRITE(unit=220582,fmt=
'(A)')
'## Node1 Node2 Node3'
827 WRITE(unit=220582,fmt=
'(A)')
'# 0 0 0'
828 WRITE(unit=220582,fmt=
'(A)')
'## Grbric Grquad Grtria'
829 WRITE(unit=220582,fmt=
'(A)')
'# 0 0 0'
830 WRITE(unit=220582,fmt=
'(A)')
'## Fct_v Fscale_v'
831 WRITE(unit=220582,fmt=
'(A)')
'# 400 1.0'
832 DO imat=1,
min(21,nbmat)
833 WRITE(unit=220582,fmt=
'(A)')
'## Fct_vf Fct_rho Fscale_rho Fct_p Fscale_p'
834 WRITE(unit=220582,fmt=
'(A1,I10,2(I10,F20.0))')
'#', idx1(imat),idx2(imat),1.0,idx3(imat),1.0
836 WRITE(unit=220582,fmt=1000)
838 WRITE (iout,500) filnam(1:len(trim(filnam)))
839 WRITE (istdo,500) filnam(1:len(trim(filnam)))
845 IF(
ALLOCATED(state_inimap_buf))
DEALLOCATE(state_inimap_buf)
855 500
FORMAT (4x,
' STATE FILE:',1x,a,
' WRITTEN')
857 1000
FORMAT(
'#---1----|----2----|----3----|----4----|----5----|----6----|----7----|----8----|----9----|---10----|')
859 2001
FORMAT(
'#---1----|----2----|----3----|----4----|----5----|----6----|----7----|----8----|----9----|---10----|',/,
861 .
'volume fraction submaterial_',i0,/,
863 .
'#---1----|----2----|----3----|----4----|----5----|----6----|----7----|----8----|----9----|---10----|')
864 2002
FORMAT(
'#---1----|----2----|----3----|----4----|----5----|----6----|----7----|----8----|----9----|---10----|',/,
866 .
'mass density submaterial_',i0,/,
868 .
'#---1----|----2----|----3----|----4----|----5----|----6----|----7----|----8----|----9----|---10----|')
869 2003
FORMAT(
'#---1----|----2----|----3----|----4----|----5----|----6----|----7----|----8----|----9----|---10----|',/,
871 .
'energy density submaterial_',i0,/,
873 .
'#---1----|----2----|----3----|----4----|----5----|----6----|----7----|----8----|----9----|---10----|')
874 2004
FORMAT(
'#---1----|----2----|----3----|----4----|----5----|----6----|----7----|----8----|----9----|---10----|',/,
876 .
'pressure submaterial_',i0,/,
878 .
'#---1----|----2----|----3----|----4----|----5----|----6----|----7----|----8----|----9----|---10----|')
880 3000
FORMAT(
'#---1----|----2----|----3----|----4----|----5----|----6----|----7----|----8----|----9----|---10----|',/,
882 .
'velocity_function'/,
884 .
'#---1----|----2----|----3----|----4----|----5----|----6----|----7----|----8----|----9----|---10----|')