subroutine write_image_vtiCC(qunit,xO1,xO2,dxO1,dxO2,wO,nXO1,nXO2,nWO,nC1,&
nC2)
! write image data to vti
use mod_global_parameters
integer, intent(in) :: qunit,nXO1,nXO2,nWO,nC1,nC2
double precision, intent(in) :: xO1(nXO1),xO2(nxO2)
double precision, intent(in) :: dxO1(nxO1),dxO2(nxO2)
double precision, intent(in) :: wO(nXO1,nXO2,nWO)
double precision :: origin(1:3), spacing(1:3)
integer :: wholeExtent(1:6),extent(1:6)
integer :: nP1,nP2,iP1,iP2,iw
integer :: ixC1,ixC2,ixCmin1,ixCmax1,ixCmin2,ixCmax2
integer :: filenr
logical :: fileopen
character (70) :: subname,wname,vname,nameL,nameS
character (len=std_len) :: filename
integer :: mass
double precision :: logTe
character (30) :: ion
double precision :: line_center
double precision :: spatial_rsl,spectral_rsl,sigma_PSF,wslit
origin(1)=xO1(1)-0.5d0*dxO1(1)
origin(2)=xO2(1)-0.5d0*dxO2(1)
origin(3)=zero
spacing(1)=dxO1(1)
spacing(2)=dxO2(1)
spacing(3)=zero
wholeExtent=0
wholeExtent(2)=nXO1
wholeExtent(4)=nXO2
nP1=nXO1/nC1
nP2=nXO2/nC2
! get information of emission line
if (convert_type=='EIvtiCCmpi') then
call get_line_info(wavelength,ion,mass,logTe,line_center,spatial_rsl,&
spectral_rsl,sigma_PSF,wslit)
else if (convert_type=='ESvtiCCmpi') then
call get_line_info(spectrum_wl,ion,mass,logTe,line_center,spatial_rsl,&
spectral_rsl,sigma_PSF,wslit)
endif
if (mype==0) then
inquire(qunit,opened=fileopen)
if(.not.fileopen)then
! generate filename
filenr=snapshotini
if (autoconvert) filenr=snapshotnext
if (convert_type=='EIvtiCCmpi') then
write(filename,'(a,i4.4,a)') trim(filename_euv),filenr,".vti"
else if (convert_type=='SIvtiCCmpi') then
write(filename,'(a,i4.4,a)') trim(filename_sxr),filenr,".vti"
else if (convert_type=='WIvtiCCmpi') then
write(filename,'(a,i4.4,a)') trim(filename_whitelight),filenr,&
".vti"
else if (convert_type=='ESvtiCCmpi') then
write(filename,'(a,i4.4,a)') trim(filename_spectrum),filenr,".vti"
endif
open(qunit,file=filename,status='unknown',form='formatted')
endif
! generate xml header
write(qunit,'(a)')'<?xml version="1.0"?>'
write(qunit,'(a)',advance='no') '<VTKFile type="ImageData"'
write(qunit,'(a)')' version="0.1" byte_order="LittleEndian">'
write(qunit,'(a,3(1pe14.6),a,6(i10),a,3(1pe14.6),a)')&
' <ImageData Origin="',origin,'" WholeExtent="',wholeExtent,&
'" Spacing="',spacing,'">'
! file info
write(qunit,'(a)')'<FieldData>'
write(qunit,'(2a)')'<DataArray type="Float32" Name="TIME" ',&
'NumberOfTuples="1" format="ascii">'
write(qunit,*) real(global_time*time_convert_factor)
write(qunit,'(a)')'</DataArray>'
if (convert_type=='EIvtiCCmpi' .or. convert_type=='ESvtiCCmpi') then
write(qunit,'(2a)')'<DataArray type="Float32" Name="logT" ',&
'NumberOfTuples="1" format="ascii">'
write(qunit,*) real(logTe)
write(qunit,'(a)')'</DataArray>'
endif
write(qunit,'(a)')'</FieldData>'
! pixel/cell data
do iP1=1,nP1
do iP2=1,nP2
extent=0
extent(1)=(iP1-1)*nC1
extent(2)=iP1*nC1
extent(3)=(iP2-1)*nC2
extent(4)=iP2*nC2
ixCmin1=extent(1)+1
ixCmax1=extent(2)
ixCmin2=extent(3)+1
ixCmax2=extent(4)
write(qunit,'(a,6(i10),a)') '<Piece Extent="',extent,'">'
write(qunit,'(a)')'<CellData>'
do iw=1,nWO
! variable name
if (convert_type=='EIvtiCCmpi') then
if (wavelength<100) then
write(vname,'(a,i2)') "AIA",wavelength
else if (wavelength<1000) then
write(vname,'(a,i3)') "AIA",wavelength
else
write(vname,'(a,i4)') "IRIS",wavelength
endif
if (iw==2 .and. dat_resolution) vname='Doppler_velocity'
else if (convert_type=='SIvtiCCmpi') then
if (emin_sxr<10 .and. emax_sxr<10) then
write(vname,'(a,i1,a,i1,a)') "SXR",emin_sxr,"-",emax_sxr,&
"keV"
else if (emin_sxr<10 .and. emax_sxr>=10) then
write(vname,'(a,i1,a,i2,a)') "SXR",emin_sxr,"-",emax_sxr,&
"keV"
else
write(vname,'(a,i2,a,i2,a)') "SXR",emin_sxr,"-",emax_sxr,&
"keV"
endif
else if (convert_type=='WIvtiCCmpi') then
if (iw==1) write(vname,'(a)')'B'
if (iw==2) write(vname,'(a)')'pB'
else if (convert_type=='ESvtiCCmpi') then
if (spectrum_wl==1354) then
write(vname,'(a,i4)') "SG",spectrum_wl
else
write(vname,'(a,i3)') "EIS",spectrum_wl
endif
endif
write(qunit,'(a,a,a)')'<DataArray type="Float64" Name="',&
TRIM(vname),'" format="ascii">'
write(qunit,'(200(1pe14.6))') ((wO(ixC1,ixC2,iw),ixC1=ixCmin1,&
ixCmax1),ixC2=ixCmin2,ixCmax2)
write(qunit,'(a)')'</DataArray>'
enddo
write(qunit,'(a)')'</CellData>'
write(qunit,'(a)')'</Piece>'
enddo
enddo
! end
write(qunit,'(a)')'</ImageData>'
write(qunit,'(a)')'</VTKFile>'
close(qunit)
endif
end subroutine write_image_vtiCC