growing_allocator_mod.F90 Source File


This file depends on

sourcefile~~growing_allocator_mod.f90~~EfferentGraph sourcefile~growing_allocator_mod.f90 growing_allocator_mod.F90 sourcefile~abort_trans_mod.f90 abort_trans_mod.F90 sourcefile~growing_allocator_mod.f90->sourcefile~abort_trans_mod.f90 sourcefile~tpm_gen.f90 tpm_gen.F90 sourcefile~growing_allocator_mod.f90->sourcefile~tpm_gen.f90 sourcefile~abort_trans_mod.f90->sourcefile~tpm_gen.f90

Files dependent on this one

sourcefile~~growing_allocator_mod.f90~~AfferentGraph sourcefile~growing_allocator_mod.f90 growing_allocator_mod.F90 sourcefile~buffered_allocator_mod.f90 buffered_allocator_mod.F90 sourcefile~buffered_allocator_mod.f90->sourcefile~growing_allocator_mod.f90 sourcefile~tpm_hicfft.f90 tpm_hicfft.F90 sourcefile~tpm_hicfft.f90->sourcefile~growing_allocator_mod.f90 sourcefile~tpm_trans.f90 tpm_trans.F90 sourcefile~tpm_trans.f90->sourcefile~growing_allocator_mod.f90 sourcefile~trans_end.f90 trans_end.F90 sourcefile~trans_end.f90->sourcefile~growing_allocator_mod.f90 sourcefile~trans_end.f90->sourcefile~tpm_trans.f90 sourcefile~asre1b_mod.f90 asre1b_mod.F90 sourcefile~asre1b_mod.f90->sourcefile~tpm_trans.f90 sourcefile~asre1bad_mod.f90 asre1bad_mod.F90 sourcefile~asre1bad_mod.f90->sourcefile~tpm_trans.f90 sourcefile~cdmap_mod.f90 cdmap_mod.F90 sourcefile~cdmap_mod.f90->sourcefile~tpm_trans.f90 sourcefile~dealloc_resol_mod.f90~2 dealloc_resol_mod.F90 sourcefile~dealloc_resol_mod.f90~2->sourcefile~tpm_hicfft.f90 sourcefile~dir_trans.f90 dir_trans.F90 sourcefile~dir_trans.f90->sourcefile~tpm_trans.f90 sourcefile~dir_trans_ctl_mod.f90 dir_trans_ctl_mod.F90 sourcefile~dir_trans.f90->sourcefile~dir_trans_ctl_mod.f90 sourcefile~dir_trans.f90~2 dir_trans.F90 sourcefile~dir_trans.f90~2->sourcefile~tpm_trans.f90 sourcefile~dir_trans.f90~2->sourcefile~dir_trans_ctl_mod.f90 sourcefile~dir_trans_ctl_mod.f90->sourcefile~buffered_allocator_mod.f90 sourcefile~dir_trans_ctl_mod.f90->sourcefile~tpm_trans.f90 sourcefile~ftdir_mod.f90 ftdir_mod.F90 sourcefile~dir_trans_ctl_mod.f90->sourcefile~ftdir_mod.f90 sourcefile~ltdir_mod.f90 ltdir_mod.F90 sourcefile~dir_trans_ctl_mod.f90->sourcefile~ltdir_mod.f90 sourcefile~trgtol_mod.f90 trgtol_mod.F90 sourcefile~dir_trans_ctl_mod.f90->sourcefile~trgtol_mod.f90 sourcefile~trltom_pack_unpack.f90 trltom_pack_unpack.F90 sourcefile~dir_trans_ctl_mod.f90->sourcefile~trltom_pack_unpack.f90 sourcefile~dir_trans_ctlad_mod.f90 dir_trans_ctlad_mod.F90 sourcefile~dir_trans_ctlad_mod.f90->sourcefile~buffered_allocator_mod.f90 sourcefile~dir_trans_ctlad_mod.f90->sourcefile~tpm_trans.f90 sourcefile~ltdirad_mod.f90 ltdirad_mod.F90 sourcefile~dir_trans_ctlad_mod.f90->sourcefile~ltdirad_mod.f90 sourcefile~trltog_mod.f90 trltog_mod.F90 sourcefile~dir_trans_ctlad_mod.f90->sourcefile~trltog_mod.f90 sourcefile~trltomad_mod.f90 trltomad_mod.F90 sourcefile~dir_trans_ctlad_mod.f90->sourcefile~trltomad_mod.f90 sourcefile~trltomad_pack_unpack.f90 trltomad_pack_unpack.F90 sourcefile~dir_trans_ctlad_mod.f90->sourcefile~trltomad_pack_unpack.f90 sourcefile~dir_transad.f90 dir_transad.F90 sourcefile~dir_transad.f90->sourcefile~tpm_trans.f90 sourcefile~dir_transad.f90->sourcefile~dir_trans_ctlad_mod.f90 sourcefile~dir_transad.f90~2 dir_transad.F90 sourcefile~dir_transad.f90~2->sourcefile~tpm_trans.f90 sourcefile~dir_transad.f90~2->sourcefile~dir_trans_ctlad_mod.f90 sourcefile~easre1b_mod.f90 easre1b_mod.F90 sourcefile~easre1b_mod.f90->sourcefile~tpm_trans.f90 sourcefile~easre1bad_mod.f90 easre1bad_mod.F90 sourcefile~easre1bad_mod.f90->sourcefile~tpm_trans.f90 sourcefile~edir_trans.f90 edir_trans.F90 sourcefile~edir_trans.f90->sourcefile~tpm_trans.f90 sourcefile~edir_trans_ctl_mod.f90 edir_trans_ctl_mod.F90 sourcefile~edir_trans.f90->sourcefile~edir_trans_ctl_mod.f90 sourcefile~edir_transad.f90 edir_transad.F90 sourcefile~edir_transad.f90->sourcefile~tpm_trans.f90 sourcefile~edir_trans_ctlad_mod.f90 edir_trans_ctlad_mod.F90 sourcefile~edir_transad.f90->sourcefile~edir_trans_ctlad_mod.f90 sourcefile~efsc_mod.f90 efsc_mod.F90 sourcefile~efsc_mod.f90->sourcefile~tpm_trans.f90 sourcefile~efscad_mod.f90 efscad_mod.F90 sourcefile~efscad_mod.f90->sourcefile~tpm_trans.f90 sourcefile~eftdir_ctl_mod.f90 eftdir_ctl_mod.F90 sourcefile~eftdir_ctl_mod.f90->sourcefile~tpm_trans.f90 sourcefile~fourier_out_mod.f90 fourier_out_mod.F90 sourcefile~eftdir_ctl_mod.f90->sourcefile~fourier_out_mod.f90 sourcefile~eftdir_ctl_mod.f90->sourcefile~ftdir_mod.f90 sourcefile~eftdir_ctl_mod.f90->sourcefile~trgtol_mod.f90 sourcefile~eftinv_ctl_mod.f90 eftinv_ctl_mod.F90 sourcefile~eftinv_ctl_mod.f90->sourcefile~tpm_trans.f90 sourcefile~eftinv_ctl_mod.f90->sourcefile~efsc_mod.f90 sourcefile~fourier_in_mod.f90 fourier_in_mod.F90 sourcefile~eftinv_ctl_mod.f90->sourcefile~fourier_in_mod.f90 sourcefile~eftinv_ctl_mod.f90->sourcefile~trltog_mod.f90 sourcefile~eftinv_ctlad_mod.f90 eftinv_ctlad_mod.F90 sourcefile~eftinv_ctlad_mod.f90->sourcefile~tpm_trans.f90 sourcefile~eftinv_ctlad_mod.f90->sourcefile~efscad_mod.f90 sourcefile~fourier_inad_mod.f90 fourier_inad_mod.F90 sourcefile~eftinv_ctlad_mod.f90->sourcefile~fourier_inad_mod.f90 sourcefile~eftinv_ctlad_mod.f90->sourcefile~trgtol_mod.f90 sourcefile~einv_trans.f90 einv_trans.F90 sourcefile~einv_trans.f90->sourcefile~tpm_trans.f90 sourcefile~einv_trans_ctl_mod.f90 einv_trans_ctl_mod.F90 sourcefile~einv_trans.f90->sourcefile~einv_trans_ctl_mod.f90 sourcefile~einv_trans_ctl_mod.f90->sourcefile~tpm_trans.f90 sourcefile~einv_trans_ctl_mod.f90->sourcefile~eftinv_ctl_mod.f90 sourcefile~eltinv_ctl_mod.f90 eltinv_ctl_mod.F90 sourcefile~einv_trans_ctl_mod.f90->sourcefile~eltinv_ctl_mod.f90 sourcefile~einv_trans_ctlad_mod.f90 einv_trans_ctlad_mod.F90 sourcefile~einv_trans_ctlad_mod.f90->sourcefile~tpm_trans.f90 sourcefile~einv_trans_ctlad_mod.f90->sourcefile~eftinv_ctlad_mod.f90 sourcefile~eltinv_ctlad_mod.f90 eltinv_ctlad_mod.F90 sourcefile~einv_trans_ctlad_mod.f90->sourcefile~eltinv_ctlad_mod.f90 sourcefile~einv_transad.f90 einv_transad.F90 sourcefile~einv_transad.f90->sourcefile~tpm_trans.f90 sourcefile~einv_transad.f90->sourcefile~einv_trans_ctlad_mod.f90 sourcefile~eltdir_ctl_mod.f90 eltdir_ctl_mod.F90 sourcefile~eltdir_ctl_mod.f90->sourcefile~tpm_trans.f90 sourcefile~eltdir_mod.f90 eltdir_mod.F90 sourcefile~eltdir_ctl_mod.f90->sourcefile~eltdir_mod.f90 sourcefile~eltdir_ctlad_mod.f90 eltdir_ctlad_mod.F90 sourcefile~eltdir_ctlad_mod.f90->sourcefile~tpm_trans.f90 sourcefile~trmtol_mod.f90 trmtol_mod.F90 sourcefile~eltdir_ctlad_mod.f90->sourcefile~trmtol_mod.f90 sourcefile~eltdirad_mod.f90 eltdirad_mod.F90 sourcefile~eltdir_ctlad_mod.f90->sourcefile~eltdirad_mod.f90 sourcefile~eltinv_ctl_mod.f90->sourcefile~tpm_trans.f90 sourcefile~eltinv_mod.f90 eltinv_mod.F90 sourcefile~eltinv_ctl_mod.f90->sourcefile~eltinv_mod.f90 sourcefile~eltinv_ctl_mod.f90->sourcefile~trmtol_mod.f90 sourcefile~eltinv_ctlad_mod.f90->sourcefile~tpm_trans.f90 sourcefile~eltinvad_mod.f90 eltinvad_mod.F90 sourcefile~eltinv_ctlad_mod.f90->sourcefile~eltinvad_mod.f90 sourcefile~eltinv_mod.f90->sourcefile~tpm_trans.f90 sourcefile~eltinv_mod.f90->sourcefile~easre1b_mod.f90 sourcefile~fspgl_int_mod.f90 fspgl_int_mod.F90 sourcefile~eltinv_mod.f90->sourcefile~fspgl_int_mod.f90 sourcefile~eltinvad_mod.f90->sourcefile~tpm_trans.f90 sourcefile~eltinvad_mod.f90->sourcefile~easre1bad_mod.f90 sourcefile~eprfi2b_mod.f90 eprfi2b_mod.F90 sourcefile~eprfi2b_mod.f90->sourcefile~tpm_trans.f90 sourcefile~eprfi2bad_mod.f90 eprfi2bad_mod.F90 sourcefile~eprfi2bad_mod.f90->sourcefile~tpm_trans.f90 sourcefile~etrans_end.f90 etrans_end.F90 sourcefile~etrans_end.f90->sourcefile~tpm_trans.f90 sourcefile~eupdsp_mod.f90 eupdsp_mod.F90 sourcefile~eupdsp_mod.f90->sourcefile~tpm_trans.f90 sourcefile~eupdspad_mod.f90 eupdspad_mod.F90 sourcefile~eupdspad_mod.f90->sourcefile~tpm_trans.f90 sourcefile~fourier_in_mod.f90->sourcefile~tpm_trans.f90 sourcefile~fourier_inad_mod.f90->sourcefile~tpm_trans.f90 sourcefile~fourier_out_mod.f90->sourcefile~tpm_trans.f90 sourcefile~fourier_outad_mod.f90 fourier_outad_mod.F90 sourcefile~fourier_outad_mod.f90->sourcefile~tpm_trans.f90 sourcefile~fsc_mod.f90 fsc_mod.F90 sourcefile~fsc_mod.f90->sourcefile~buffered_allocator_mod.f90 sourcefile~fsc_mod.f90~2 fsc_mod.F90 sourcefile~fsc_mod.f90~2->sourcefile~tpm_trans.f90 sourcefile~fscad_mod.f90 fscad_mod.F90 sourcefile~fscad_mod.f90->sourcefile~buffered_allocator_mod.f90 sourcefile~fscad_mod.f90~2 fscad_mod.F90 sourcefile~fscad_mod.f90~2->sourcefile~tpm_trans.f90 sourcefile~fspgl_int_mod.f90->sourcefile~tpm_trans.f90 sourcefile~ftdir_ctl_mod.f90 ftdir_ctl_mod.F90 sourcefile~ftdir_ctl_mod.f90->sourcefile~tpm_trans.f90 sourcefile~ftdir_ctl_mod.f90->sourcefile~fourier_out_mod.f90 sourcefile~ftdir_ctl_mod.f90->sourcefile~ftdir_mod.f90 sourcefile~ftdir_ctl_mod.f90->sourcefile~trgtol_mod.f90 sourcefile~ftdir_mod.f90->sourcefile~buffered_allocator_mod.f90 sourcefile~ftdir_mod.f90->sourcefile~tpm_hicfft.f90 sourcefile~ftinv_ctl_mod.f90 ftinv_ctl_mod.F90 sourcefile~ftinv_ctl_mod.f90->sourcefile~tpm_trans.f90 sourcefile~ftinv_ctl_mod.f90->sourcefile~fourier_in_mod.f90 sourcefile~ftinv_ctl_mod.f90->sourcefile~fsc_mod.f90 sourcefile~ftinv_ctl_mod.f90->sourcefile~trltog_mod.f90 sourcefile~ftinv_ctlad_mod.f90 ftinv_ctlad_mod.F90 sourcefile~ftinv_ctlad_mod.f90->sourcefile~tpm_trans.f90 sourcefile~ftinv_ctlad_mod.f90->sourcefile~fourier_inad_mod.f90 sourcefile~ftinv_ctlad_mod.f90->sourcefile~fscad_mod.f90 sourcefile~ftinv_ctlad_mod.f90->sourcefile~trgtol_mod.f90 sourcefile~ftinv_mod.f90~2 ftinv_mod.F90 sourcefile~ftinv_mod.f90~2->sourcefile~buffered_allocator_mod.f90 sourcefile~ftinv_mod.f90~2->sourcefile~tpm_hicfft.f90 sourcefile~gpnorm_trans.f90 gpnorm_trans.F90 sourcefile~gpnorm_trans.f90->sourcefile~buffered_allocator_mod.f90 sourcefile~gpnorm_trans.f90->sourcefile~tpm_trans.f90 sourcefile~gpnorm_trans.f90->sourcefile~trgtol_mod.f90 sourcefile~gpnorm_trans_ctl_mod.f90 gpnorm_trans_ctl_mod.F90 sourcefile~gpnorm_trans_ctl_mod.f90->sourcefile~tpm_trans.f90 sourcefile~gpnorm_trans_ctl_mod.f90->sourcefile~trgtol_mod.f90 sourcefile~gpnorm_trans_ctlad_mod.f90 gpnorm_trans_ctlad_mod.F90 sourcefile~gpnorm_trans_ctlad_mod.f90->sourcefile~tpm_trans.f90 sourcefile~gpnorm_trans_ctlad_mod.f90->sourcefile~trltog_mod.f90 sourcefile~gpnorm_trans_ctltl_mod.f90 gpnorm_trans_ctltl_mod.F90 sourcefile~gpnorm_trans_ctltl_mod.f90->sourcefile~tpm_trans.f90 sourcefile~gpnorm_trans_ctltl_mod.f90->sourcefile~trgtol_mod.f90 sourcefile~gpnorm_trans_gpu.f90 gpnorm_trans_gpu.F90 sourcefile~gpnorm_trans_gpu.f90->sourcefile~tpm_trans.f90 sourcefile~gpnorm_trans_gpu.f90->sourcefile~trgtol_mod.f90 sourcefile~inigptr_mod.f90 inigptr_mod.F90 sourcefile~inigptr_mod.f90->sourcefile~tpm_trans.f90 sourcefile~inigptr_mod.f90~2 inigptr_mod.F90 sourcefile~inigptr_mod.f90~2->sourcefile~tpm_trans.f90 sourcefile~inv_trans.f90 inv_trans.F90 sourcefile~inv_trans.f90->sourcefile~tpm_trans.f90 sourcefile~inv_trans_ctl_mod.f90 inv_trans_ctl_mod.F90 sourcefile~inv_trans.f90->sourcefile~inv_trans_ctl_mod.f90 sourcefile~inv_trans.f90~2 inv_trans.F90 sourcefile~inv_trans.f90~2->sourcefile~tpm_trans.f90 sourcefile~inv_trans.f90~2->sourcefile~inv_trans_ctl_mod.f90 sourcefile~inv_trans_ctl_mod.f90->sourcefile~buffered_allocator_mod.f90 sourcefile~inv_trans_ctl_mod.f90->sourcefile~tpm_trans.f90 sourcefile~inv_trans_ctl_mod.f90->sourcefile~fsc_mod.f90 sourcefile~ltinv_mod.f90 ltinv_mod.F90 sourcefile~inv_trans_ctl_mod.f90->sourcefile~ltinv_mod.f90 sourcefile~inv_trans_ctl_mod.f90->sourcefile~trltog_mod.f90 sourcefile~inv_trans_ctl_mod.f90->sourcefile~trmtol_mod.f90 sourcefile~trmtol_pack_unpack.f90 trmtol_pack_unpack.F90 sourcefile~inv_trans_ctl_mod.f90->sourcefile~trmtol_pack_unpack.f90 sourcefile~inv_trans_ctl_mod.f90~2 inv_trans_ctl_mod.F90 sourcefile~inv_trans_ctl_mod.f90~2->sourcefile~tpm_trans.f90 sourcefile~inv_trans_ctl_mod.f90~2->sourcefile~ftinv_ctl_mod.f90 sourcefile~ltinv_ctl_mod.f90 ltinv_ctl_mod.F90 sourcefile~inv_trans_ctl_mod.f90~2->sourcefile~ltinv_ctl_mod.f90 sourcefile~inv_trans_ctlad_mod.f90 inv_trans_ctlad_mod.F90 sourcefile~inv_trans_ctlad_mod.f90->sourcefile~tpm_trans.f90 sourcefile~inv_trans_ctlad_mod.f90->sourcefile~ftinv_ctlad_mod.f90 sourcefile~ltinv_ctlad_mod.f90 ltinv_ctlad_mod.F90 sourcefile~inv_trans_ctlad_mod.f90->sourcefile~ltinv_ctlad_mod.f90 sourcefile~inv_trans_ctlad_mod.f90~2 inv_trans_ctlad_mod.F90 sourcefile~inv_trans_ctlad_mod.f90~2->sourcefile~buffered_allocator_mod.f90 sourcefile~inv_trans_ctlad_mod.f90~2->sourcefile~tpm_trans.f90 sourcefile~inv_trans_ctlad_mod.f90~2->sourcefile~fscad_mod.f90 sourcefile~inv_trans_ctlad_mod.f90~2->sourcefile~ftdir_mod.f90 sourcefile~ltinvad_mod.f90 ltinvad_mod.F90 sourcefile~inv_trans_ctlad_mod.f90~2->sourcefile~ltinvad_mod.f90 sourcefile~inv_trans_ctlad_mod.f90~2->sourcefile~trgtol_mod.f90 sourcefile~trmtolad_mod.f90 trmtolad_mod.F90 sourcefile~inv_trans_ctlad_mod.f90~2->sourcefile~trmtolad_mod.f90 sourcefile~trmtolad_pack_unpack.f90 trmtolad_pack_unpack.F90 sourcefile~inv_trans_ctlad_mod.f90~2->sourcefile~trmtolad_pack_unpack.f90 sourcefile~inv_transad.f90 inv_transad.F90 sourcefile~inv_transad.f90->sourcefile~tpm_trans.f90 sourcefile~inv_transad.f90->sourcefile~inv_trans_ctlad_mod.f90 sourcefile~inv_transad.f90~2 inv_transad.F90 sourcefile~inv_transad.f90~2->sourcefile~tpm_trans.f90 sourcefile~inv_transad.f90~2->sourcefile~inv_trans_ctlad_mod.f90 sourcefile~ledir_mod.f90~2 ledir_mod.F90 sourcefile~ledir_mod.f90~2->sourcefile~buffered_allocator_mod.f90 sourcefile~leinv_mod.f90~2 leinv_mod.F90 sourcefile~leinv_mod.f90~2->sourcefile~buffered_allocator_mod.f90 sourcefile~ltdir_ctl_mod.f90 ltdir_ctl_mod.F90 sourcefile~ltdir_ctl_mod.f90->sourcefile~tpm_trans.f90 sourcefile~ltdir_ctl_mod.f90->sourcefile~ltdir_mod.f90 sourcefile~ltdir_ctlad_mod.f90 ltdir_ctlad_mod.F90 sourcefile~ltdir_ctlad_mod.f90->sourcefile~tpm_trans.f90 sourcefile~ltdir_ctlad_mod.f90->sourcefile~ltdirad_mod.f90 sourcefile~ltdir_ctlad_mod.f90->sourcefile~trmtol_mod.f90 sourcefile~ltdir_mod.f90->sourcefile~buffered_allocator_mod.f90 sourcefile~ltdir_mod.f90->sourcefile~tpm_trans.f90 sourcefile~updsp_mod.f90 updsp_mod.F90 sourcefile~ltdir_mod.f90->sourcefile~updsp_mod.f90 sourcefile~ltdir_mod.f90~2 ltdir_mod.F90 sourcefile~ltdir_mod.f90~2->sourcefile~tpm_trans.f90 sourcefile~ltdir_mod.f90~2->sourcefile~cdmap_mod.f90 sourcefile~ltdir_mod.f90~2->sourcefile~updsp_mod.f90 sourcefile~prfi2_mod.f90 prfi2_mod.F90 sourcefile~ltdir_mod.f90~2->sourcefile~prfi2_mod.f90 sourcefile~ltdirad_mod.f90->sourcefile~buffered_allocator_mod.f90 sourcefile~ltdirad_mod.f90->sourcefile~tpm_trans.f90 sourcefile~updspad_mod.f90 updspad_mod.F90 sourcefile~ltdirad_mod.f90->sourcefile~updspad_mod.f90 sourcefile~ltinv_ctl_mod.f90->sourcefile~tpm_trans.f90 sourcefile~ltinv_ctl_mod.f90->sourcefile~ltinv_mod.f90 sourcefile~ltinv_ctl_mod.f90->sourcefile~trmtol_mod.f90 sourcefile~ltinv_ctlad_mod.f90->sourcefile~tpm_trans.f90 sourcefile~ltinv_ctlad_mod.f90->sourcefile~ltinvad_mod.f90 sourcefile~ltinv_mod.f90->sourcefile~buffered_allocator_mod.f90 sourcefile~ltinv_mod.f90->sourcefile~tpm_trans.f90 sourcefile~ltinv_mod.f90~2 ltinv_mod.F90 sourcefile~ltinv_mod.f90~2->sourcefile~tpm_trans.f90 sourcefile~ltinv_mod.f90~2->sourcefile~asre1b_mod.f90 sourcefile~ltinv_mod.f90~2->sourcefile~cdmap_mod.f90 sourcefile~ltinv_mod.f90~2->sourcefile~fspgl_int_mod.f90 sourcefile~ltinvad_mod.f90->sourcefile~tpm_trans.f90 sourcefile~ltinvad_mod.f90->sourcefile~asre1bad_mod.f90 sourcefile~ltinvad_mod.f90~2 ltinvad_mod.F90 sourcefile~ltinvad_mod.f90~2->sourcefile~buffered_allocator_mod.f90 sourcefile~ltinvad_mod.f90~2->sourcefile~tpm_trans.f90 sourcefile~prfi2b_mod.f90 prfi2b_mod.F90 sourcefile~prfi2b_mod.f90->sourcefile~tpm_trans.f90 sourcefile~prfi2bad_mod.f90 prfi2bad_mod.F90 sourcefile~prfi2bad_mod.f90->sourcefile~tpm_trans.f90 sourcefile~trans_end.f90~2 trans_end.F90 sourcefile~trans_end.f90~2->sourcefile~tpm_trans.f90 sourcefile~trgtol_mod.f90->sourcefile~tpm_trans.f90 sourcefile~trgtol_mod.f90->sourcefile~inigptr_mod.f90 sourcefile~trgtol_mod.f90~2 trgtol_mod.F90 sourcefile~trgtol_mod.f90~2->sourcefile~buffered_allocator_mod.f90 sourcefile~trgtol_mod.f90~2->sourcefile~tpm_trans.f90 sourcefile~trltog_mod.f90->sourcefile~buffered_allocator_mod.f90 sourcefile~trltog_mod.f90->sourcefile~tpm_trans.f90 sourcefile~trltog_mod.f90~2 trltog_mod.F90 sourcefile~trltog_mod.f90~2->sourcefile~tpm_trans.f90 sourcefile~trltog_mod.f90~2->sourcefile~inigptr_mod.f90 sourcefile~trltom_mod.f90~2 trltom_mod.F90 sourcefile~trltom_mod.f90~2->sourcefile~buffered_allocator_mod.f90 sourcefile~trltom_pack_unpack.f90->sourcefile~buffered_allocator_mod.f90 sourcefile~trltomad_mod.f90->sourcefile~buffered_allocator_mod.f90 sourcefile~trltomad_pack_unpack.f90->sourcefile~buffered_allocator_mod.f90 sourcefile~trmtol_mod.f90->sourcefile~buffered_allocator_mod.f90 sourcefile~trmtol_pack_unpack.f90->sourcefile~buffered_allocator_mod.f90 sourcefile~trmtolad_mod.f90->sourcefile~buffered_allocator_mod.f90 sourcefile~trmtolad_pack_unpack.f90->sourcefile~buffered_allocator_mod.f90 sourcefile~updsp_mod.f90->sourcefile~tpm_trans.f90 sourcefile~updsp_mod.f90~2 updsp_mod.F90 sourcefile~updsp_mod.f90~2->sourcefile~tpm_trans.f90 sourcefile~updspad_mod.f90->sourcefile~tpm_trans.f90 sourcefile~updspad_mod.f90~2 updspad_mod.F90 sourcefile~updspad_mod.f90~2->sourcefile~tpm_trans.f90 sourcefile~asre1_mod.f90 asre1_mod.F90 sourcefile~asre1_mod.f90->sourcefile~asre1b_mod.f90 sourcefile~asre1ad_mod.f90 asre1ad_mod.F90 sourcefile~asre1ad_mod.f90->sourcefile~asre1bad_mod.f90 sourcefile~dir_trans_ctl_mod.f90~2 dir_trans_ctl_mod.F90 sourcefile~dir_trans_ctl_mod.f90~2->sourcefile~ftdir_ctl_mod.f90 sourcefile~dir_trans_ctl_mod.f90~2->sourcefile~ltdir_ctl_mod.f90 sourcefile~dir_trans_ctlad_mod.f90~2 dir_trans_ctlad_mod.F90 sourcefile~dir_trans_ctlad_mod.f90~2->sourcefile~ltdir_ctlad_mod.f90 sourcefile~ftdir_ctlad_mod.f90 ftdir_ctlad_mod.F90 sourcefile~dir_trans_ctlad_mod.f90~2->sourcefile~ftdir_ctlad_mod.f90 sourcefile~easre1ad_mod.f90 easre1ad_mod.F90 sourcefile~easre1ad_mod.f90->sourcefile~easre1bad_mod.f90 sourcefile~edir_trans_ctl_mod.f90->sourcefile~eftdir_ctl_mod.f90 sourcefile~edir_trans_ctl_mod.f90->sourcefile~eltdir_ctl_mod.f90 sourcefile~edir_trans_ctlad_mod.f90->sourcefile~eltdir_ctlad_mod.f90 sourcefile~eftdir_ctlad_mod.f90 eftdir_ctlad_mod.F90 sourcefile~edir_trans_ctlad_mod.f90->sourcefile~eftdir_ctlad_mod.f90 sourcefile~eftdir_ctlad_mod.f90->sourcefile~fourier_outad_mod.f90 sourcefile~eftdir_ctlad_mod.f90->sourcefile~trltog_mod.f90 sourcefile~egpnorm_trans.f90 egpnorm_trans.F90 sourcefile~egpnorm_trans.f90->sourcefile~gpnorm_trans_ctl_mod.f90 sourcefile~eltdir_mod.f90->sourcefile~eupdsp_mod.f90 sourcefile~eprfi2_mod.f90 eprfi2_mod.F90 sourcefile~eltdir_mod.f90->sourcefile~eprfi2_mod.f90 sourcefile~eltdirad_mod.f90->sourcefile~eupdspad_mod.f90 sourcefile~eprfi2ad_mod.f90 eprfi2ad_mod.F90 sourcefile~eltdirad_mod.f90->sourcefile~eprfi2ad_mod.f90 sourcefile~eprfi2_mod.f90->sourcefile~eprfi2b_mod.f90 sourcefile~eprfi2ad_mod.f90->sourcefile~eprfi2bad_mod.f90 sourcefile~ftdir_ctlad_mod.f90->sourcefile~fourier_outad_mod.f90 sourcefile~ftdir_ctlad_mod.f90->sourcefile~trltog_mod.f90 sourcefile~gpnorm_trans.f90~2 gpnorm_trans.F90 sourcefile~gpnorm_trans.f90~2->sourcefile~gpnorm_trans_ctl_mod.f90 sourcefile~gpnorm_transad.f90 gpnorm_transad.F90 sourcefile~gpnorm_transad.f90->sourcefile~gpnorm_trans_ctlad_mod.f90 sourcefile~gpnorm_transtl.f90 gpnorm_transtl.F90 sourcefile~gpnorm_transtl.f90->sourcefile~gpnorm_trans_ctltl_mod.f90 sourcefile~ltdirad_mod.f90~2 ltdirad_mod.F90 sourcefile~ltdirad_mod.f90~2->sourcefile~updspad_mod.f90 sourcefile~prfi2ad_mod.f90 prfi2ad_mod.F90 sourcefile~ltdirad_mod.f90~2->sourcefile~prfi2ad_mod.f90 sourcefile~prfi2_mod.f90->sourcefile~prfi2b_mod.f90 sourcefile~prfi2ad_mod.f90->sourcefile~prfi2bad_mod.f90

