17 use discretelement
, only: discrete_element
50 USE discretelement
, Only : discrete_element
78 INTEGER :: I,J,K,L,M,NN,R,IJK,LCV
80 DOUBLE PRECISION,
DIMENSION(:),
ALLOCATABLE :: FACET_COUNT_DES, NEIGHBORING_FACET
82 INTEGER :: SPECIES_COUNTER,LT
84 CHARACTER (LEN=32) :: SUBM,SUBN,SUBR
85 CHARACTER (LEN=64) :: VAR_NAME
87 DOUBLE PRECISION,
DIMENSION(:),
ALLOCATABLE :: DP_BC_ID, IJK_ARRAY
90 INTEGER :: WRITE_HEADER = 1
91 INTEGER :: WRITE_DATA = 2
137 DO pass=write_header,write_data
205 species_counter = species_counter + 1
212 var_name = var_name(1:lt)//
'_Gas_mass_fractions_'//adjustl
223 species_counter = species_counter + 1
230 var_name = var_name(1:lt)//
'_Solids_mass_fractions_'//trim
'_' 246 var_name =
'Scalar_'//adjustl(subn)
254 var_name =
'RRates_'//adjustl(subr)
283 dp_bc_id = dble(
bc_id)
295 ijk_array(ijk) = dble(ijk)
298 DeAllocate(ijk_array)
307 var_name =
'DEBUG_'//adjustl(subn)
321 call mpi_barrier(mpi_comm_world,
mpierr)
377 LOGICAL :: VTU_FRAME_FILE_EXISTS
378 INTEGER :: ISTAT,BUFF1,BUFF2,L
383 call mpi_barrier(mpi_comm_world,
mpierr)
393 IF(vtu_frame_file_exists)
THEN 439 WRITE(*,10,advance=
'NO')
' WRITING VTU FILE : ', trim(
vtu_filename' .' 441 IF(
mype==
pe_io)
WRITE(*,15,advance=
'NO')
' EACH PROCESOR IS WRITING ITS OWN VTU FILE.' 451 OPEN(convert=
'BIG_ENDIAN',unit =
vtu_unit, &
453 form =
'UNFORMATTED', &
468 1001
FORMAT(/1
x,70(
'*')//,
' From: OPEN_VTU_FILE',/,
' Message: ',
469 'Error opening vtu file. Terminating run.',/10
x, &
470 'File name: ',a,/10
x,
471 'DES_UNIT : ',i4, /10
x,
472 'PLEASE VERIFY THAT VTU_DIR EXISTS: ', a, &
477 buffer=
'<?xml version="1.0"?>' 481 WRITE(
buffer,110)
'<!-- Time =',
time,
' sec. -->' 484 buffer=
'<VTKFile type="UnstructuredGrid" version="0.1" byte_order="BigEndian">' 487 buffer=
' <UnstructuredGrid>' 502 IF(trim(
vtu_dir)/=
'.') pvtu_filename=
'./'//trim(
vtu_dir)//
'/'//pvtu_filename
504 OPEN(convert=
'BIG_ENDIAN',unit =
pvtu_unit, file = trim(pvtu_filename
506 WRITE(
pvtu_unit,100)
'<?xml version="1.0"?>' 508 WRITE(
pvtu_unit,120)
'<VTKFile type="PUnstructuredGrid"',&
509 ' version="0.1" byte_order="BigEndian">' 511 WRITE(
pvtu_unit,100)
' <PUnstructuredGrid GhostLevel="0">' 513 WRITE(
pvtu_unit,100)
' <PDataArray type="Float32" Name="coordinates" NumberOfComponents="3" & 514 &format="appended" offset=" 0" />' 517 WRITE(
pvtu_unit,100)
' <PCellData Scalars="scalars">' 522 110
FORMAT(a,e14.7,a)
526 20
FORMAT(a,
"_",i4.4,
"_",i5.5,
".vtu")
527 25
FORMAT(a,
"_",i5.5,
".vtu")
528 30
FORMAT(a,
"_",i4.4,
".vtu")
530 40
FORMAT(a,
"_",i4.4,
".pvtu")
553 use,
INTRINSIC :: iso_c_binding
579 REAL(c_float) :: float
580 INTEGER(c_int) :: int
582 INTEGER :: nbytes_xyz,nbytes_connectivity,nbytes_offset,nbytes_type
583 INTEGER :: offset_xyz,offset_connectivity,offset_offset,offset_type
586 INTEGER :: WRITE_HEADER = 1
587 INTEGER :: WRITE_DATA = 2
614 nbytes_connectivity = 0
620 nbytes_connectivity = nbytes_connectivity * sizeof(int)
630 offset_connectivity = offset_xyz + sizeof(int) + nbytes_xyz
631 offset_offset = offset_connectivity + sizeof(int) + nbytes_connectivity
632 offset_type = offset_offset + sizeof(int) + nbytes_offset
635 IF(pass==write_header)
THEN 640 WRITE(
buffer,110)
' <Points>' 643 WRITE(
buffer,100)
' <DataArray type="Float32" Name="coordinates" NumberOfComponents="3" & 644 &format="appended" offset="',offset_xyz,
'" />' 647 WRITE(
buffer,110)
' </Points>' 650 WRITE(
buffer,110)
' <Cells>' 653 WRITE(
buffer,100)
' <DataArray type="Int32" Name="connectivity" format="appended" offset="' 657 WRITE(
buffer,100)
' <DataArray type="Int32" Name="offsets" format="appended" offset="''" />' 660 WRITE(
buffer,100)
' <DataArray type="Int32" Name="types" format="appended" offset="''" />' 663 WRITE(
buffer,110)
' </Cells>' 666 vtu_offset = offset_type + sizeof(int) + nbytes_type
668 WRITE(
buffer,110)
' <CellData>' 674 ELSEIF(pass==write_data)
THEN 676 WRITE(
buffer,110)
' </CellData>' 679 WRITE(
buffer,110)
' </Piece>' 683 WRITE(
buffer,110)
' </UnstructuredGrid>' 687 WRITE(
buffer,110)
' <AppendedData encoding="raw">' 747 nbytes_connectivity = 0
753 nbytes_connectivity = nbytes_connectivity * sizeof(int)
763 offset_connectivity = offset_xyz + sizeof(int) + nbytes_xyz
764 offset_offset = offset_connectivity + sizeof(int) + nbytes_connectivity
765 offset_type = offset_offset + sizeof(int) + nbytes_offset
768 IF(pass==write_header)
THEN 773 WRITE(
buffer,110)
' <Points>' 776 WRITE(
buffer,100)
' <DataArray type="Float32" Name="coordinates" NumberOfComponents="3" & 777 &format="appended" offset="',offset_xyz,
'" />' 780 WRITE(
buffer,110)
' </Points>' 783 WRITE(
buffer,110)
' <Cells>' 786 WRITE(
buffer,100)
' <DataArray type="Int32" Name="connectivity" format="appended" offset="' 790 WRITE(
buffer,100)
' <DataArray type="Int32" Name="offsets" format="appended" offset="''" />' 793 WRITE(
buffer,100)
' <DataArray type="Int32" Name="types" format="appended" offset="''" />' 796 WRITE(
buffer,110)
' </Cells>' 799 vtu_offset = offset_type + sizeof(int) + nbytes_type
801 WRITE(
buffer,110)
' <CellData>' 807 ELSEIF(pass==write_data)
THEN 809 WRITE(
buffer,110)
' </CellData>' 812 WRITE(
buffer,110)
' </Piece>' 816 WRITE(
buffer,110)
' </UnstructuredGrid>' 820 WRITE(
buffer,110)
' <AppendedData encoding="raw">' 872 100
FORMAT(a,i12,a,i12,a)
896 use,
INTRINSIC :: iso_c_binding
919 CHARACTER (*) :: VAR_NAME
920 DOUBLE PRECISION,
DIMENSION(DIMENSION_3) :: VAR
921 DOUBLE PRECISION,
ALLOCATABLE :: GLOBAL_VAR(:)
922 DOUBLE PRECISION,
DIMENSION(DIMENSION_3) :: TMP_VAR
924 REAL(c_float) :: float
926 INTEGER :: nbytes_scalar
929 INTEGER :: WRITE_HEADER = 1
930 INTEGER :: WRITE_DATA = 2
938 IF(pass==write_header)
THEN 941 DO i = 1,len_trim(var_name)
942 IF(var_name(i:i) ==
' ') var_name(i:i) =
'_' 945 WRITE(
buffer,90)
' <DataArray type="Float32" Name="',
946 '" format="appended" offset="',
vtu_offset'" />' 952 ELSEIF(pass==write_data)
THEN 958 allocate (global_var(1))
978 Deallocate (global_var)
988 IF(pass==write_header)
THEN 991 DO i = 1,len_trim(var_name)
992 IF(var_name(i:i) ==
' ') var_name(i:i) =
'_' 995 WRITE(
buffer,90)
' <DataArray type="Float32" Name="',
996 '" format="appended" offset="',
vtu_offset'" />' 1003 ELSEIF(pass==write_data)
THEN 1016 WRITE(
pvtu_unit,90)
' <DataArray type="Float32" Name="' 1017 '" format="appended" offset="',
vtu_offset'" />' 1027 90
FORMAT(a,a,a,i12,a)
1049 use,
INTRINSIC :: iso_c_binding
1072 CHARACTER (*) :: VAR_NAME
1073 DOUBLE PRECISION,
DIMENSION(DIMENSION_3) :: VARX,VARY,VARZ
1074 DOUBLE PRECISION,
ALLOCATABLE :: GLOBAL_VARX(:),GLOBAL_VARY(:),GLOBAL_VARZ(
1075 DOUBLE PRECISION,
DIMENSION(DIMENSION_3) :: TMP_VAR
1077 REAL(c_float) :: float
1079 INTEGER :: nbytes_vector
1082 INTEGER :: WRITE_HEADER = 1
1083 INTEGER :: WRITE_DATA = 2
1089 IF(pass==write_header)
THEN 1092 WRITE(
buffer,90)
' <DataArray type="Float32" Name="',
1093 '" NumberOfComponents="3" format="appended" offset="''" />' 1100 ELSEIF(pass==write_data)
THEN 1104 allocate (global_varx(
ijkmax3))
1105 allocate (global_vary(
ijkmax3))
1106 allocate (global_varz(
ijkmax3))
1108 allocate (global_varx(1))
1109 allocate (global_vary(1))
1110 allocate (global_varz(1))
1137 WRITE(
vtu_unit)
REAL(GLOBAL_VARX(IJK)),
REAL(GLOBAL_VARY(IJK))REAL(global_varz(ijk))
1142 Deallocate (global_varx)
1143 Deallocate (global_vary)
1144 Deallocate (global_varz)
1154 IF(pass==write_header)
THEN 1158 WRITE(
buffer,90)
' <DataArray type="Float32" Name="',
1159 '" NumberOfComponents="3" format="appended" offset="''" />' 1166 ELSEIF(pass==write_data)
THEN 1173 WRITE(
vtu_unit)
REAL(VARX(IJK)),
REAL(VARY(IJK)),
REAL(varz(ijk))
1181 WRITE(
pvtu_unit,90)
' <DataArray type="Float32" Name="' 1182 '" NumberOfComponents="3" format="appended" offset="''" />' 1191 90
FORMAT(a,a,a,i12,a)
1222 CHARACTER (LEN=32) :: VTU_NAME
1223 INTEGER,
DIMENSION(0:numPEs-1) :: ALL_VTK_CELL_COUNT
1234 WRITE(
buffer,110)
' </AppendedData>' 1237 WRITE(
buffer,110)
'</VTKFile>' 1252 IF(all_vtk_cell_count(n)>0)
THEN 1259 WRITE(
pvtu_unit,110)
' <Piece Source="',trim(vtu_name
'"/>' 1264 WRITE(
pvtu_unit,100)
' </PUnstructuredGrid>' 1270 20
FORMAT(a,
"_",i4.4,
"_",i5.5,
".vtu")
1271 25
FORMAT(a,
"_",i5.5,
".vtu")
1319 LOGICAL :: PVD_EXISTS
1327 INQUIRE(file=pvd_filename,exist=pvd_exists)
1335 IF (.NOT.pvd_exists)
THEN 1336 OPEN(convert=
'BIG_ENDIAN',unit =
pvd_unit, file = trim(pvd_filename
1337 WRITE(
pvd_unit,100)
'<?xml version="1.0"?>' 1338 WRITE(
pvd_unit,100)
'<VTKFile type="Collection" version="0.1" byte_order="LittleEndian">' 1343 WRITE(*,1002) trim(pvd_filename)
1344 WRITE(unit_log, 1002) trim(pvd_filename)
1349 IF (.NOT.pvd_exists)
THEN 1351 WRITE(*,1003) trim(pvd_filename)
1352 WRITE(unit_log, 1003) trim(pvd_filename)
1356 OPEN(convert=
'BIG_ENDIAN',unit=
pvd_unit,file = trim(pvd_filename
"APPEND"'OLD' 1365 OPEN(convert=
'BIG_ENDIAN',unit=
pvd_unit,file = trim(pvd_filename
"APPEND"'OLD' 1373 1002
FORMAT(/1
x,70(
'*')/,
' From: OPEN_PVD_FILE',/,
' Message: ', &
1374 a,
' already exists in the run directory.',/10
x, &
1375 'This is not allowed for a new run.',/10
x,
1376 'Terminating run.',/1
x,70(
'*')/)
1378 1003
FORMAT(/1
x,70(
'*')/,
' From: OPEN_PVD_FILE',/,
' Message: ', &
1379 a,
' is missing from the the run directory,',/10
x, &
1380 ' and must be present for a restart run.',/10
x,
1381 'Terminating run.',/1
x,70(
'*')/)
1411 CHARACTER (LEN=255) :: FILENAME
1412 CHARACTER (LEN=5) :: EXT
1430 IF(trim(
vtu_dir)/=
'.') filename=
'./'//trim(
vtu_dir)//
'/'//filename
1435 '<DataSet timestep="',
time,
'" ',&
1436 'group="" part="0" ',&
1437 'file="',trim(filename),
'"/>' 1447 40
FORMAT(a,
"_",i4.4,a5)
1449 100
FORMAT(6x,a,e14.7,5a)
1493 INTEGER :: L,IJK,NODE
1494 INTEGER :: POINT_ID,POLY_COUNT,FACE_ID,Q_ID
1495 INTEGER :: N_CUT_FACE_NODES
1497 INTEGER NUMBER_OF_FACES
1498 INTEGER NUMBER_OF_SURFACE_POINTS
1500 DOUBLE PRECISION,
DIMENSION(3,15) :: COORD_CUT_FACE_NODES
1501 DOUBLE PRECISION,
DIMENSION(3) :: NORMAL
1503 INTEGER,
DIMENSION(DIMENSION_MAX_CUT_CELL,6) :: FACE_CONNECTIVITY
1504 INTEGER,
DIMENSION(DIMENSION_MAX_CUT_CELL) :: NUMBER_OF_CUT_FACE_POINTS
1506 DOUBLE PRECISION,
DIMENSION(DIMENSION_MAX_CUT_CELL) :: X_FACE_POINT
1507 DOUBLE PRECISION,
DIMENSION(DIMENSION_MAX_CUT_CELL) :: Y_FACE_POINT
1508 DOUBLE PRECISION,
DIMENSION(DIMENSION_MAX_CUT_CELL) :: Z_FACE_POINT
1510 DOUBLE PRECISION :: X_COPY,Y_COPY,Z_COPY,F_COPY
1512 LOGICAL :: CLIP_FLAG
1514 CHARACTER (LEN=255) :: FILENAME
1516 LOGICAL :: CORNER_POINT
1517 INTEGER :: NODE_OF_CORNER, IERROR
1527 number_of_surface_points = 0
1540 number_of_faces = number_of_faces + 1
1542 n_cut_face_nodes = 0
1554 corner_point = .true.
1556 node_of_corner = node
1562 n_cut_face_nodes = n_cut_face_nodes + 1
1563 coord_cut_face_nodes(1,n_cut_face_nodes) = x_copy
1564 coord_cut_face_nodes(2,n_cut_face_nodes) = y_copy
1565 coord_cut_face_nodes(3,n_cut_face_nodes) = z_copy
1572 IF(corner_point)
THEN 1575 CALL eval_f(
'QUADRIC',x_copy,y_copy,z_copy,q_id,f_copy
1588 IF (abs(f_copy) <
tol_f )
THEN 1589 n_cut_face_nodes = n_cut_face_nodes + 1
1590 coord_cut_face_nodes(1,n_cut_face_nodes) = x_copy
1591 coord_cut_face_nodes(2,n_cut_face_nodes) = y_copy
1592 coord_cut_face_nodes(3,n_cut_face_nodes) = z_copy
1601 DO node = 1,n_cut_face_nodes
1602 number_of_surface_points = number_of_surface_points + 1
1605 WRITE(*,3000)
'ERROR IN SUBROUTINE WRITE_3DCUT_SURFACE_VTK:' 1606 WRITE(*,3000)
'NUMBER_OF_SURFACE_POINTS>=DIMENSION_MAX_CUT_CELL:' 1607 WRITE(*,3000)
'INCREASE VALUE OF FAC_DIM_MAX_CUT_CELL.' 1608 WRITE(*,3010)
'CURRENT VALUE OF FAC_DIM_MAX_CUT_CELL =' 1609 WRITE(*,3020)
'CURRENT VALUE OF DIMENSION_MAX_CUT_CELL =' 1610 WRITE(*,3000)
'MFiX will exit now.' 1614 x_face_point(number_of_surface_points) = coord_cut_face_nodes
1624 filename= trim(
run_name) //
'_boundary.vtk' 1625 filename = trim(filename)
1626 OPEN(convert=
'BIG_ENDIAN',unit = 123, file = filename)
1627 WRITE(123,1001)
'# vtk DataFile Version 2.0' 1628 WRITE(123,1001)
'3D CUT-CELL SURFACE' 1629 WRITE(123,1001)
'ASCII' 1632 WRITE(123,1001)
'DATASET UNSTRUCTURED_GRID' 1634 WRITE(123,1001)
'DATASET POLYDATA' 1637 WRITE(123,1010)
'POINTS ',number_of_surface_points,
' float' 1639 DO point_id = 1,number_of_surface_points
1640 WRITE(123,1020) x_face_point(point_id),y_face_point(point_id),z_face_point
1645 WRITE(123,1030)
'CELLS ',number_of_faces,poly_count
1646 DO face_id = 1 , number_of_faces
1647 WRITE(123,1040) number_of_cut_face_points(face_id),(face_connectivity
1650 WRITE(123,1030)
'CELL_TYPES ',number_of_faces
1651 DO face_id = 1 , number_of_faces
1657 WRITE(123,1030)
'POLYGONS ',number_of_faces,poly_count
1658 DO face_id = 1 , number_of_faces
1659 WRITE(123,1040) number_of_cut_face_points(face_id),(face_connectivity
1667 1020
FORMAT(3(e16.8,2
x))
1668 1030
FORMAT(a,2(i8,2
x))
1669 1040
FORMAT(20(i8,2
x))
1671 3010
FORMAT(1
x,a,f8.4)
1672 3020
FORMAT(1
x,a,i8)
1677 WRITE(*,3030)
'WROTE BOUNDARY IN VTK FILE : ',filename
1720 INTEGER :: IJK,I,J,K,L
1721 INTEGER :: IJK_OFFSET
1723 INTEGER :: iproc,IERR
1724 INTEGER,
DIMENSION(0:numPEs-1) :: disp,rcount
1725 INTEGER,
DIMENSION(:,:),
ALLOCATABLE :: SHIFTED_CONNECTIVITY
1738 ijk_offset = ijk_offset + rcount(iproc)
1799 WHERE (shifted_connectivity >
ijkend3)
1809 shifted_connectivity(ijk,l) = funijk_gl(i,j,k)
1830 Deallocate( shifted_connectivity )
1907 INTEGER :: IJK,I,J,K,L,NODE
1909 INTEGER,
DIMENSION(:,:),
ALLOCATABLE :: SHIFTED_CONNECTIVITY
1988 IF(wall_at(ijk))
THEN 2017 shifted_connectivity(ijk,l) = funijk_gl(i,j,k)
2068 deAllocate( shifted_connectivity )
2153 DOUBLE PRECISION :: MIN_VOL, MAX_VOL, GLOBAL_MIN_VOL,GLOBAL_MAX_VOL
2154 DOUBLE PRECISION :: MIN_AYZ, MAX_AYZ, GLOBAL_MIN_AYZ,GLOBAL_MAX_AYZ
2155 DOUBLE PRECISION :: MIN_AXZ, MAX_AXZ, GLOBAL_MIN_AXZ,GLOBAL_MAX_AXZ
2156 DOUBLE PRECISION :: MIN_AXY, MAX_AXY, GLOBAL_MIN_AXY,GLOBAL_MAX_AXY
2157 DOUBLE PRECISION :: MIN_CUT, MAX_CUT, GLOBAL_MIN_CUT,GLOBAL_MAX_CUT
2158 DOUBLE PRECISION :: LOCAL_MIN_Q,LOCAL_MAX_Q, GLOBAL_MIN_Q,GLOBAL_MAX_Q
2163 WRITE(*,5)
'GRID STATISTICS:' 2165 WRITE(*,10)
'NUMBER OF STANDARD CELLS = ', &
2167 WRITE(*,10)
'NUMBER OF CUT CELLS = ', &
2169 WRITE(*,10)
'NUMBER OF BLOCKED CELLS = ', &
2173 10
FORMAT(1
x,a,i8,
' (',f6.2,
' % of Total)')
2198 min_vol = dmin1(min_vol,
vol(ijk))
2199 max_vol = dmax1(max_vol,
vol(ijk))
2200 min_ayz = dmin1(min_ayz,
ayz(ijk))
2201 max_ayz = dmax1(max_ayz,
ayz(ijk))
2202 min_axz = dmin1(min_axz,
axz(ijk))
2203 max_axz = dmax1(max_axz,
axz(ijk))
2204 min_axy = dmin1(min_axy,
axy(ijk))
2205 max_axy = dmax1(max_axy,
axy(ijk))
2220 WRITE(
unit_cut_cell_log,1000)
'################################################################' 2222 WRITE(
unit_cut_cell_log,1000)
'################################################################' 2243 min_vol = dmin1(min_vol,
vol(ijk))
2244 max_vol = dmax1(max_vol,
vol(ijk))
2245 min_ayz = dmin1(min_ayz,
ayz(ijk))
2246 max_ayz = dmax1(max_ayz,
ayz(ijk))
2247 min_axz = dmin1(min_axz,
axz(ijk))
2248 max_axz = dmax1(max_axz,
axz(ijk))
2249 min_axy = dmin1(min_axy,
axy(ijk))
2250 max_axy = dmax1(max_axy,
axy(ijk))
2271 WRITE(
unit_cut_cell_log,1000)
'################################################################' 2274 1000
FORMAT(a,e14.7,2
x,e14.7)
2293 min_vol = dmin1(min_vol,
vol_u(ijk))
2294 max_vol = dmax1(max_vol,
vol_u(ijk))
2295 min_ayz = dmin1(min_ayz,
ayz_u(ijk))
2296 max_ayz = dmax1(max_ayz,
ayz_u(ijk))
2297 min_axz = dmin1(min_axz,
axz_u(ijk))
2298 max_axz = dmax1(max_axz,
axz_u(ijk))
2299 min_axy = dmin1(min_axy,
axy_u(ijk))
2300 max_axy = dmax1(max_axy,
axy_u(ijk))
2336 min_vol = dmin1(min_vol,
vol_u(ijk))
2337 max_vol = dmax1(max_vol,
vol_u(ijk))
2338 min_ayz = dmin1(min_ayz,
ayz_u(ijk))
2339 max_ayz = dmax1(max_ayz,
ayz_u(ijk))
2340 min_axz = dmin1(min_axz,
axz_u(ijk))
2341 max_axz = dmax1(max_axz,
axz_u(ijk))
2342 min_axy = dmin1(min_axy,
axy_u(ijk))
2343 max_axy = dmax1(max_axy,
axy_u(ijk))
2369 WRITE(
unit_cut_cell_log,1000)
'################################################################' 2388 min_vol = dmin1(min_vol,
vol_v(ijk))
2389 max_vol = dmax1(max_vol,
vol_v(ijk))
2390 min_ayz = dmin1(min_ayz,
ayz_v(ijk))
2391 max_ayz = dmax1(max_ayz,
ayz_v(ijk))
2392 min_axz = dmin1(min_axz,
axz_v(ijk))
2393 max_axz = dmax1(max_axz,
axz_v(ijk))
2394 min_axy = dmin1(min_axy,
axy_v(ijk))
2395 max_axy = dmax1(max_axy,
axy_v(ijk))
2431 min_vol = dmin1(min_vol,
vol_v(ijk))
2432 max_vol = dmax1(max_vol,
vol_v(ijk))
2433 min_ayz = dmin1(min_ayz,
ayz_v(ijk))
2434 max_ayz = dmax1(max_ayz,
ayz_v(ijk))
2435 min_axz = dmin1(min_axz,
axz_v(ijk))
2436 max_axz = dmax1(max_axz,
axz_v(ijk))
2437 min_axy = dmin1(min_axy,
axy_v(ijk))
2438 max_axy = dmax1(max_axy,
axy_v(ijk))
2464 WRITE(
unit_cut_cell_log,1000)
'################################################################' 2486 min_vol = dmin1(min_vol,
vol_w(ijk))
2487 max_vol = dmax1(max_vol,
vol_w(ijk))
2488 min_ayz = dmin1(min_ayz,
ayz_w(ijk))
2489 max_ayz = dmax1(max_ayz,
ayz_w(ijk))
2490 min_axz = dmin1(min_axz,
axz_w(ijk))
2491 max_axz = dmax1(max_axz,
axz_w(ijk))
2492 min_axy = dmin1(min_axy,
axy_w(ijk))
2493 max_axy = dmax1(max_axy,
axy_w(ijk))
2529 min_vol = dmin1(min_vol,
vol_w(ijk))
2530 max_vol = dmax1(max_vol,
vol_w(ijk))
2531 min_ayz = dmin1(min_ayz,
ayz_w(ijk))
2532 max_ayz = dmax1(max_ayz,
ayz_w(ijk))
2533 min_axz = dmin1(min_axz,
axz_w(ijk))
2534 max_axz = dmax1(max_axz,
axz_w(ijk))
2535 min_axy = dmin1(min_axy,
axy_w(ijk))
2536 max_axy = dmax1(max_axy,
axy_w(ijk))
2562 WRITE(
unit_cut_cell_log,1000)
'################################################################' 2639 local_min_q = minval(
delh_u)
2640 local_max_q = maxval(
delh_u)
2707 local_min_q = minval(
delh_v)
2708 local_max_q = maxval(
delh_v)
2776 local_min_q = minval(
delh_w)
2777 local_max_q = maxval(
delh_w)
2830 INTEGER ::POINT_ID,IJKC
2831 INTEGER ,
ALLOCATABLE :: POINT_NEW_ID(:)
2832 INTEGER ,
ALLOCATABLE :: NEW_POINT_NEW_ID(:)
2833 LOGICAL ,
ALLOCATABLE :: KEEP_POINT(:)
2834 LOGICAL ,
ALLOCATABLE :: KEEP_NEW_POINT(:)
2840 IF(
ALLOCATED(keep_new_point))
DEALLOCATE (keep_new_point
2841 IF(
ALLOCATED(point_new_id))
DEALLOCATE (point_new_id
2842 IF(
ALLOCATED(new_point_new_id))
DEALLOCATE (new_point_new_id
2843 IF(
ALLOCATED(keep_point))
DEALLOCATE (keep_point
2848 ALLOCATE (point_new_id(
ijkmax3))
2849 ALLOCATE (new_point_new_id(
ijkmax3))
2850 ALLOCATE (keep_point(
ijkmax3))
2858 keep_point = .false.
2859 keep_new_point = .false.
2865 IF(ijkc<=
ijkmax3) keep_point(ijkc) = .true.
2874 new_point_new_id = -1
2878 IF(keep_point(ijk))
THEN 2879 point_new_id(ijk) = point_id
2880 point_id = point_id + 1
2885 IF(keep_new_point(ijk))
THEN 2886 new_point_new_id(ijk) = point_id
2887 point_id = point_id + 1
2902 IF(keep_point(ijk))
THEN 2904 (/
REAL(XG_E(GLOBAL_I_OF(IJK))),
REAL(YG_N(GLOBAL_J_OF(IJK)))REAL(
zg_t(
global_k_of(ijk)))
2910 IF(keep_new_point(ijk))
THEN 2911 new_point_new_id(ijk) = point_id
2913 (/
REAL(GLOBAL_X_NEW_POINT(IJK)),
REAL(GLOBAL_Y_NEW_POINT(IJK))REAL(
global_z_new_point(ijk))
2938 IF(
ALLOCATED(keep_new_point))
DEALLOCATE (keep_new_point
2939 IF(
ALLOCATED(point_new_id))
DEALLOCATE (point_new_id)
2940 IF(
ALLOCATED(new_point_new_id))
DEALLOCATE (new_point_new_id
2941 IF(
ALLOCATED(keep_point))
DEALLOCATE (keep_point)
2946 ALLOCATE (point_new_id(
ijkend3))
2947 ALLOCATE (new_point_new_id(
ijkend3))
2948 ALLOCATE (keep_point(
ijkend3))
2956 keep_point = .false.
2957 keep_new_point = .false.
2963 IF(ijkc<=
ijkend3) keep_point(ijkc) = .true.
2972 new_point_new_id = -1
2976 IF(keep_point(ijk))
THEN 2977 point_new_id(ijk) = point_id
2978 point_id = point_id + 1
2983 IF(keep_new_point(ijk))
THEN 2984 new_point_new_id(ijk) = point_id
2985 point_id = point_id + 1
3000 IF(keep_point(ijk))
THEN 3002 (/
REAL(XG_E(I_OF(IJK))),
REAL(YG_N(J_OF(IJK))),
REAL(
zg_t(
k_of(ijk)))
3008 IF(keep_new_point(ijk))
THEN 3009 new_point_new_id(ijk) = point_id
3011 (/
REAL(X_NEW_POINT(IJK)),
REAL(Y_NEW_POINT(IJK)),
REAL(
z_new_point(ijk))
3063 INTEGER :: IJK,I,J,K,I_E,I_W,J_N,J_S,K_T,K_B
3064 INTEGER :: NXS,NYS,NZS,NS,I_TMP,J_TMP,K_TMP
3065 INTEGER :: I_SLICE(dim_i),J_SLICE(dim_j),K_SLICE(dim_k)
3066 DOUBLE PRECISION :: XE,XW,YS,YN,ZB,ZT
3067 DOUBLE PRECISION :: XSLICE,YSLICE,ZSLICE
3068 LOGICAL :: KEEP_XDIR,KEEP_YDIR,KEEP_ZDIR
3102 xslice = xw + (xe-xw)/(nxs-1)*(ns-1)
3108 yslice = ys + (yn-ys)/(nys-1)*(ns-1)
3114 zslice = zb + (zt-zb)/(nzs-1)*(ns-1)
3154 IF(i_w<=i.AND.i<=i_e) keep_xdir=.true.
3157 IF(i==i_slice(ns)) keep_xdir=.true.
3164 IF(j_s<=j.AND.j<=j_n) keep_ydir=.true.
3167 IF(j==j_slice(ns)) keep_ydir=.true.
3174 IF(k_b<=k.AND.k<=k_t) keep_zdir=.true.
3177 IF(k==k_slice(ns)) keep_zdir=.true.
3182 IF(keep_xdir.AND.keep_ydir.AND.keep_zdir)
THEN 3212 IF(i_w<=i.AND.i<=i_e) keep_xdir=.true.
3215 IF(i==i_slice(ns)) keep_xdir=.true.
3222 IF(j_s<=j.AND.j<=j_n) keep_ydir=.true.
3225 IF(j==j_slice(ns)) keep_ydir=.true.
3232 IF(k_b<=k.AND.k<=k_t) keep_zdir=.true.
3235 IF(k==k_slice(ns)) keep_zdir=.true.
3240 IF(keep_xdir.AND.keep_ydir.AND.keep_zdir)
THEN double precision, dimension(:), allocatable theta_wn
character(len=255) vtu_filename
logical, dimension(dimension_vtk) vtk_v_g
double precision, dimension(:), allocatable theta_un
logical, dimension(:), allocatable global_blocked_cell_at
double precision, dimension(:,:), allocatable v_s
logical, dimension(dimension_vtk) vtk_defined
subroutine calc_cell(RMIN, REACTOR_LOC, D_DIR, N_DIR, CELL_LOC)
double precision, dimension(:), allocatable vol_w
double precision, dimension(:), allocatable alpha_ut_c
double precision, dimension(:), allocatable theta_w_tn
double precision, dimension(:), allocatable noc_v_t
integer, dimension(:), allocatable i_of
character(len=255) vtu_dir
logical, dimension(:), allocatable wall_u_at
logical, dimension(dimension_vtk, dim_m) vtk_w_s
integer number_of_cut_cells
logical, dimension(:), allocatable cut_u_cell_at
logical, dimension(dimension_vtk, dim_m) vtk_u_s
logical, dimension(:), allocatable standard_u_cell_at
subroutine setup_vtk_no_cutcell
double precision, dimension(:,:), allocatable debug_cg
logical time_dependent_filename
double precision, dimension(:), allocatable alpha_vt_c
double precision, dimension(:), allocatable yg_n
real, dimension(:,:), allocatable global_coords_of_points
double precision, dimension(:), allocatable ep_g
double precision, dimension(:), allocatable global_f_at
double precision, dimension(:), allocatable theta_u_ne
logical, dimension(:), allocatable global_interior_cell_at
integer, dimension(:,:), allocatable cleaned_connectivity
double precision, dimension(:), allocatable k_turb_g
double precision, dimension(:), allocatable global_x_new_point
subroutine update_and_close_pvd_file
integer, dimension(:,:), allocatable global_connectivity
logical, dimension(dimension_vtk) vtk_t_g
logical, dimension(dimension_vtk) vtk_dbg_file
integer number_of_vtk_cells
double precision, dimension(:), allocatable xg_e
subroutine gatherv_1d(lbuf, sendcnt, gbuf, rcount, disp, mroot, idebug)
subroutine reorder_polygon(NP, COORD, NORMAL, IERROR)
subroutine write_vtp_file(LCV, MODE)
double precision, dimension(:), allocatable delh_u
double precision, dimension(:), allocatable axy
integer, dimension(:), allocatable global_number_of_nodes
double precision, dimension(dimension_vtk) vtk_x_e
double precision fac_dim_max_cut_cell
double precision, dimension(:), allocatable noc_w_n
double precision, dimension(0:15) z_node
double precision, dimension(:,:), allocatable w_s
logical reset_frame_at_time_zero
character(len=60) run_name
double precision, dimension(:), allocatable noc_v_n
subroutine send_receive_1d_logical(L1D, NLAYERS)
double precision, dimension(:), allocatable alpha_ve_c
logical, dimension(dimension_vtk) vtk_p_star
double precision, dimension(0:15) y_node
double precision, dimension(:), allocatable t_g
logical, dimension(:), allocatable wall_v_at
subroutine open_vtu_file_bin(MODE)
double precision, dimension(:), allocatable global_y_new_point
integer number_of_w_wall_cells
logical, dimension(:), allocatable standard_w_cell_at
integer, dimension(:), allocatable global_j_of
double precision, dimension(:,:), allocatable scalar
double precision, dimension(0:dim_j) dy
double precision, dimension(:), allocatable theta_wt
integer, dimension(dimension_vtk) vtk_nxs
subroutine write_geometry_in_vtu_bin(PASS)
subroutine allgather_1i(lbuf, gbuf, idebug)
double precision, dimension(:), allocatable global_z_new_point
double precision, dimension(:), allocatable p_g
double precision, dimension(:), allocatable noc_u_n
double precision, dimension(:,:), allocatable normal_s
double precision, dimension(:), allocatable ayz_u
logical, dimension(dimension_vtk) pvd_file_initialized
double precision, dimension(dimension_vtk) vtk_y_n
character(len=512) buffer
double precision, dimension(0:dim_k) dz
double precision, dimension(:), allocatable ayz
integer number_of_new_points
character(len=32), dimension(dim_n_g) species_alias_g
double precision, dimension(:), allocatable delh_v
logical, dimension(:), allocatable global_snap
double precision, dimension(:), allocatable a
logical, dimension(dimension_vtk) vtk_u_g
double precision, dimension(:), allocatable alpha_ue_c
double precision, dimension(:,:), allocatable u_s
logical, dimension(dimension_vtk) vtk_dwall
double precision, dimension(:), allocatable ayz_v
double precision, dimension(:), allocatable axz_u
double precision, dimension(:), allocatable theta_ut
character(len=1), dimension(dimension_vtk) vtk_data
double precision, dimension(:), allocatable alpha_wt_c
integer, dimension(:), allocatable k_of
integer, dimension(dimension_vtk) frame
double precision, dimension(:), allocatable f_at
double precision, dimension(:), allocatable alpha_wn_c
logical, dimension(dimension_vtk, vtk_nrrmax) vtk_rrate
subroutine get_global_cell_node_coordinates(IJK, TYPE_OF_CELL)
double precision, dimension(:), allocatable partition
logical, dimension(dimension_vtk, dim_m) vtk_t_s
logical, dimension(dimension_vtk, dim_m) vtk_vel_s
logical, dimension(dimension_vtk) vtk_ep_g
integer, dimension(:), allocatable global_i_of
logical, dimension(dimension_vtk, dim_scalar) vtk_scalar
double precision, dimension(:), allocatable noc_w_e
double precision, dimension(:), allocatable area_v_cut
subroutine mfix_exit(myID, normal_termination)
logical, dimension(dimension_vtk) vtk_lambda_2
double precision, dimension(:,:,:), allocatable x_s
integer, dimension(:), allocatable j_of
logical, dimension(:), allocatable wall_w_at
double precision, dimension(:), allocatable theta_v_ne
double precision, dimension(:), allocatable axy_v
double precision, dimension(:,:), allocatable t_s
logical, dimension(dimension_vtk) vtk_w_g
double precision, dimension(:,:), allocatable x_g
logical, dimension(dimension_vtk) vtk_k_turb_g
subroutine write_vtu_file(LCV, MODE)
integer number_of_blocked_cells
double precision, dimension(:), allocatable alpha_un_c
double precision, dimension(dimension_vtk) vtk_y_s
subroutine get_cell_node_coordinates(IJK, TYPE_OF_CELL)
double precision, dimension(:), allocatable noc_u_t
character(len=16) run_type
subroutine print_grid_statistics
logical, dimension(dimension_vtk, dim_n_g) vtk_x_g
double precision, dimension(:,:), allocatable theta_m
double precision, dimension(:), allocatable theta_vn
double precision, dimension(:), allocatable alpha_we_c
subroutine close_vtu_file_bin(MODE)
double precision, dimension(:), allocatable v_g
logical, dimension(dimension_vtk, dim_m) vtk_theta_m
integer number_of_u_wall_cells
integer, dimension(:,:), allocatable global_cleaned_connectivity
logical, dimension(:), allocatable cut_w_cell_at
double precision, dimension(0:dim_i) dx
subroutine clean_geometry
logical, dimension(dimension_vtk, dim_m, dim_n_s) vtk_x_s
double precision, dimension(:), allocatable noc_u_e
logical, dimension(dimension_vtk, 15) vtk_debug
double precision, dimension(:), allocatable theta_ue
double precision, dimension(:), allocatable z_new_point
character(len=1), parameter end_rec
double precision, dimension(:), allocatable y_new_point
logical global_var_allocated
double precision, dimension(:), allocatable w_g
subroutine write_scalar_in_vtu_bin(VAR_NAME, VAR, PASS)
double precision, dimension(:), allocatable x_new_point
integer, dimension(:), allocatable number_of_nodes
logical, dimension(dimension_vtk) vtk_bc_id
double precision, dimension(:), allocatable theta_v_nt
double precision, dimension(:), allocatable axz
double precision, dimension(:), allocatable ayz_w
double precision, parameter large_number
double precision, dimension(:), allocatable delh_w
logical, dimension(dimension_vtk) vtk_vel_g
logical, dimension(:), allocatable cut_v_cell_at
logical, dimension(dimension_vtk) vtk_p_g
double precision, dimension(:), allocatable vorticity
logical, dimension(dimension_vtk, dim_m) vtk_rop_s
logical, dimension(:), allocatable interior_cell_at
integer, dimension(0:dim_m) nmax
logical, dimension(dimension_vtk) vtk_partition
subroutine write_dbg_vtu_and_vtp_files
logical, dimension(:), allocatable cut_cell_at
logical, dimension(dimension_vtk, dim_m) vtk_v_s
double precision, dimension(:,:), allocatable p_s
logical, dimension(:), allocatable global_standard_cell_at
double precision, dimension(:,:), allocatable reactionrates
double precision, dimension(:), allocatable axz_w
integer dimension_max_cut_cell
double precision, dimension(:), allocatable noc_w_t
integer number_of_small_cells
subroutine calc_vorticity
logical, dimension(dimension_vtk) vtk_cutcell_only
double precision, dimension(:), allocatable axy_w
integer global_number_of_new_points
double precision, dimension(dimension_vtk) vtk_z_b
double precision, dimension(:), allocatable theta_w_te
integer, dimension(dimension_vtk) vtk_nys
integer, dimension(:), allocatable bc_id
double precision, dimension(:), allocatable u_g
integer number_of_v_wall_cells
double precision, dimension(:), allocatable vol_u
logical, dimension(:), allocatable standard_cell_at
logical, dimension(:), allocatable standard_v_cell_at
double precision, dimension(:), allocatable area_w_cut
logical, dimension(dimension_vtk) vtk_e_turb_g
logical, dimension(dimension_vtk) vtk_vorticity
double precision, dimension(:,:), allocatable rop_s
integer, dimension(:), allocatable global_k_of
double precision, dimension(:), allocatable theta_vt
character(len=255), dimension(dimension_vtk) vtk_filebase
double precision, dimension(:), allocatable area_u_cut
subroutine setup_vtk_region
double precision, dimension(:), allocatable theta_we
double precision, dimension(:), allocatable dwall
integer number_of_standard_cells
logical grid_info_printed_on_screen
double precision, dimension(dimension_vtk) vtk_z_t
double precision, dimension(:), allocatable lambda2
subroutine eval_f(METHOD, x1, x2, x3, Q, f, CLIP_FLAG)
logical, dimension(:), allocatable belongs_to_vtk_subdomain
integer, parameter dimension_vtk
real, dimension(:,:), allocatable coords_of_points
logical, dimension(:), allocatable blocked_cell_at
subroutine write_cut_surface_vtk
subroutine unshift_dp_array(ARRAY_1, ARRAY_2)
character(len=18), dimension(dim_n_all) species_name
character(len=32), dimension(dim_m, dim_n_s) species_alias_s
double precision, dimension(:), allocatable e_turb_g
double precision, dimension(:), allocatable vol
double precision, dimension(:), allocatable zg_t
double precision, dimension(:), allocatable axy_u
subroutine write_vector_in_vtu_bin(VAR_NAME, VARX, VARY, VARZ, PASS)
double precision, dimension(:), allocatable theta_u_te
double precision, dimension(dimension_vtk) vtk_x_w
integer, dimension(0:15) ijk_of_node
logical, dimension(:), allocatable global_cut_cell_at
double precision, dimension(:), allocatable noc_v_e
double precision, dimension(:), allocatable theta_ve
double precision, dimension(:), allocatable axz_v
logical, dimension(dimension_vtk) vtk_ijk
double precision, dimension(:), allocatable x
double precision, parameter zero
double precision, dimension(0:15) x_node
double precision, dimension(:), allocatable alpha_vn_c
integer, dimension(dimension_vtk) vtk_nzs
integer, dimension(:,:), allocatable connectivity
double precision, dimension(:), allocatable vol_v
integer unit_cut_cell_log
character(len=255) vtu_frame_filename
logical, dimension(:), allocatable snap