diff --git a/src/diag_headers/diagnose_fields.h b/src/diag_headers/diagnose_fields.h deleted file mode 100644 index a68cb8f..0000000 --- a/src/diag_headers/diagnose_fields.h +++ /dev/null @@ -1,157 +0,0 @@ -SUBROUTINE diagnose_fields(kstep) - USE basic - USE grid - USE diagnostics_par - USE futils - USE array - USE model - USE initial_par - USE fields - USE time_integration - USE utility - USE prec_const - USE collision, ONLY: coll_outputinputs - USE geometry - USE processing - IMPLICIT NONE - INTEGER, INTENT(in) :: kstep - INTEGER, parameter :: BUFSIZE = 2 - INTEGER :: rank = 0 - INTEGER :: dims(1) = (/0/) - !____________________________________________________________________________! - IF ((kstep .EQ. 0)) THEN - ! fields result file (electro. pot., Ni00 moment, fluid moments etc.) - IF (nsave_3d .GT. 0) THEN - CALL init_outfile(comm_kyz,fldfile0,fldfile,fidfld) - CALL creatd(fidfld, rank, dims, "/data/time", "Time t*c_s/R") - CALL creatd(fidfld, rank, dims, "/data/cstep", "iteration number") - - IF (write_phi) CALL creatg(fidfld, "/data/phi", "phi") - - IF (write_Na00) THEN - IF(KIN_E)& - CALL creatg(fidfld, "/data/Ne00", "Ne00") - CALL creatg(fidfld, "/data/Ni00", "Ni00") - ENDIF - - IF (write_dens) THEN - IF(KIN_E)& - CALL creatg(fidfld, "/data/dens_e", "dens_e") - CALL creatg(fidfld, "/data/dens_i", "dens_i") - ENDIF - - IF (write_fvel) THEN - IF(KIN_E) THEN - CALL creatg(fidfld, "/data/upar_e", "upar_e") - CALL creatg(fidfld, "/data/uper_e", "uper_e") - ENDIF - CALL creatg(fidfld, "/data/upar_i", "upar_i") - CALL creatg(fidfld, "/data/uper_i", "uper_i") - ENDIF - - IF (write_temp) THEN - IF(KIN_E) THEN - CALL creatg(fidfld, "/data/Tper_e", "Tper_e") - CALL creatg(fidfld, "/data/Tpar_e", "Tpar_e") - CALL creatg(fidfld, "/data/temp_e", "temp_e") - ENDIF - CALL creatg(fidfld, "/data/Tper_i", "Tper_i") - CALL creatg(fidfld, "/data/Tpar_i", "Tpar_i") - CALL creatg(fidfld, "/data/temp_i", "temp_i") - ENDIF - - IF (cstep==0) THEN - iframe3d=0 - ENDIF - CALL attach(fidfld,"/data/" , "frames", iframe3d) - END IF - ENDIF - - !_____________________________________________________________________________ - ! 2. Periodic diagnostics - ! - IF (kstep .GE. 0) THEN - - ! 2.2 3d profiles - IF (nsave_3d .GT. 0) THEN - IF (MOD(cstep, nsave_3d) == 0) THEN - - CALL append(fidfld, "/data/time", time,ionode=0) - CALL append(fidfld, "/data/cstep", real(cstep,dp),ionode=0) - CALL getatt(fidfld, "/data/", "frames",iframe3d) - iframe3d=iframe3d+1 - CALL attach(fidfld,"/data/" , "frames", iframe3d) - - IF (write_phi) CALL write_field3d_kykxz(phi (ikys:ikye,ikxs:ikxe,izs:ize), 'phi') - - IF (write_Na00) THEN - IF(KIN_E)THEN - IF (ips_e .EQ. 1) THEN - Ne00(ikys:ikye,ikxs:ikxe,izs:ize) = moments_e(ips_e,1,ikys:ikye,ikxs:ikxe,izs:ize,updatetlevel) - ENDIF - CALL write_field3d_kykxz(Ne00(ikys:ikye,ikxs:ikxe,izs:ize), 'Ne00') - ENDIF - IF (ips_i .EQ. 1) THEN - Ni00(ikys:ikye,ikxs:ikxe,izs:ize) = moments_i(ips_e,1,ikys:ikye,ikxs:ikxe,izs:ize,updatetlevel) - ENDIF - CALL write_field3d_kykxz(Ni00(ikys:ikye,ikxs:ikxe,izs:ize), 'Ni00') - ENDIF - - !! Fuid moments - IF (write_dens .OR. write_fvel .OR. write_temp) & - CALL compute_fluid_moments - - IF (write_dens) THEN - IF(KIN_E)& - CALL write_field3d_kykxz(dens_e(ikys:ikye,ikxs:ikxe,izs:ize), 'dens_e') - CALL write_field3d_kykxz(dens_i(ikys:ikye,ikxs:ikxe,izs:ize), 'dens_i') - ENDIF - - IF (write_fvel) THEN - IF(KIN_E)& - CALL write_field3d_kykxz(upar_e(ikys:ikye,ikxs:ikxe,izs:ize), 'upar_e') - CALL write_field3d_kykxz(upar_i(ikys:ikye,ikxs:ikxe,izs:ize), 'upar_i') - IF(KIN_E)& - CALL write_field3d_kykxz(uper_e(ikys:ikye,ikxs:ikxe,izs:ize), 'uper_e') - CALL write_field3d_kykxz(uper_i(ikys:ikye,ikxs:ikxe,izs:ize), 'uper_i') - ENDIF - - IF (write_temp) THEN - IF(KIN_E)& - CALL write_field3d_kykxz(Tpar_e(ikys:ikye,ikxs:ikxe,izs:ize), 'Tpar_e') - CALL write_field3d_kykxz(Tpar_i(ikys:ikye,ikxs:ikxe,izs:ize), 'Tpar_i') - IF(KIN_E)& - CALL write_field3d_kykxz(Tper_e(ikys:ikye,ikxs:ikxe,izs:ize), 'Tper_e') - CALL write_field3d_kykxz(Tper_i(ikys:ikye,ikxs:ikxe,izs:ize), 'Tper_i') - IF(KIN_E)& - CALL write_field3d_kykxz(temp_e(ikys:ikye,ikxs:ikxe,izs:ize), 'temp_e') - CALL write_field3d_kykxz(temp_i(ikys:ikye,ikxs:ikxe,izs:ize), 'temp_i') - ENDIF - - END IF - END IF - !_____________________________________________________________________________ - ! 3. Final diagnostics - ELSEIF (kstep .EQ. -1) THEN - ! Close diagnostic files - CALL mpi_barrier(MPI_COMM_WORLD, ierr) - CALL closef(fidfld) - - END IF - - CONTAINS - SUBROUTINE write_field3d_kykxz(field, text) - IMPLICIT NONE - COMPLEX(dp), DIMENSION(ikys:ikye,ikxs:ikxe, izs:ize), INTENT(IN) :: field - CHARACTER(*), INTENT(IN) :: text - CHARACTER(LEN=50) :: dset_name - WRITE(dset_name, "(A, '/', A, '/', i6.6)") "/data", TRIM(text), iframe3d - IF (num_procs .EQ. 1) THEN ! no data distribution - CALL putarr(fidfld, dset_name, field(ikys:ikye,ikxs:ikxe, izs:ize), ionode=0) - ELSE - CALL putarrnd(fidfld, dset_name, field(ikys:ikye,ikxs:ikxe, izs:ize), (/1, 3/)) - ENDIF - CALL attach(fidfld, dset_name, "time", time) - END SUBROUTINE write_field3d_kykxz - -END SUBROUTINE diagnose_fields diff --git a/src/diag_headers/diagnose_full.h b/src/diag_headers/diagnose_full.h deleted file mode 100644 index 091ff4b..0000000 --- a/src/diag_headers/diagnose_full.h +++ /dev/null @@ -1,496 +0,0 @@ -SUBROUTINE diagnose_full(kstep) -USE basic -USE grid -USE diagnostics_par -USE futils, ONLY: creatf, creatg, creatd, closef, putarr, putfile, attach, openf, putarrnd -USE array -USE model -USE initial_par -USE fields -USE time_integration -USE parallel -USE prec_const -USE collision, ONLY: coll_outputinputs -USE geometry -IMPLICIT NONE - -INTEGER, INTENT(in) :: kstep -INTEGER, parameter :: BUFSIZE = 2 -INTEGER :: rank = 0 -INTEGER :: dims(1) = (/0/) -INTEGER :: cp_counter = 0 -CHARACTER(len=256) :: str,test_ -!____________________________________________________________________________ -! 1. Initial diagnostics - -IF ((kstep .EQ. 0)) THEN - CALL init_outfile(comm0, resfile0,resfile,fidres) - - ! Profiler time measurement - CALL creatg(fidres, "/profiler", "performance analysis") - CALL creatd(fidres, 0, dims, "/profiler/Tc_rhs", "cumulative rhs computation time") - CALL creatd(fidres, 0, dims, "/profiler/Tc_adv_field", "cumulative adv. fields computation time") - CALL creatd(fidres, 0, dims, "/profiler/Tc_clos", "cumulative closure computation time") - CALL creatd(fidres, 0, dims, "/profiler/Tc_ghost", "cumulative communication time") - CALL creatd(fidres, 0, dims, "/profiler/Tc_coll", "cumulative collision computation time") - CALL creatd(fidres, 0, dims, "/profiler/Tc_poisson", "cumulative poisson computation time") - CALL creatd(fidres, 0, dims, "/profiler/Tc_Sapj", "cumulative Sapj computation time") - CALL creatd(fidres, 0, dims, "/profiler/Tc_checkfield", "cumulative checkfield computation time") - CALL creatd(fidres, 0, dims, "/profiler/Tc_diag", "cumulative sym computation time") - CALL creatd(fidres, 0, dims, "/profiler/Tc_process", "cumulative process computation time") - CALL creatd(fidres, 0, dims, "/profiler/Tc_step", "cumulative total step computation time") - CALL creatd(fidres, 0, dims, "/profiler/time", "current simulation time") - - ! Grid info - CALL creatg(fidres, "/data/grid", "Grid data") - CALL putarr(fidres, "/data/grid/coordkx", kxarray_full, "kx*rho_s0", ionode=0) - CALL putarr(fidres, "/data/grid/coordky", kyarray_full, "ky*rho_s0", ionode=0) - CALL putarr(fidres, "/data/grid/coordz", zarray_full, "z/R", ionode=0) - CALL putarr(fidres, "/data/grid/coordp_e" , parray_e_full, "p_e", ionode=0) - CALL putarr(fidres, "/data/grid/coordj_e" , jarray_e_full, "j_e", ionode=0) - CALL putarr(fidres, "/data/grid/coordp_i" , parray_i_full, "p_i", ionode=0) - CALL putarr(fidres, "/data/grid/coordj_i" , jarray_i_full, "j_i", ionode=0) - - ! Metric info - CALL creatg(fidres, "/data/metric", "Metric data") - CALL putarrnd(fidres, "/data/metric/gxx", gxx(izs:ize,0:1), (/1, 1, 1/)) - CALL putarrnd(fidres, "/data/metric/gxy", gxy(izs:ize,0:1), (/1, 1, 1/)) - CALL putarrnd(fidres, "/data/metric/gyy", gyy(izs:ize,0:1), (/1, 1, 1/)) - CALL putarrnd(fidres, "/data/metric/gyz", gyz(izs:ize,0:1), (/1, 1, 1/)) - CALL putarrnd(fidres, "/data/metric/gzz", gzz(izs:ize,0:1), (/1, 1, 1/)) - CALL putarrnd(fidres, "/data/metric/hatR", hatR(izs:ize,0:1), (/1, 1, 1/)) - CALL putarrnd(fidres, "/data/metric/hatZ", hatZ(izs:ize,0:1), (/1, 1, 1/)) - CALL putarrnd(fidres, "/data/metric/hatB", hatB(izs:ize,0:1), (/1, 1, 1/)) - CALL putarrnd(fidres, "/data/metric/gradxB", gradxB(izs:ize,0:1), (/1, 1, 1/)) - CALL putarrnd(fidres, "/data/metric/gradyB", gradyB(izs:ize,0:1), (/1, 1, 1/)) - CALL putarrnd(fidres, "/data/metric/gradzB", gradzB(izs:ize,0:1), (/1, 1, 1/)) - CALL putarrnd(fidres, "/data/metric/Jacobian", Jacobian(izs:ize,0:1), (/1, 1, 1/)) - CALL putarrnd(fidres, "/data/metric/gradz_coeff", gradz_coeff(izs:ize,0:1), (/1, 1, 1/)) - CALL putarrnd(fidres, "/data/metric/Ckxky", Ckxky(ikys:ikye,ikxs:ikxe,izs:ize,0:1), (/1, 1, 3/)) - CALL putarrnd(fidres, "/data/metric/kernel_i", kernel_i(ijs_i:ije_i,ikys:ikye,ikxs:ikxe,izs:ize,0:1), (/ 1, 2, 4/)) - - ! var0d group (gyro transport) - IF (nsave_0d .GT. 0) THEN - CALL creatg(fidres, "/data/var0d", "0d profiles") - CALL creatd(fidres, rank, dims, "/data/var0d/time", "Time t*c_s/R") - CALL creatd(fidres, rank, dims, "/data/var0d/cstep", "iteration number") - - IF (write_gamma) THEN - CALL creatd(fidres, rank, dims, "/data/var0d/gflux_ri", "Radial gyro ion transport") - CALL creatd(fidres, rank, dims, "/data/var0d/pflux_ri", "Radial part ion transport") - ENDIF - IF (write_hf) THEN - CALL creatd(fidres, rank, dims, "/data/var0d/hflux_x", "Radial part ion heat flux") - ENDIF - IF (cstep==0) THEN - iframe0d=0 - ENDIF - CALL attach(fidres,"/data/var0d/" , "frames", iframe0d) - END IF - - - ! var2d group (??) - IF (nsave_2d .GT. 0) THEN - CALL creatg(fidres, "/data/var2d", "2d profiles") - CALL creatd(fidres, rank, dims, "/data/var2d/time", "Time t*c_s/R") - CALL creatd(fidres, rank, dims, "/data/var2d/cstep", "iteration number") - IF (cstep==0) THEN - iframe2d=0 - ENDIF - CALL attach(fidres,"/data/var2d/" , "frames", iframe2d) - END IF - - ! var3d group (electro. pot., Ni00 moment) - IF (nsave_3d .GT. 0) THEN - CALL creatg(fidres, "/data/var3d", "3d profiles") - CALL creatd(fidres, rank, dims, "/data/var3d/time", "Time t*c_s/R") - CALL creatd(fidres, rank, dims, "/data/var3d/cstep", "iteration number") - - IF (write_phi) CALL creatg(fidres, "/data/var3d/phi", "phi") - IF (write_phi) THEN - CALL creatg(fidres, "/data/var3d/phi_gatherv", "phi_gatherv") - ENDIF - - IF (write_Na00) THEN - IF(KIN_E)& - CALL creatg(fidres, "/data/var3d/Ne00", "Ne00") - CALL creatg(fidres, "/data/var3d/Ni00", "Ni00") - CALL creatg(fidres, "/data/var3d/Ni00_gatherv", "Ni00_gatherv") - IF(KIN_E)& - CALL creatg(fidres, "/data/var3d/Nepjz", "Nepjz") - CALL creatg(fidres, "/data/var3d/Nipjz", "Nipjz") - CALL creatg(fidres, "/data/var3d/Nipjz_full", "Nipjz") - ENDIF - - IF (write_dens) THEN - IF(KIN_E)& - CALL creatg(fidres, "/data/var3d/dens_e", "dens_e") - CALL creatg(fidres, "/data/var3d/dens_i", "dens_i") - ENDIF - - IF (write_fvel) THEN - IF(KIN_E) THEN - CALL creatg(fidres, "/data/var3d/upar_e", "upar_e") - CALL creatg(fidres, "/data/var3d/uper_e", "uper_e") - ENDIF - CALL creatg(fidres, "/data/var3d/upar_i", "upar_i") - CALL creatg(fidres, "/data/var3d/uper_i", "uper_i") - ENDIF - - IF (write_temp) THEN - IF(KIN_E) THEN - CALL creatg(fidres, "/data/var3d/Tper_e", "Tper_e") - CALL creatg(fidres, "/data/var3d/Tpar_e", "Tpar_e") - CALL creatg(fidres, "/data/var3d/temp_e", "temp_e") - ENDIF - CALL creatg(fidres, "/data/var3d/Tper_i", "Tper_i") - CALL creatg(fidres, "/data/var3d/Tpar_i", "Tpar_i") - CALL creatg(fidres, "/data/var3d/temp_i", "temp_i") - ENDIF - - IF (cstep==0) THEN - iframe3d=0 - ENDIF - CALL attach(fidres,"/data/var3d/" , "frames", iframe3d) - END IF - - ! var5d group (moments) - IF (nsave_5d .GT. 0) THEN - CALL creatg(fidres, "/data/var5d", "5d profiles") - CALL creatd(fidres, rank, dims, "/data/var5d/time", "Time t*c_s/R") - CALL creatd(fidres, rank, dims, "/data/var5d/cstep", "iteration number") - - IF (write_Napj) THEN - IF(KIN_E)& - CALL creatg(fidres, "/data/var5d/moments_e", "moments_e") - CALL creatg(fidres, "/data/var5d/moments_i", "moments_i") - ENDIF - - IF (write_Sapj) THEN - IF(KIN_E)& - CALL creatg(fidres, "/data/var5d/moments_e", "Sipj") - CALL creatg(fidres, "/data/var5d/moments_i", "Sepj") - ENDIF - - IF (cstep==0) THEN - iframe5d=0 - END IF - CALL attach(fidres,"/data/var5d/" , "frames", iframe5d) - END IF -ENDIF - -!_____________________________________________________________________________ -! 2. Periodic diagnostics -! -IF (kstep .GE. 0) THEN - - ! 2.1 0d history arrays - IF (nsave_0d .GT. 0) THEN - IF ( MOD(cstep, nsave_0d) == 0 ) THEN - CALL diagnose_0d - END IF - END IF - - ! 2.2 1d profiles - ! empty in our case - - ! 2.3 2d profiles - ! empty in our case - - - ! 2.3 2d profiles - IF (nsave_3d .GT. 0) THEN - IF (MOD(cstep, nsave_3d) == 0) THEN - CALL diagnose_3d - END IF - END IF - - ! 2.4 3d profiles - IF (nsave_5d .GT. 0 .AND. cstep .GT. 0) THEN - IF (MOD(cstep, nsave_5d) == 0) THEN - CALL diagnose_5d - END IF - END IF - -!_____________________________________________________________________________ -! 3. Final diagnostics - -ELSEIF (kstep .EQ. -1) THEN - CALL attach(fidres, "/data/input","cpu_time",finish-start) - - ! make a checkpoint at last timestep if not crashed - IF(.NOT. crashed) THEN - IF(my_id .EQ. 0) write(*,*) 'Saving last state' - IF (nsave_5d .GT. 0) & - CALL diagnose_5d - ENDIF - - ! Close all diagnostic files - CALL mpi_barrier(MPI_COMM_WORLD, ierr) - CALL closef(fidres) - -END IF - -END SUBROUTINE diagnose_full - -!!-------------- Auxiliary routines -----------------!! -SUBROUTINE diagnose_0d - - USE basic - USE futils, ONLY: append, attach, getatt - USE diagnostics_par - USE prec_const - USE processing - USE model, ONLY: KIN_E - - IMPLICIT NONE - ! Time measurement data - CALL append(fidres, "/profiler/Tc_rhs", tc_rhs,ionode=0) - CALL append(fidres, "/profiler/Tc_adv_field", tc_adv_field,ionode=0) - CALL append(fidres, "/profiler/Tc_clos", tc_clos,ionode=0) - CALL append(fidres, "/profiler/Tc_ghost", tc_ghost,ionode=0) - CALL append(fidres, "/profiler/Tc_coll", tc_coll,ionode=0) - CALL append(fidres, "/profiler/Tc_poisson", tc_poisson,ionode=0) - CALL append(fidres, "/profiler/Tc_Sapj", tc_Sapj,ionode=0) - CALL append(fidres, "/profiler/Tc_checkfield",tc_checkfield,ionode=0) - CALL append(fidres, "/profiler/Tc_diag", tc_diag,ionode=0) - CALL append(fidres, "/profiler/Tc_process", tc_process,ionode=0) - CALL append(fidres, "/profiler/Tc_step", tc_step,ionode=0) - CALL append(fidres, "/profiler/time", time,ionode=0) - ! Processing data - CALL append(fidres, "/data/var0d/time", time,ionode=0) - CALL append(fidres, "/data/var0d/cstep", real(cstep,dp),ionode=0) - CALL getatt(fidres, "/data/var0d/", "frames",iframe2d) - iframe0d=iframe0d+1 - CALL attach(fidres,"/data/var0d/" , "frames", iframe0d) - ! Ion transport data - IF (write_gamma) THEN - CALL compute_radial_ion_transport - CALL append(fidres, "/data/var0d/gflux_ri",gflux_ri,ionode=0) - CALL append(fidres, "/data/var0d/pflux_ri",pflux_ri,ionode=0) - ENDIF - IF (write_hf) THEN - CALL compute_radial_heatflux - CALL append(fidres, "/data/var0d/hflux_x",hflux_x,ionode=0) - ENDIF -END SUBROUTINE diagnose_0d - -SUBROUTINE diagnose_3d - - USE basic - USE futils, ONLY: append, getatt, attach, putarrnd, putarr - USE fields - USE array - USE grid, ONLY: ikxs,ikxe, ikys,ikye, Nkx, Nky, local_nkx, ikx, iky, ips_e, ips_i - USE time_integration - USE diagnostics_par - USE prec_const - USE processing - USE parallel, ONLY : gather_xyz - USE model, ONLY: KIN_E - - IMPLICIT NONE - - INTEGER :: i_, root, world_rank, world_size - CHARACTER(256) :: dset_name - CALL append(fidres, "/data/var3d/time", time,ionode=0) - CALL append(fidres, "/data/var3d/cstep", real(cstep,dp),ionode=0) - CALL getatt(fidres, "/data/var3d/", "frames",iframe3d) - iframe3d=iframe3d+1 - CALL attach(fidres,"/data/var3d/" , "frames", iframe3d) - - IF (write_phi) CALL write_field3d_kykxz(phi (ikys:ikye,ikxs:ikxe,izs:ize), 'phi') - IF (write_phi) THEN - CALL gather_xyz(phi(ikys:ikye,1:Nkx,izs:ize),phi_full(1:Nky,1:Nkx,1:Nz)) - WRITE(dset_name, "(A, '/', i6.6)") "/data/var3d/phi_gatherv", iframe3d - CALL putarr(fidres, dset_name, phi_full(1:Nky,1:Nkx,1:Nz), ionode=0) - CALL attach(fidres, dset_name, "time", time) - ENDIF - - IF (write_Na00) THEN - IF(KIN_E)THEN - IF (ips_e .EQ. 1) THEN - Ne00(ikys:ikye,ikxs:ikxe,izs:ize) = moments_e(ips_e,1,ikys:ikye,ikxs:ikxe,izs:ize,updatetlevel) - ENDIF - CALL write_field3d_kykxz(Ne00(ikys:ikye,ikxs:ikxe,izs:ize), 'Ne00') - ENDIF - IF (ips_i .EQ. 1) THEN - Ni00(ikys:ikye,ikxs:ikxe,izs:ize) = moments_i(ips_e,1,ikys:ikye,ikxs:ikxe,izs:ize,updatetlevel) - ENDIF - CALL write_field3d_kykxz(Ni00(ikys:ikye,ikxs:ikxe,izs:ize), 'Ni00') - - WRITE(dset_name, "(A, '/', i6.6)") "/data/var3d/Ni00_gatherv", iframe3d - CALL gather_xyz(Ni00(ikys:ikye,1:Nkx,izs:ize),Ni00_full(1:Nky,1:Nkx,1:Nz)) - CALL putarr(fidres, dset_name, Ni00_full(1:Nky,1:Nkx,1:Nz), ionode=0) - CALL attach(fidres, dset_name, "time", time) - - CALL compute_Napjz_spectrum - IF(KIN_E) & - CALL write_field3d_pjz_e(Nepjz(ips_e:ipe_e,ijs_e:ije_e,izs:ize), 'Nepjz') - CALL write_field3d_pjz_i(Nipjz(ips_i:ipe_i,ijs_i:ije_i,izs:ize), 'Nipjz') - ENDIF - - !! Fuid moments - IF (write_dens .OR. write_fvel .OR. write_temp) & - CALL compute_fluid_moments - - IF (write_dens) THEN - IF(KIN_E)& - CALL write_field3d_kykxz(dens_e(ikys:ikye,ikxs:ikxe,izs:ize), 'dens_e') - CALL write_field3d_kykxz(dens_i(ikys:ikye,ikxs:ikxe,izs:ize), 'dens_i') - ENDIF - - IF (write_fvel) THEN - IF(KIN_E)& - CALL write_field3d_kykxz(upar_e(ikys:ikye,ikxs:ikxe,izs:ize), 'upar_e') - CALL write_field3d_kykxz(upar_i(ikys:ikye,ikxs:ikxe,izs:ize), 'upar_i') - IF(KIN_E)& - CALL write_field3d_kykxz(uper_e(ikys:ikye,ikxs:ikxe,izs:ize), 'uper_e') - CALL write_field3d_kykxz(uper_i(ikys:ikye,ikxs:ikxe,izs:ize), 'uper_i') - ENDIF - - IF (write_temp) THEN - IF(KIN_E)& - CALL write_field3d_kykxz(Tpar_e(ikys:ikye,ikxs:ikxe,izs:ize), 'Tpar_e') - CALL write_field3d_kykxz(Tpar_i(ikys:ikye,ikxs:ikxe,izs:ize), 'Tpar_i') - IF(KIN_E)& - CALL write_field3d_kykxz(Tper_e(ikys:ikye,ikxs:ikxe,izs:ize), 'Tper_e') - CALL write_field3d_kykxz(Tper_i(ikys:ikye,ikxs:ikxe,izs:ize), 'Tper_i') - IF(KIN_E)& - CALL write_field3d_kykxz(temp_e(ikys:ikye,ikxs:ikxe,izs:ize), 'temp_e') - CALL write_field3d_kykxz(temp_i(ikys:ikye,ikxs:ikxe,izs:ize), 'temp_i') - ENDIF - - CONTAINS - - SUBROUTINE write_field3d_kykxz(field, text) - IMPLICIT NONE - COMPLEX(dp), DIMENSION(ikys:ikye,ikxs:ikxe, izs:ize), INTENT(IN) :: field - CHARACTER(*), INTENT(IN) :: text - CHARACTER(256) :: dset_name - WRITE(dset_name, "(A, '/', A, '/', i6.6)") "/data/var3d", TRIM(text), iframe3d - IF (num_procs .EQ. 1) THEN ! no data distribution - CALL putarr(fidres, dset_name, field(ikys:ikye,ikxs:ikxe, izs:ize), ionode=0) - ELSE - CALL putarrnd(fidres, dset_name, field(ikys:ikye,ikxs:ikxe, izs:ize), (/1, 1, 3/)) - ENDIF - CALL attach(fidres, dset_name, "time", time) - END SUBROUTINE write_field3d_kykxz - - SUBROUTINE write_field3d_pjz_i(field, text) - IMPLICIT NONE - REAL(dp), DIMENSION(ips_i:ipe_i,ijs_i:ije_i,izs:ize), INTENT(IN) :: field - CHARACTER(*), INTENT(IN) :: text - CHARACTER(LEN=50) :: dset_name - WRITE(dset_name, "(A, '/', A, '/', i6.6)") "/data/var3d", TRIM(text), iframe3d - IF (num_procs .EQ. 1) THEN ! no data distribution - CALL putarr(fidres, dset_name, field(ips_i:ipe_i,ijs_i:ije_i,izs:ize), ionode=0) - ELSE - CALL putarrnd(fidres, dset_name, field(ips_i:ipe_i,ijs_i:ije_i,izs:ize), (/1, 0, 3/)) - ENDIF - CALL attach(fidres, dset_name, "time", time) - END SUBROUTINE write_field3d_pjz_i - - SUBROUTINE write_field3d_pjz_e(field, text) - IMPLICIT NONE - REAL(dp), DIMENSION(ips_e:ipe_e,ijs_e:ije_e,izs:ize), INTENT(IN) :: field - CHARACTER(*), INTENT(IN) :: text - CHARACTER(LEN=50) :: dset_name - WRITE(dset_name, "(A, '/', A, '/', i6.6)") "/data/var3d", TRIM(text), iframe3d - IF (num_procs .EQ. 1) THEN ! no data distribution - CALL putarr(fidres, dset_name, field(ips_e:ipe_e,ijs_e:ije_e,izs:ize), ionode=0) - ELSE - CALL putarrnd(fidres, dset_name, field(ips_e:ipe_e,ijs_e:ije_e,izs:ize), (/1, 0, 3/)) - ENDIF - CALL attach(fidres, dset_name, "time", time) - END SUBROUTINE write_field3d_pjz_e - -END SUBROUTINE diagnose_3d - -SUBROUTINE diagnose_5d - - USE basic - USE futils, ONLY: append, getatt, attach, putarrnd - USE fields - USE array!, ONLY: Sepj, Sipj - USE grid, ONLY: ips_e,ipe_e, ips_i, ipe_i, & - ijs_e,ije_e, ijs_i, ije_i, & - ikxs,ikxe,ikys,ikye,izs,ize - USE time_integration - USE diagnostics_par - USE prec_const - USE model, ONLY: KIN_E - IMPLICIT NONE - - CALL append(fidres, "/data/var5d/time", time,ionode=0) - CALL append(fidres, "/data/var5d/cstep", real(cstep,dp),ionode=0) - CALL getatt(fidres, "/data/var5d/", "frames",iframe5d) - iframe5d=iframe5d+1 - CALL attach(fidres,"/data/var5d/" , "frames", iframe5d) - - IF (write_Napj) THEN - IF(KIN_E)& - CALL write_field5d_e(moments_e(ips_e:ipe_e,ijs_e:ije_e,ikys:ikye,ikxs:ikxe,izs:ize,updatetlevel), 'moments_e') - CALL write_field5d_i(moments_i(ips_i:ipe_i,ijs_i:ije_i,ikys:ikye,ikxs:ikxe,izs:ize,updatetlevel), 'moments_i') - ENDIF - - IF (write_Sapj) THEN - IF(KIN_E)& - CALL write_field5d_e(Sepj(ips_e:ipe_e,ijs_e:ije_e,ikys:ikye,ikxs:ikxe,izs:ize), 'Sepj') - CALL write_field5d_i(Sipj(ips_i:ipe_i,ijs_i:ije_i,ikys:ikye,ikxs:ikxe,izs:ize), 'Sipj') - ENDIF - - CONTAINS - - SUBROUTINE write_field5d_e(field, text) - USE futils, ONLY: attach, putarr, putarrnd - USE grid, ONLY: ips_e,ipe_e, ijs_e,ije_e, ikxs,ikxe, ikys,ikye, izs,ize - USE prec_const - IMPLICIT NONE - - COMPLEX(dp), DIMENSION(ips_e:ipe_e,ijs_e:ije_e,ikys:ikye,ikxs:ikxe,izs:ize), INTENT(IN) :: field - CHARACTER(*), INTENT(IN) :: text - - CHARACTER(LEN=50) :: dset_name - - WRITE(dset_name, "(A, '/', A, '/', i6.6)") "/data/var5d", TRIM(text), iframe5d - IF (num_procs .EQ. 1) THEN - CALL putarr(fidres, dset_name, field(ips_e:ipe_e,ijs_e:ije_e,ikys:ikye,ikxs:ikxe,izs:ize), ionode=0) - ELSE - CALL putarrnd(fidres, dset_name, field(ips_e:ipe_e,ijs_e:ije_e,ikys:ikye,ikxs:ikxe,izs:ize), (/1,3,5/)) - ENDIF - CALL attach(fidres, dset_name, 'cstep', cstep) - CALL attach(fidres, dset_name, 'time', time) - CALL attach(fidres, dset_name, 'jobnum', jobnum) - CALL attach(fidres, dset_name, 'dt', dt) - CALL attach(fidres, dset_name, 'iframe2d', iframe2d) - CALL attach(fidres, dset_name, 'iframe5d', iframe5d) - - END SUBROUTINE write_field5d_e - - SUBROUTINE write_field5d_i(field, text) - USE futils, ONLY: attach, putarr, putarrnd - USE grid, ONLY: ips_i,ipe_i, ijs_i,ije_i, ikxs,ikxe, ikys,ikye, izs,ize - USE prec_const - IMPLICIT NONE - - COMPLEX(dp), DIMENSION(ips_i:ipe_i,ijs_i:ije_i,ikys:ikye,ikxs:ikxe,izs:ize), INTENT(IN) :: field - CHARACTER(*), INTENT(IN) :: text - - CHARACTER(LEN=50) :: dset_name - - WRITE(dset_name, "(A, '/', A, '/', i6.6)") "/data/var5d", TRIM(text), iframe5d - IF (num_procs .EQ. 1) THEN - CALL putarr(fidres, dset_name, field(ips_i:ipe_i,ijs_i:ije_i,ikys:ikye,ikxs:ikxe,izs:ize), ionode=0) - ELSE - CALL putarrnd(fidres, dset_name, field(ips_i:ipe_i,ijs_i:ije_i,ikys:ikye,ikxs:ikxe,izs:ize), (/1,3,5/)) - ENDIF - CALL attach(fidres, dset_name, 'cstep', cstep) - CALL attach(fidres, dset_name, 'time', time) - CALL attach(fidres, dset_name, 'jobnum', jobnum) - CALL attach(fidres, dset_name, 'dt', dt) - CALL attach(fidres, dset_name, 'iframe2d', iframe2d) - CALL attach(fidres, dset_name, 'iframe5d', iframe5d) - - END SUBROUTINE write_field5d_i -END SUBROUTINE diagnose_5d diff --git a/src/diag_headers/diagnose_gridgeom.h b/src/diag_headers/diagnose_gridgeom.h deleted file mode 100644 index 9ef1855..0000000 --- a/src/diag_headers/diagnose_gridgeom.h +++ /dev/null @@ -1,50 +0,0 @@ -SUBROUTINE diagnose_gridgeom(kstep) - USE basic - USE grid - USE diagnostics_par - USE futils, ONLY: putarr, creatg, putarrnd, closef - USE time_integration - USE prec_const - USE geometry - USE array - IMPLICIT NONE - INTEGER, INTENT(in) :: kstep - INTEGER, parameter :: BUFSIZE = 2 - INTEGER :: rank = 0 - INTEGER :: dims(1) = (/0/) - IF (kstep .EQ. 0) THEN - ! Grid info - CALL init_outfile(comm0,ggmfile0,ggmfile,fidggm) - CALL creatg(fidggm, "/data/grid", "Grid data") - CALL putarr(fidggm, "/data/grid/coordkx", kxarray_full, "kx*rho_s0", ionode=0) - CALL putarr(fidggm, "/data/grid/coordky", kyarray_full, "ky*rho_s0", ionode=0) - CALL putarr(fidggm, "/data/grid/coordz", zarray_full, "z/R", ionode=0) - CALL putarr(fidggm, "/data/grid/coordp_e" , parray_e_full, "p_e", ionode=0) - CALL putarr(fidggm, "/data/grid/coordj_e" , jarray_e_full, "j_e", ionode=0) - CALL putarr(fidggm, "/data/grid/coordp_i" , parray_i_full, "p_i", ionode=0) - CALL putarr(fidggm, "/data/grid/coordj_i" , jarray_i_full, "j_i", ionode=0) - - ! Metric info - CALL creatg(fidggm, "/data/metric", "Metric data") - CALL putarrnd(fidggm, "/data/metric/gxx", gxx(izs:ize,0:1), (/1, 1, 1/)) - CALL putarrnd(fidggm, "/data/metric/gxy", gxy(izs:ize,0:1), (/1, 1, 1/)) - CALL putarrnd(fidggm, "/data/metric/gyy", gyy(izs:ize,0:1), (/1, 1, 1/)) - CALL putarrnd(fidggm, "/data/metric/gyz", gyz(izs:ize,0:1), (/1, 1, 1/)) - CALL putarrnd(fidggm, "/data/metric/gzz", gzz(izs:ize,0:1), (/1, 1, 1/)) - CALL putarrnd(fidggm, "/data/metric/hatR", hatR(izs:ize,0:1), (/1, 1, 1/)) - CALL putarrnd(fidggm, "/data/metric/hatZ", hatZ(izs:ize,0:1), (/1, 1, 1/)) - CALL putarrnd(fidggm, "/data/metric/hatB", hatB(izs:ize,0:1), (/1, 1, 1/)) - CALL putarrnd(fidggm, "/data/metric/gradxB", gradxB(izs:ize,0:1), (/1, 1, 1/)) - CALL putarrnd(fidggm, "/data/metric/gradyB", gradyB(izs:ize,0:1), (/1, 1, 1/)) - CALL putarrnd(fidggm, "/data/metric/gradzB", gradzB(izs:ize,0:1), (/1, 1, 1/)) - CALL putarrnd(fidggm, "/data/metric/Jacobian", Jacobian(izs:ize,0:1), (/1, 1, 1/)) - CALL putarrnd(fidggm, "/data/metric/gradz_coeff", gradz_coeff(izs:ize,0:1), (/1, 1, 1/)) - CALL putarrnd(fidggm, "/data/metric/Ckxky", Ckxky(ikys:ikye,ikxs:ikxe,izs:ize,0:1), (/1, 1, 3/)) - CALL putarrnd(fidggm, "/data/metric/kernel_i", kernel_i(ijs_i:ije_i,ikys:ikye,ikxs:ikxe,izs:ize,0:1), (/ 1, 2, 4/)) - ENDIF - IF (kstep .EQ. -1) THEN - CALL mpi_barrier(MPI_COMM_WORLD, ierr) - CALL closef(fidggm) - ENDIF - -END SUBROUTINE diagnose_gridgeom diff --git a/src/diag_headers/diagnose_moments.h b/src/diag_headers/diagnose_moments.h deleted file mode 100644 index 5858226..0000000 --- a/src/diag_headers/diagnose_moments.h +++ /dev/null @@ -1,136 +0,0 @@ -SUBROUTINE diagnose_moments(kstep) - USE basic - USE grid - USE diagnostics_par - USE futils, ONLY: creatg,creatd,append,putarr,putarrnd,attach,closef,getatt - USE model, ONLY: KIN_E - USE array, ONLY: Sepj,Sipj - USE fields, ONLY: moments_e, moments_i - USE time_integration - USE utility - USE prec_const - IMPLICIT NONE - INTEGER, INTENT(in) :: kstep - INTEGER, parameter :: BUFSIZE = 2 - INTEGER :: rank = 0 - INTEGER :: dims(1) = (/0/) - !____________________________________________________________________________! - IF ((kstep .EQ. 0)) THEN - - ! var5d group (moments) - IF (nsave_5d .GT. 0) THEN - CALL init_outfile(comm0, momfile0,momfile,fidmom) - - CALL creatd(fidmom, rank, dims, "/data/time", "Time t*c_s/R") - CALL creatd(fidmom, rank, dims, "/data/cstep", "iteration number") - - IF (write_Napj) THEN - IF(KIN_E)& - CALL creatg(fidmom, "/data/moments_e", "moments_e") - CALL creatg(fidmom, "/data/moments_i", "moments_i") - ENDIF - - IF (write_Sapj) THEN - IF(KIN_E)& - CALL creatg(fidmom, "/data/moments_e", "Sipj") - CALL creatg(fidmom, "/data/moments_i", "Sepj") - ENDIF - - IF (cstep==0) THEN - iframe5d=0 - END IF - CALL attach(fidmom,"/data/" , "frames", iframe5d) - END IF - - ENDIF - - !_____________________________________________________________________________ - ! 2. Periodic diagnostics - ! - IF ((kstep .GE. 0) .OR. ((kstep .EQ. -1) .AND. (.NOT. CRASHED))) THEN - - IF((kstep .EQ. -1) .AND. (.NOT. CRASHED .AND. (my_id .EQ. 0))) & - write(*,*) 'Saving last state' - - ! 2.3 5d profiles - IF (MOD(cstep, nsave_5d) == 0) THEN - CALL append(fidmom, "/data/time", time,ionode=0) - CALL append(fidmom, "/data/cstep", real(cstep,dp),ionode=0) - CALL getatt(fidmom, "/data/", "frames",iframe5d) - iframe5d=iframe5d+1 - CALL attach(fidmom,"/data/" , "frames", iframe5d) - - IF (write_Napj) THEN - IF(KIN_E)& - CALL write_field5d_e(moments_e(ips_e:ipe_e,ijs_e:ije_e,ikys:ikye,ikxs:ikxe,izs:ize,updatetlevel), 'moments_e') - CALL write_field5d_i(moments_i(ips_i:ipe_i,ijs_i:ije_i,ikys:ikye,ikxs:ikxe,izs:ize,updatetlevel), 'moments_i') - ENDIF - - IF (write_Sapj) THEN - IF(KIN_E)& - CALL write_field5d_e(Sepj(ips_e:ipe_e,ijs_e:ije_e,ikys:ikye,ikxs:ikxe,izs:ize), 'Sepj') - CALL write_field5d_i(Sipj(ips_i:ipe_i,ijs_i:ije_i,ikys:ikye,ikxs:ikxe,izs:ize), 'Sipj') - ENDIF - END IF - END IF - !_____________________________________________________________________________ - ! 3. Final diagnostics - IF (kstep .EQ. -1) THEN - ! Close diagnostic files - CALL mpi_barrier(MPI_COMM_WORLD, ierr) - CALL closef(fidmom) - END IF - - CONTAINS - SUBROUTINE write_field5d_e(field, text) - USE futils, ONLY: attach, putarr, putarrnd - USE grid, ONLY: ips_e,ipe_e, ijs_e,ije_e, ikxs,ikxe, ikys,ikye, izs,ize - USE prec_const - IMPLICIT NONE - - COMPLEX(dp), DIMENSION(ips_e:ipe_e,ijs_e:ije_e,ikys:ikye,ikxs:ikxe,izs:ize), INTENT(IN) :: field - CHARACTER(*), INTENT(IN) :: text - - CHARACTER(LEN=50) :: dset_name - - WRITE(dset_name, "(A, '/', A, '/', i6.6)") "/data", TRIM(text), iframe5d - IF (num_procs .EQ. 1) THEN - CALL putarr(fidmom, dset_name, field(ips_e:ipe_e,ijs_e:ije_e,ikys:ikye,ikxs:ikxe,izs:ize), ionode=0) - ELSE - CALL putarrnd(fidmom, dset_name, field(ips_e:ipe_e,ijs_e:ije_e,ikys:ikye,ikxs:ikxe,izs:ize), (/1,3,5/)) - ENDIF - CALL attach(fidmom, dset_name, 'cstep', cstep) - CALL attach(fidmom, dset_name, 'time', time) - CALL attach(fidmom, dset_name, 'jobnum', jobnum) - CALL attach(fidmom, dset_name, 'dt', dt) - CALL attach(fidmom, dset_name, 'iframe2d', iframe2d) - CALL attach(fidmom, dset_name, 'iframe5d', iframe5d) - - END SUBROUTINE write_field5d_e - - SUBROUTINE write_field5d_i(field, text) - USE futils, ONLY: attach, putarr, putarrnd - USE grid, ONLY: ips_i,ipe_i, ijs_i,ije_i, ikxs,ikxe, ikys,ikye, izs,ize - USE prec_const - IMPLICIT NONE - - COMPLEX(dp), DIMENSION(ips_i:ipe_i,ijs_i:ije_i,ikys:ikye,ikxs:ikxe,izs:ize), INTENT(IN) :: field - CHARACTER(*), INTENT(IN) :: text - - CHARACTER(LEN=50) :: dset_name - - WRITE(dset_name, "(A, '/', A, '/', i6.6)") "/data", TRIM(text), iframe5d - IF (num_procs .EQ. 1) THEN - CALL putarr(fidmom, dset_name, field(ips_i:ipe_i,ijs_i:ije_i,ikys:ikye,ikxs:ikxe,izs:ize), ionode=0) - ELSE - CALL putarrnd(fidmom, dset_name, field(ips_i:ipe_i,ijs_i:ije_i,ikys:ikye,ikxs:ikxe,izs:ize), (/1,3,5/)) - ENDIF - CALL attach(fidmom, dset_name, 'cstep', cstep) - CALL attach(fidmom, dset_name, 'time', time) - CALL attach(fidmom, dset_name, 'jobnum', jobnum) - CALL attach(fidmom, dset_name, 'dt', dt) - CALL attach(fidmom, dset_name, 'iframe2d', iframe2d) - CALL attach(fidmom, dset_name, 'iframe5d', iframe5d) - - END SUBROUTINE write_field5d_i -END SUBROUTINE diagnose_moments diff --git a/src/diag_headers/diagnose_momspectrum.h b/src/diag_headers/diagnose_momspectrum.h deleted file mode 100644 index 36befdd..0000000 --- a/src/diag_headers/diagnose_momspectrum.h +++ /dev/null @@ -1,105 +0,0 @@ -SUBROUTINE diagnose_momspectrum(kstep) - USE basic - USE grid - USE diagnostics_par - USE futils - USE array - USE model - USE initial_par - USE fields - USE time_integration - USE utility - USE prec_const - USE collision, ONLY: coll_outputinputs - USE geometry - USE processing - IMPLICIT NONE - INTEGER, INTENT(in) :: kstep - INTEGER, parameter :: BUFSIZE = 2 - INTEGER :: rank = 0, frame - INTEGER :: dims(1) = (/0/) - !____________________________________________________________________________! - IF ((kstep .EQ. 0)) THEN - ! var3d group (pjz, spectrum of moments) - IF (nsave_3d .GT. 0) THEN - CALL init_outfile(comm_pz, mspfile0,mspfile,fidmsp) - CALL creatd(fidmsp, rank, dims, "/data/time", "Time t*c_s/R") - CALL creatd(fidmsp, rank, dims, "/data/cstep", "iteration number") - - IF (write_Na00) THEN - IF(KIN_E)& - CALL creatg(fidmsp, "/data/Nepjz", "Nepjz") - CALL creatg(fidmsp, "/data/Nipjz", "Nipjz") - ENDIF - - IF (cstep==0) THEN - iframe3d=0 - ENDIF - CALL attach(fidmsp,"/data/" , "frames", iframe3d) - END IF - - ENDIF - - !_____________________________________________________________________________ - ! 2. Periodic diagnostics - ! - IF (kstep .GE. 0) THEN - ! 2.2 3d profiles - IF (nsave_3d .GT. 0) THEN - IF (MOD(cstep, nsave_3d) == 0) THEN - CALL append(fidmsp, "/data/time", time,ionode=0) - CALL append(fidmsp, "/data/cstep", real(cstep,dp),ionode=0) - CALL getatt(fidmsp, "/data/", "frames",frame) - frame=frame+1 - CALL attach(fidmsp,"/data/" , "frames", frame) - - IF (write_Na00) THEN - CALL compute_Napjz_spectrum - IF(KIN_E) & - CALL write_field3d_pjz_e(Nepjz(ips_e:ipe_e,ijs_e:ije_e,izs:ize), 'Nepjz', frame) - CALL write_field3d_pjz_i(Nipjz(ips_i:ipe_i,ijs_i:ije_i,izs:ize), 'Nipjz', frame) - ENDIF - END IF - END IF - - !_____________________________________________________________________________ - ! 3. Final diagnostics - ELSEIF (kstep .EQ. -1) THEN - ! Close diagnostic files - CALL mpi_barrier(MPI_COMM_WORLD, ierr) - CALL closef(fidmsp) - - END IF - - CONTAINS - SUBROUTINE write_field3d_pjz_i(field, text, frame) - IMPLICIT NONE - REAL(dp), DIMENSION(ips_i:ipe_i,ijs_i:ije_i,izs:ize), INTENT(IN) :: field - CHARACTER(*), INTENT(IN) :: text - INTEGER, INTENT(IN) :: frame - CHARACTER(LEN=50) :: dset_name - WRITE(dset_name, "(A, '/', A, '/', i6.6)") "/data", TRIM(text), frame - IF (num_procs .EQ. 1) THEN ! no data distribution - CALL putarr(fidmsp, dset_name, field(ips_i:ipe_i,ijs_i:ije_i,izs:ize), ionode=0) - ELSE - CALL putarrnd(fidmsp, dset_name, field(ips_i:ipe_i,ijs_i:ije_i,izs:ize), (/1, 3/)) - ENDIF - CALL attach(fidmsp, dset_name, "time", time) - END SUBROUTINE write_field3d_pjz_i - - SUBROUTINE write_field3d_pjz_e(field, text, frame) - IMPLICIT NONE - REAL(dp), DIMENSION(ips_e:ipe_e,ijs_e:ije_e,izs:ize), INTENT(IN) :: field - CHARACTER(*), INTENT(IN) :: text - INTEGER, INTENT(IN) :: frame - CHARACTER(LEN=50) :: dset_name - WRITE(dset_name, "(A, '/', A, '/', i6.6)") "/data", TRIM(text), frame - IF (num_procs .EQ. 1) THEN ! no data distribution - CALL putarr (fidmsp, dset_name, field(ips_e:ipe_e,ijs_e:ije_e,izs:ize), ionode=0) - ELSE - CALL putarrnd(fidmsp, dset_name, field(ips_e:ipe_e,ijs_e:ije_e,izs:ize), (/1, 3/)) - ENDIF - CALL attach(fidmsp, dset_name, "time", time) - END SUBROUTINE write_field3d_pjz_e - -END SUBROUTINE diagnose_momspectrum diff --git a/src/diag_headers/diagnose_profiler.h b/src/diag_headers/diagnose_profiler.h deleted file mode 100644 index b99f67d..0000000 --- a/src/diag_headers/diagnose_profiler.h +++ /dev/null @@ -1,54 +0,0 @@ -SUBROUTINE diagnose_profiler(kstep) - USE basic - USE diagnostics_par - USE futils, ONLY: creatd,creatg,append,closef - USE time_integration - USE utility - USE prec_const - IMPLICIT NONE - INTEGER, INTENT(in) :: kstep - INTEGER :: dims(1) = (/0/) - !____________________________________________________________________________! - IF ((kstep .EQ. 0)) THEN - CALL init_outfile(comm0, prffile0,prffile,fidprf) - - ! data time measurement - CALL creatd(fidprf, 0, dims, "/data/Tc_rhs", "cumulative rhs computation time") - CALL creatd(fidprf, 0, dims, "/data/Tc_adv_field", "cumulative adv. fields computation time") - CALL creatd(fidprf, 0, dims, "/data/Tc_clos", "cumulative closure computation time") - CALL creatd(fidprf, 0, dims, "/data/Tc_ghost", "cumulative communication time") - CALL creatd(fidprf, 0, dims, "/data/Tc_coll", "cumulative collision computation time") - CALL creatd(fidprf, 0, dims, "/data/Tc_poisson", "cumulative poisson computation time") - CALL creatd(fidprf, 0, dims, "/data/Tc_Sapj", "cumulative Sapj computation time") - CALL creatd(fidprf, 0, dims, "/data/Tc_checkfield", "cumulative checkfield computation time") - CALL creatd(fidprf, 0, dims, "/data/Tc_diag", "cumulative sym computation time") - CALL creatd(fidprf, 0, dims, "/data/Tc_process", "cumulative process computation time") - CALL creatd(fidprf, 0, dims, "/data/Tc_step", "cumulative total step computation time") - CALL creatd(fidprf, 0, dims, "/data/time", "current simulation time") - ENDIF - !_____________________________________________________________________________ - ! 2. Periodic diagnostics - ! - IF (kstep .GE. 0) THEN - ! Time measurement data - CALL append(fidprf, "/data/Tc_rhs", tc_rhs,ionode=0) - CALL append(fidprf, "/data/Tc_adv_field", tc_adv_field,ionode=0) - CALL append(fidprf, "/data/Tc_clos", tc_clos,ionode=0) - CALL append(fidprf, "/data/Tc_ghost", tc_ghost,ionode=0) - CALL append(fidprf, "/data/Tc_coll", tc_coll,ionode=0) - CALL append(fidprf, "/data/Tc_poisson", tc_poisson,ionode=0) - CALL append(fidprf, "/data/Tc_Sapj", tc_Sapj,ionode=0) - CALL append(fidprf, "/data/Tc_checkfield",tc_checkfield,ionode=0) - CALL append(fidprf, "/data/Tc_diag", tc_diag,ionode=0) - CALL append(fidprf, "/data/Tc_process", tc_process,ionode=0) - CALL append(fidprf, "/data/Tc_step", tc_step,ionode=0) - CALL append(fidprf, "/data/time", time,ionode=0) - !_____________________________________________________________________________ - ! 3. Final diagnostics - ELSEIF (kstep .EQ. -1) THEN - ! Close diagnostic files - CALL mpi_barrier(MPI_COMM_WORLD, ierr) - CALL closef(fidprf) - - END IF -END SUBROUTINE diagnose_profiler diff --git a/src/diag_headers/diagnose_timetraces.h b/src/diag_headers/diagnose_timetraces.h deleted file mode 100644 index 3c688ae..0000000 --- a/src/diag_headers/diagnose_timetraces.h +++ /dev/null @@ -1,76 +0,0 @@ -SUBROUTINE diagnose_timetraces(kstep) - USE basic - USE grid - USE diagnostics_par - USE futils - USE array - USE model - USE initial_par - USE fields - USE time_integration - USE utility - USE prec_const - USE collision, ONLY: coll_outputinputs - USE geometry - USE processing - IMPLICIT NONE - INTEGER, INTENT(in) :: kstep - INTEGER, parameter :: BUFSIZE = 2 - INTEGER :: rank = 0 - INTEGER :: dims(1) = (/0/) - !____________________________________________________________________________! - IF ((kstep .EQ. 0)) THEN - CALL init_outfile(comm0, ttrfile0,ttrfile,fidttr) - - ! var0d group (gyro transport) - CALL creatd(fidttr, rank, dims, "/data/time", "Time t*c_s/R") - CALL creatd(fidttr, rank, dims, "/data/cstep", "iteration number") - - IF (write_gamma) THEN - CALL creatd(fidttr, rank, dims, "/data/gflux_ri", "Radial gyro ion transport") - CALL creatd(fidttr, rank, dims, "/data/pflux_ri", "Radial part ion transport") - ENDIF - IF (write_hf) THEN - CALL creatd(fidttr, rank, dims, "/data/hflux_x", "Radial part ion heat flux") - ENDIF - IF (cstep==0) THEN - iframe0d=0 - ENDIF - CALL attach(fidttr,"/data/" , "frames", iframe0d) - ENDIF - - !_____________________________________________________________________________ - ! 2. Periodic diagnostics - ! - IF (kstep .GE. 0) THEN - - ! 0d time traces arrays - IF ( MOD(cstep, nsave_0d) == 0 ) THEN - ! Processing data - CALL append(fidttr, "/data/time", time,ionode=0) - CALL append(fidttr, "/data/cstep", real(cstep,dp),ionode=0) - CALL getatt(fidttr, "/data/", "frames",iframe0d) - iframe0d=iframe0d+1 - CALL attach(fidttr,"/data/" , "frames", iframe0d) - ! Ion transport data - IF (write_gamma) THEN - CALL compute_radial_ion_transport - CALL append(fidttr, "/data/gflux_ri",gflux_ri,ionode=0) - CALL append(fidttr, "/data/pflux_ri",pflux_ri,ionode=0) - ENDIF - IF (write_hf) THEN - CALL compute_radial_heatflux - CALL append(fidttr, "/data/hflux_x",hflux_x,ionode=0) - ENDIF - END IF - !_____________________________________________________________________________ - ! 3. Final diagnostics - ELSEIF (kstep .EQ. -1) THEN - ! Close diagnostic files - CALL mpi_barrier(MPI_COMM_WORLD, ierr) - CALL closef(fidttr) - - END IF -END SUBROUTINE diagnose_timetraces -!____________________________________________________________________________! -! AUXILIARY ROUTINES