Source Code

MODULE GROWING_ALLOCATOR_MOD

  USE ISO_C_BINDING, ONLY: C_INT8_T

  PRIVATE
  PUBLIC :: GROWING_ALLOCATION_TYPE
  PUBLIC :: REALLOCATE_GROWING_ALLOCATION, REGISTER_FREE_FUNCTION
  PUBLIC :: DESTROY_GROWING_ALLOCATOR

  ABSTRACT INTERFACE
    SUBROUTINE FREE_FUNC_PROC(PTR, SZ) BIND(C)
      USE ISO_C_BINDING, ONLY: C_SIZE_T, C_INT8_T
      IMPLICIT NONE
      INTEGER(KIND=C_INT8_T), TARGET :: PTR(:)
      INTEGER(C_SIZE_T), VALUE :: SZ
    END SUBROUTINE
  END INTERFACE

  TYPE FREE_FUNC_TYPE
    PROCEDURE(FREE_FUNC_PROC), POINTER, NOPASS :: FUNC => NULL ()
  END TYPE

  TYPE GROWING_ALLOCATION_TYPE
    INTEGER(KIND=C_INT8_T), POINTER :: PTR(:)
    TYPE(FREE_FUNC_TYPE) :: FREE_FUNCS(10)
    INTEGER :: FREE_FUNCS_SZ
  END TYPE

