22 #if !defined DISABLE_VTK 75 INTEGER,
PARAMETER::
r16p = selected_real_kind(33,4931)
76 INTEGER,
PARAMETER::
r8p = selected_real_kind(15,307)
77 INTEGER,
PARAMETER::
r4p = selected_real_kind(6,37)
81 INTEGER,
PARAMETER::
i8p = selected_int_kind(18)
82 INTEGER,
PARAMETER::
i4p = selected_int_kind(9)
83 INTEGER,
PARAMETER::
i2p = selected_int_kind(4)
84 INTEGER,
PARAMETER::
i1p = selected_int_kind(2)
92 CHARACTER(10),
PARAMETER::
fr16p =
'(E41.33E4)' 93 CHARACTER(10),
PARAMETER::
fr8p =
'(E23.15E3)' 94 CHARACTER(9),
PARAMETER::
fr4p =
'(E14.6E2)' 95 CHARACTER(10),
PARAMETER::
fr_p =
'(E23.15E3)' 98 CHARACTER(5),
PARAMETER::
fi8p =
'(I21)' 99 CHARACTER(5),
PARAMETER::
fi4p =
'(I12)' 100 CHARACTER(4),
PARAMETER::
fi2p =
'(I7)' 101 CHARACTER(4),
PARAMETER::
fi1p =
'(I5)' 102 CHARACTER(5),
PARAMETER::
fi_p =
'(I12)' 124 FUNCTION getunit()
RESULT(FREE_UNIT)
134 INTEGER(I4P):: FREE_UNIT
147 IF ((n1/=5_i4p).AND.(n1/=6_i4p).AND.(n1/=9_i4p))
THEN 148 INQUIRE (unit=n1,opened=lopen,iostat=ios)
176 CHARACTER(LEN=*),
INTENT(IN):: STRING
177 CHARACTER(LEN=LEN(STRING)):: UPPER_CASE
187 SELECT CASE(ichar(string(n1:n1)))
189 upper_case(n1:n1)=char(ichar(string(n1:n1))-32)
203 FUNCTION vtk_ini(OUTPUT_FORMAT,FILENAME,TITLE,MESH_TOPOLOGY)
212 CHARACTER(*),
INTENT(IN):: OUTPUT_FORMAT
213 CHARACTER(*),
INTENT(IN):: FILENAME
214 CHARACTER(*),
INTENT(IN):: TITLE
215 CHARACTER(*),
INTENT(IN):: MESH_TOPOLOGY
256 & file = trim(filename),
257 & form =
'FORMATTED',
258 & access =
'SEQUENTIAL',
263 WRITE(unit=
unit_vtk,fmt=
'(A)',iostat=e_io)
264 &
'# vtk DataFile Version 3.0' 265 WRITE(unit=
unit_vtk,fmt=
'(A)',iostat=e_io)trim(title)
266 WRITE(unit=
unit_vtk,fmt=
'(A)',iostat=e_io)
268 WRITE(unit=
unit_vtk,fmt=
'(A)',iostat=e_io)
273 & file = trim(filename),
274 & form =
'UNFORMATTED',
275 & access =
'SEQUENTIAL',
281 WRITE(unit=
unit_vtk,iostat=e_io)
'# vtk DataFile Version 3.0'//
527 INTEGER(I4P),
INTENT(IN):: NX
528 INTEGER(I4P),
INTENT(IN):: NY
529 INTEGER(I4P),
INTENT(IN):: NZ
530 REAL(R8P),
INTENT(IN):: X0
531 REAL(R8P),
INTENT(IN):: Y0
532 REAL(R8P),
INTENT(IN):: Z0
533 REAL(R8P),
INTENT(IN):: DX
534 REAL(R8P),
INTENT(IN):: DY
535 REAL(R8P),
INTENT(IN):: DZ
537 CHARACTER(LEN=MAXLEN):: S_BUFFER
544 &
'DIMENSIONS ',nx,ny,nz
548 &
'SPACING ',dx,dy,dz
550 WRITE(s_buffer, fmt=
'(A,3'//
fi4p//
')', iostat=e_io)
551 &
'DIMENSIONS ',nx,ny,nz
554 WRITE(s_buffer, fmt=
'(A,3'//
fr8p//
')', iostat=e_io)
558 WRITE(s_buffer, fmt=
'(A,3'//
fr8p//
')', iostat=e_io)
559 &
'SPACING ',dx,dy,dz
576 INTEGER(I4P),
INTENT(IN):: NX
577 INTEGER(I4P),
INTENT(IN):: NY
578 INTEGER(I4P),
INTENT(IN):: NZ
579 REAL(R4P),
INTENT(IN):: X0
580 REAL(R4P),
INTENT(IN):: Y0
581 REAL(R4P),
INTENT(IN):: Z0
582 REAL(R4P),
INTENT(IN):: DX
583 REAL(R4P),
INTENT(IN):: DY
584 REAL(R4P),
INTENT(IN):: DZ
586 CHARACTER(LEN=MAXLEN):: S_BUFFER
593 &
'DIMENSIONS ',nx,ny,nz
597 &
'SPACING ',dx,dy,dz
599 WRITE(s_buffer, fmt=
'(A,3'//
fi4p//
')', iostat=e_io)
600 &
'DIMENSIONS ',nx,ny,nz
603 WRITE(s_buffer, fmt=
'(A,3'//
fr4p//
')', iostat=e_io)
607 WRITE(s_buffer, fmt=
'(A,3'//
fr4p//
')', iostat=e_io)
608 &
'SPACING ',dx,dy,dz
624 INTEGER(I4P),
INTENT(IN):: NX
625 INTEGER(I4P),
INTENT(IN):: NY
626 INTEGER(I4P),
INTENT(IN):: NZ
627 INTEGER(I4P),
INTENT(IN):: NN
628 REAL(R8P),
INTENT(IN):: X(1:nn)
629 REAL(R8P),
INTENT(IN):: Y(1:nn)
630 REAL(R8P),
INTENT(IN):: Z(1:nn)
632 CHARACTER(LEN=MAXLEN):: S_BUFFER
640 &
'DIMENSIONS ',nx,ny,nz
642 &
'POINTS ',nn,
' double' 644 & (x(n1),y(n1),z(n1),n1=1,nn)
646 WRITE(s_buffer, fmt=
'(A,3'//
fi4p//
')', iostat=e_io)
647 &
'DIMENSIONS ',nx,ny,nz
650 WRITE(s_buffer, fmt=
'(A,'//
fi4p//
',A)',iostat=e_io)
651 &
'POINTS ',nn,
' double' 655 & (x(n1),y(n1),z(n1),n1=1,nn)
670 INTEGER(I4P),
INTENT(IN):: NX
671 INTEGER(I4P),
INTENT(IN):: NY
672 INTEGER(I4P),
INTENT(IN):: NZ
673 INTEGER(I4P),
INTENT(IN):: NN
674 REAL(R4P),
INTENT(IN):: X(1:nn)
675 REAL(R4P),
INTENT(IN):: Y(1:nn)
676 REAL(R4P),
INTENT(IN):: Z(1:nn)
678 CHARACTER(LEN=MAXLEN):: S_BUFFER
686 &
'DIMENSIONS ',nx,ny,nz
688 &
'POINTS ',nn,
' float' 690 & (x(n1),y(n1),z(n1),n1=1,nn)
692 WRITE(s_buffer, fmt=
'(A,3'//
fi4p//
')', iostat=e_io)
693 &
'DIMENSIONS ',nx,ny,nz
696 WRITE(s_buffer, fmt=
'(A,'//
fi4p//
',A)',iostat=e_io)
697 &
'POINTS ',nn,
' float' 701 & (x(n1),y(n1),z(n1),n1=1,nn)
716 INTEGER(I4P),
INTENT(IN):: NX
717 INTEGER(I4P),
INTENT(IN):: NY
718 INTEGER(I4P),
INTENT(IN):: NZ
719 REAL(R8P),
INTENT(IN):: X(1:nx)
720 REAL(R8P),
INTENT(IN):: Y(1:ny)
721 REAL(R8P),
INTENT(IN):: Z(1:nz)
723 CHARACTER(LEN=MAXLEN):: S_BUFFER
731 &
'DIMENSIONS ',nx,ny,nz
733 &
'X_COORDINATES ',nx,
' double' 737 &
'Y_COORDINATES ',ny,
' double' 741 &
'Z_COORDINATES ',nz,
' double' 745 WRITE(s_buffer, fmt=
'(A,3'//
fi4p//
')', iostat=e_io)
746 &
'DIMENSIONS ',nx,ny,nz
749 WRITE(s_buffer, fmt=
'(A,'//
fi4p//
',A)',iostat=e_io)
750 &
'X_COORDINATES ',nx,
' double' 756 WRITE(s_buffer, fmt=
'(A,'//
fi4p//
',A)',iostat=e_io)
757 &
'Y_COORDINATES ',ny,
' double' 763 WRITE(s_buffer, fmt=
'(A,'//
fi4p//
',A)',iostat=e_io)
764 &
'Z_COORDINATES ',nz,
' double' 783 INTEGER(I4P),
INTENT(IN):: NX
784 INTEGER(I4P),
INTENT(IN):: NY
785 INTEGER(I4P),
INTENT(IN):: NZ
786 REAL(R4P),
INTENT(IN):: X(1:nx)
787 REAL(R4P),
INTENT(IN):: Y(1:ny)
788 REAL(R4P),
INTENT(IN):: Z(1:nz)
790 CHARACTER(LEN=MAXLEN):: S_BUFFER
798 &
'DIMENSIONS ',nx,ny,nz
800 &
'X_COORDINATES ',nx,
' float' 804 &
'Y_COORDINATES ',ny,
' float' 808 &
'Z_COORDINATES ',nz,
' float' 812 WRITE(s_buffer, fmt=
'(A,3'//
fi4p//
')', iostat=e_io)
813 &
'DIMENSIONS ',nx,ny,nz
816 WRITE(s_buffer, fmt=
'(A,'//
fi4p//
',A)',iostat=e_io)
817 &
'X_COORDINATES ',nx,
' float' 823 WRITE(s_buffer, fmt=
'(A,'//
fi4p//
',A)',iostat=e_io)
824 &
'Y_COORDINATES ',ny,
' float' 830 WRITE(s_buffer, fmt=
'(A,'//
fi4p//
',A)',iostat=e_io)
831 &
'Z_COORDINATES ',nz,
' float' 850 INTEGER(I4P),
INTENT(IN):: NN
851 REAL(R8P),
INTENT(IN):: X(1:nn)
852 REAL(R8P),
INTENT(IN):: Y(1:nn)
853 REAL(R8P),
INTENT(IN):: Z(1:nn)
855 CHARACTER(LEN=MAXLEN):: S_BUFFER
863 &
'POINTS ',nn,
' double' 865 & (x(n1),y(n1),z(n1),n1=1,nn)
867 WRITE(s_buffer, fmt=
'(A,'//
fi4p//
',A)',iostat=e_io)
868 &
'POINTS ',nn,
' double' 872 & (x(n1),y(n1),z(n1),n1=1,nn)
887 INTEGER(I4P),
INTENT(IN):: NN
888 REAL(R4P),
INTENT(IN):: X(1:nn)
889 REAL(R4P),
INTENT(IN):: Y(1:nn)
890 REAL(R4P),
INTENT(IN):: Z(1:nn)
892 CHARACTER(LEN=MAXLEN):: S_BUFFER
900 &
'POINTS ',nn,
' float' 902 & (x(n1),y(n1),z(n1),n1=1,nn)
904 WRITE(s_buffer, fmt=
'(A,'//
fi4p//
',A)',iostat=e_io)
905 &
'POINTS ',nn,
' float' 909 & (x(n1),y(n1),z(n1),n1=1,nn)
917 FUNCTION vtk_con(NC,CONNECT,CELL_TYPE)
RESULT(E_IO)
926 INTEGER(I4P),
INTENT(IN):: NC
927 INTEGER(I4P),
INTENT(IN):: CONNECT(:)
928 INTEGER(I4P),
INTENT(IN):: CELL_TYPE(1:nc)
930 CHARACTER(LEN=MAXLEN):: S_BUFFER
1013 ncon =
SIZE(connect,1)
1024 WRITE(s_buffer, fmt=
'(A,2'//
fi4p//
')',iostat=e_io)
1028 WRITE(unit=
unit_vtk, iostat=e_io)connect
1030 WRITE(s_buffer, fmt=
'(A,'//
fi4p//
')', iostat=e_io)
1042 FUNCTION vtk_dat(NC_NN,VAR_LOCATION)
RESULT(E_IO)
1051 INTEGER(I4P),
INTENT(IN):: NC_NN
1052 CHARACTER(*),
INTENT(IN):: VAR_LOCATION
1054 CHARACTER(LEN=MAXLEN):: S_BUFFER
1086 &
'CELL_DATA ',nc_nn
1089 &
'POINT_DATA ',nc_nn
1094 WRITE(s_buffer, fmt=
'(A,'//
fi4p//
')',iostat=e_io)
1095 &
'CELL_DATA ',nc_nn
1099 WRITE(s_buffer, fmt=
'(A,'//
fi4p//
')',iostat=e_io)
1100 &
'POINT_DATA ',nc_nn
1331 INTEGER(I4P),
INTENT(IN):: NC_NN
1332 CHARACTER(*),
INTENT(IN):: VARNAME
1333 REAL(R8P),
INTENT(IN):: VAR(1:nc_nn)
1340 WRITE(unit=
unit_vtk,fmt=
'(A)',iostat=e_io)
'SCALARS '//
1341 & trim(varname)//
' double 1' 1342 WRITE(unit=
unit_vtk,fmt=
'(A)',iostat=e_io)
1343 &
'LOOKUP_TABLE default' 1346 WRITE(unit=
unit_vtk,iostat=e_io)
'SCALARS '//trim(varname)//
1348 WRITE(unit=
unit_vtk,iostat=e_io)
'LOOKUP_TABLE default'//
1350 WRITE(unit=
unit_vtk,iostat=e_io)var
1365 INTEGER(I4P),
INTENT(IN):: NC_NN
1366 CHARACTER(*),
INTENT(IN):: VARNAME
1367 REAL(R4P),
INTENT(IN):: VAR(1:nc_nn)
1374 WRITE(unit=
unit_vtk,fmt=
'(A)',iostat=e_io)
'SCALARS '//
1375 & trim(varname)//
' float 1' 1376 WRITE(unit=
unit_vtk,fmt=
'(A)',iostat=e_io)
1377 &
'LOOKUP_TABLE default' 1380 WRITE(unit=
unit_vtk,iostat=e_io)
'SCALARS '//trim(varname)//
1382 WRITE(unit=
unit_vtk,iostat=e_io)
'LOOKUP_TABLE default'//
1384 WRITE(unit=
unit_vtk,iostat=e_io)var
1399 INTEGER(I4P),
INTENT(IN):: NC_NN
1400 CHARACTER(*),
INTENT(IN):: VARNAME
1401 INTEGER(I4P),
INTENT(IN):: VAR(1:nc_nn)
1408 WRITE(unit=
unit_vtk,fmt=
'(A)',iostat=e_io)
'SCALARS '//
1409 & trim(varname)//
' int 1' 1410 WRITE(unit=
unit_vtk,fmt=
'(A)',iostat=e_io)
1411 &
'LOOKUP_TABLE default' 1414 WRITE(unit=
unit_vtk,iostat=e_io)
'SCALARS '//trim(varname)//
1416 WRITE(unit=
unit_vtk,iostat=e_io)
'LOOKUP_TABLE default'//
1418 WRITE(unit=
unit_vtk,iostat=e_io)var
1434 CHARACTER(*),
INTENT(IN):: VEC_TYPE
1435 INTEGER(I4P),
INTENT(IN):: NC_NN
1436 CHARACTER(*),
INTENT(IN):: VARNAME
1437 REAL(R8P),
INTENT(IN):: VARX(1:nc_nn)
1438 REAL(R8P),
INTENT(IN):: VARY(1:nc_nn)
1439 REAL(R8P),
INTENT(IN):: VARZ(1:nc_nn)
1449 WRITE(unit=
unit_vtk,fmt=
'(A)', iostat=e_io)
1450 &
'VECTORS '//trim(varname)//
' double' 1452 WRITE(unit=
unit_vtk,fmt=
'(A)', iostat=e_io)
1453 &
'NORMALS '//trim(varname)//
' double' 1456 & (varx(n1),vary(n1),varz(n1),n1=1,nc_nn)
1460 WRITE(unit=
unit_vtk,iostat=e_io)
'VECTORS '//trim(varname)//
1463 WRITE(unit=
unit_vtk,iostat=e_io)
'NORMALS '//trim(varname)//
1467 & (varx(n1),vary(n1),varz(n1),n1=1,nc_nn)
1483 CHARACTER(*),
INTENT(IN):: VEC_TYPE
1484 INTEGER(I4P),
INTENT(IN):: NC_NN
1485 CHARACTER(*),
INTENT(IN):: VARNAME
1486 REAL(R4P),
INTENT(IN):: VARX(1:nc_nn)
1487 REAL(R4P),
INTENT(IN):: VARY(1:nc_nn)
1488 REAL(R4P),
INTENT(IN):: VARZ(1:nc_nn)
1498 WRITE(unit=
unit_vtk,fmt=
'(A)', iostat=e_io)
1499 &
'VECTORS '//trim(varname)//
' float' 1501 WRITE(unit=
unit_vtk,fmt=
'(A)', iostat=e_io)
1502 &
'NORMALS '//trim(varname)//
' float' 1505 & (varx(n1),vary(n1),varz(n1),n1=1,nc_nn)
1509 WRITE(unit=
unit_vtk,iostat=e_io)
'VECTORS '//trim(varname)//
1512 WRITE(unit=
unit_vtk,iostat=e_io)
'NORMALS '//trim(varname)//
1516 & (varx(n1),vary(n1),varz(n1),n1=1,nc_nn)
1532 INTEGER(I4P),
INTENT(IN):: NC_NN
1533 CHARACTER(*),
INTENT(IN):: VARNAME
1534 INTEGER(I4P),
INTENT(IN):: VARX(1:nc_nn)
1535 INTEGER(I4P),
INTENT(IN):: VARY(1:nc_nn)
1536 INTEGER(I4P),
INTENT(IN):: VARZ(1:nc_nn)
1544 WRITE(unit=
unit_vtk,fmt=
'(A)', iostat=e_io)
1545 &
'VECTORS '//trim(varname)//
' int' 1547 & (varx(n1),vary(n1),varz(n1),n1=1,nc_nn)
1549 WRITE(unit=
unit_vtk,iostat=e_io)
'VECTORS '//trim(varname)//
1552 & (varx(n1),vary(n1),varz(n1),n1=1,nc_nn)
1568 INTEGER(I4P),
INTENT(IN):: NC_NN
1569 INTEGER(I4P),
INTENT(IN):: DIMM
1570 CHARACTER(*),
INTENT(IN):: VARNAME
1571 REAL(R8P),
INTENT(IN):: TEXTCOO(1:nc_nn,1:dimm)
1573 CHARACTER(LEN=MAXLEN):: S_BUFFER
1574 CHARACTER(LEN=MAXLEN):: S_BUFFER2
1575 INTEGER(I8P):: N1,N2
1581 s_buffer2 =
'(A,1X,'//
fi4p//
'1X,A)' 1582 WRITE(unit=
unit_vtk,fmt=trim(s_buffer2), iostat=e_io)
1583 &
'TEXTURE_COORDINATES '//trim(varname),dimm,
' double' 1584 WRITE(s_buffer, fmt=
'(I1)', iostat=e_io)
1586 s_buffer=
'('//trim(s_buffer)//
fr4p//
')' 1587 WRITE(unit=
unit_vtk,fmt=trim(s_buffer), iostat=e_io)
1588 & ((textcoo(n1,n2),n2=1,dimm),n1=1,nc_nn)
1590 s_buffer2 =
'(A,1X,'//
fi4p//
'1X,A)' 1591 WRITE(s_buffer, fmt=trim(s_buffer), iostat=e_io)
1592 &
'TEXTURE_COORDINATES '//trim(varname),dimm,
' double' 1596 & ((textcoo(n1,n2),n2=1,dimm),n1=1,nc_nn)
1613 INTEGER(I4P),
INTENT(IN):: NC_NN
1614 INTEGER(I4P),
INTENT(IN):: DIMM
1615 CHARACTER(*),
INTENT(IN):: VARNAME
1616 REAL(R4P),
INTENT(IN):: TEXTCOO(1:nc_nn,1:dimm)
1618 CHARACTER(LEN=MAXLEN):: S_BUFFER
1619 CHARACTER(LEN=MAXLEN):: S_BUFFER2
1620 INTEGER(I8P):: N1,N2
1626 s_buffer2 =
'(A,1X,'//
fi4p//
'1X,A)' 1627 WRITE(unit=
unit_vtk,fmt=trim(s_buffer2), iostat=e_io)
1628 &
'TEXTURE_COORDINATES '//trim(varname),dimm,
' float' 1629 WRITE(s_buffer, fmt=
'(I1)', iostat=e_io)
1631 s_buffer=
'('//trim(s_buffer)//
fr4p//
')' 1632 WRITE(unit=
unit_vtk,fmt=trim(s_buffer), iostat=e_io)
1633 & ((textcoo(n1,n2),n2=1,dimm),n1=1,nc_nn)
1635 s_buffer2 =
'(A,1X,'//
fi4p//
'1X,A)' 1636 WRITE(s_buffer, fmt=trim(s_buffer2), iostat=e_io)
1637 &
'TEXTURE_COORDINATES '//trim(varname),dimm,
' float' 1641 & ((textcoo(n1,n2),n2=1,dimm),n1=1,nc_nn)
1650 FUNCTION vtk_end()
RESULT(E_IO)
character(5), parameter, public fi8p
integer(i4p) function vtk_var_vect_r4(VEC_TYPE, NC_NN, VARNAME, VARX, VARY, VARZ)
integer(i4p) function vtk_var_scal_r8(NC_NN, VARNAME, VAR)
character(len=len(string)) function upper_case(STRING)
integer, parameter, public i_p
character(5), parameter, public fi_p
integer(i4p) function vtk_geo_strp_r8(NX, NY, NZ, X0, Y0, Z0, DX, DY, DZ)
integer(i4p) function vtk_geo_rect_r4(NX, NY, NZ, X, Y, Z)
integer(i4p) function, public vtk_dat(NC_NN, VAR_LOCATION)
integer, parameter, public i2p
Y.AUDOUIN 30/06/2013 V6P3
integer, parameter, public r_p
integer(i4p) function vtk_var_text_r8(NC_NN, DIMM, VARNAME, TEXTCOO)
integer(i4p) function vtk_var_text_r4(NC_NN, DIMM, VARNAME, TEXTCOO)
integer(i4p) function vtk_geo_strp_r4(NX, NY, NZ, X0, Y0, Z0, DX, DY, DZ)
integer(i4p) function vtk_geo_strg_r4(NX, NY, NZ, NN, X, Y, Z)
integer(i4p) function vtk_var_vect_r8(VEC_TYPE, NC_NN, VARNAME, VARX, VARY, VARZ)
character(10), parameter, public fr_p
integer(i4p) function vtk_geo_unst_r8(NN, X, Y, Z)
integer(i4p) function getunit()
character(4), parameter, public fi2p
character(5), parameter, public fi4p
integer(i4p) function, public vtk_end()
integer(i4p), parameter maxlen
integer, parameter, public r8p
integer, parameter, public r4p
integer(i4p) function vtk_geo_unst_r4(NN, X, Y, Z)
integer(i4p) function vtk_var_scal_r4(NC_NN, VARNAME, VAR)
character(10), parameter, public fr16p
integer(i4p), parameter f_out_ascii
integer(i4p) function, public vtk_con(NC, CONNECT, CELL_TYPE)
integer, parameter, public i8p
integer(i4p) function, public vtk_ini(OUTPUT_FORMAT, FILENAME, TITLE, MESH_TOPOLOGY)
integer, parameter, public i1p
character(10), parameter, public fr8p
integer, parameter, public i4p
character(4), parameter, public fi1p
integer(i4p), parameter f_out_binary
integer(i4p) function vtk_var_vect_i4(NC_NN, VARNAME, VARX, VARY, VARZ)
integer(i4p) function vtk_var_scal_i4(NC_NN, VARNAME, VAR)
character(len=maxlen) topology
character(1), parameter end_rec
character(9), parameter, public fr4p
integer, parameter, public r16p
integer(i4p) function vtk_geo_rect_r8(NX, NY, NZ, X, Y, Z)
integer(i4p) function vtk_geo_strg_r8(NX, NY, NZ, NN, X, Y, Z)