Close the output file and deallocate arrays
subroutine finish_gs2_diagnostics_new
use diagnostics_fluxes, only: finish_diagnostics_fluxes
use diagnostics_omega, only: finish_diagnostics_omega
use diagnostics_heating, only: finish_diagnostics_heating
use diagnostics_ascii, only: finish_diagnostics_ascii
use diagnostics_config, only: finish_diagnostics_config
use diagnostics_antenna, only: finish_diagnostics_antenna
use diagnostics_nonlinear_convergence, only: finish_nonlinear_convergence
use diagnostics_velocity_space, only: finish_diagnostics_velocity_space
use collisional_heating, only: finish_collisional
use diagnostics_kinetic_energy_transfer, only: finish_diagnostics_kinetic_energy_transfer
use gs2_diagnostics, only: save_restart_dist_fn, do_write_geom, do_write_fyx, do_write_f
use mp, only: proc0
use fields_arrays, only: phinew, bparnew
use unit_tests, only: debug_message
use neasyf, only: neasyf_close
implicit none
integer, parameter :: verb=3
if (.not. gnostics%write_any) return
call debug_message(verb, 'gs2_diagnostics_new::finish_gs2_diagnostics_new &
& calling save_restart_dist_fn')
call save_restart_dist_fn(gnostics%save_for_restart, &
gnostics%save_distfn, &
gnostics%save_glo_info_and_grids, &
gnostics%save_velocities, &
gnostics%user_time)
call debug_message(verb, 'gs2_diagnostics_new::finish_gs2_diagnostics_new &
& calling run_old_final_routines')
call run_old_final_routines
call debug_message(verb, 'gs2_diagnostics_new::finish_gs2_diagnostics_new finishing submodules')
call finish_diagnostics_fluxes
call finish_diagnostics_omega
call finish_collisional
call finish_diagnostics_antenna(gnostics)
call finish_diagnostics_velocity_space()
call finish_diagnostics_kinetic_energy_transfer
if (gnostics%use_nonlin_convergence) call finish_nonlinear_convergence()
if (gnostics%write_heating) call finish_diagnostics_heating(gnostics)
if (gnostics%parallel .or. proc0) then
if(proc0.and.debug) write(*,*) "Closing new diagnostics"
call neasyf_close(gnostics%file_id)
end if
! Random stuff that needs to be put in properly or removed
! Note we don't use gnostics%ascii_files%write_to_yxdist here
! because do_write_fyx is collective but gnostics%ascii_files%write_to_yxdist
! is only set on proc0
if (gnostics%write_ascii .and. gnostics%write_gyx) &
call do_write_fyx (gnostics%ascii_files%yxdist, phinew, bparnew)
if (gnostics%write_ascii .and. gnostics%write_g) &
call do_write_f (gnostics%ascii_files%dist)
if (gnostics%write_ascii) call do_write_geom()
if (proc0) call finish_diagnostics_ascii(gnostics%ascii_files)
call finish_diagnostics_config(gnostics)
end subroutine finish_gs2_diagnostics_new