CONTAINS

  SUBROUTINE REALLOCATE_GROWING_ALLOCATION(ALLOC, SZ)
    USE ISO_C_BINDING, ONLY: C_SIZE_T
    USE TPM_GEN,       ONLY: NOUT
    IMPLICIT NONE
    TYPE(GROWING_ALLOCATION_TYPE), INTENT(INOUT) :: ALLOC
    INTEGER(C_SIZE_T), INTENT(IN) :: SZ

    ! Deallocate existing pointer
    IF (ASSOCIATED(ALLOC%PTR) .AND. SZ > SIZE(ALLOC%PTR, 1, C_SIZE_T)) THEN
      WRITE(NOUT,*) "WARNING: REALLOCATING GROWING POINTER CAUSING GRAPH REINSTANTIATION"
      CALL DESTROY_GROWING_ALLOCATOR(ALLOC)
    ENDIF

    IF (.NOT. ASSOCIATED(ALLOC%PTR)) THEN
      ALLOCATE(ALLOC%PTR(SZ))
#ifdef OMPGPU
      !$OMP TARGET ENTER DATA MAP(ALLOC:ALLOC%PTR)
#endif
#ifdef ACCGPU
      !$ACC ENTER DATA CREATE(ALLOC%PTR)
#endif
      ALLOC%FREE_FUNCS_SZ = 0
    ENDIF
  END SUBROUTINE

  SUBROUTINE REGISTER_FREE_FUNCTION(ALLOC, FREE_FUNC)
    USE ABORT_TRANS_MOD, ONLY: ABORT_TRANS
    IMPLICIT NONE
    TYPE(GROWING_ALLOCATION_TYPE) :: ALLOC
    PROCEDURE(FREE_FUNC_PROC) :: FREE_FUNC

    INTEGER :: I

    DO I = 1, ALLOC%FREE_FUNCS_SZ
      IF (ASSOCIATED(ALLOC%FREE_FUNCS(I)%FUNC, FREE_FUNC)) &
        RETURN
    ENDDO

    ALLOC%FREE_FUNCS_SZ = ALLOC%FREE_FUNCS_SZ + 1
    IF (ALLOC%FREE_FUNCS_SZ > SIZE(ALLOC%FREE_FUNCS)) THEN
      CALL ABORT_TRANS("REGISTER_FREE_FUNCTION: ERROR - Too many free functions registered")
    ENDIF
    ALLOC%FREE_FUNCS(ALLOC%FREE_FUNCS_SZ)%FUNC => FREE_FUNC
  END SUBROUTINE

  SUBROUTINE REGISTER_FREE_C(ALLOC_C, FREE_FUNC_C) BIND(C, NAME="growing_allocator_register_free_c")
    USE ISO_C_BINDING, ONLY: C_FUNPTR, C_PTR, C_F_PROCPOINTER, C_F_POINTER
    IMPLICIT NONE
    TYPE(C_PTR), VALUE :: ALLOC_C
    TYPE(C_FUNPTR), VALUE :: FREE_FUNC_C

    TYPE(GROWING_ALLOCATION_TYPE), POINTER :: ALLOC
    PROCEDURE(FREE_FUNC_PROC), POINTER :: FREE_FUNC

    CALL C_F_POINTER(ALLOC_C, ALLOC)
    CALL C_F_PROCPOINTER(FREE_FUNC_C, FREE_FUNC)
    CALL REGISTER_FREE_FUNCTION(ALLOC, FREE_FUNC)

  END SUBROUTINE

  SUBROUTINE DESTROY_GROWING_ALLOCATOR(ALLOC)
    USE ISO_C_BINDING, ONLY: C_SIZE_T
    IMPLICIT NONE
    TYPE(GROWING_ALLOCATION_TYPE) :: ALLOC
    INTEGER :: I
    IF (ASSOCIATED(ALLOC%PTR)) THEN
      DO I = 1, ALLOC%FREE_FUNCS_SZ
        CALL ALLOC%FREE_FUNCS(I)%FUNC(ALLOC%PTR, &
                                      SIZE(ALLOC%PTR, 1, C_SIZE_T))
      ENDDO
#ifdef OMPGPU
      !$OMP TARGET EXIT DATA MAP(DELETE:ALLOC%PTR)
#endif
#ifdef ACCGPU
      !$ACC EXIT DATA DELETE(ALLOC%PTR)
#endif
      DEALLOCATE(ALLOC%PTR)
      NULLIFY(ALLOC%PTR)
    ENDIF
  END SUBROUTINE

END MODULE