From ce843fba137d2879c0bae9130fbb319d9e04aa97 Mon Sep 17 00:00:00 2001 From: Philippe WAUTELET <philippe.wautelet@aero.obs-mip.fr> Date: Tue, 1 Feb 2022 11:57:28 +0100 Subject: [PATCH] Philippe 01/02/2022: OpenACC: use MNH_ALLOCATE_FLAT and MNH_RELEASE_FLAT instead of old allocate/release procedures --- src/MNH/advection_metsv.f90 | 96 +++++++------- src/MNH/advection_uvw.f90 | 4 +- src/MNH/emoist.f90 | 8 +- src/MNH/etheta.f90 | 10 +- src/MNH/gradient_u.f90 | 28 ++-- src/MNH/gradient_v.f90 | 31 +++-- src/MNH/gradient_w.f90 | 36 ++--- src/MNH/ice4_fast_rg.f90 | 16 +-- src/MNH/ice4_fast_rs.f90 | 14 +- src/MNH/ice4_sedimentation_split.f90 | 24 ++-- src/MNH/ice4_tendencies.f90 | 14 +- src/MNH/mode_mnh_zwork.f90 | 15 ++- src/MNH/mode_prandtl.f90 | 24 ++-- src/MNH/modeln.f90 | 12 +- src/MNH/prandtl.f90 | 21 ++- src/MNH/rain_ice.f90 | 160 +++++++++++------------ src/MNH/rain_ice_nucleation.f90 | 38 +++--- src/MNH/rain_ice_sedimentation_split.f90 | 118 ++++++++++------- src/MNH/resolved_cloud.f90 | 51 ++++---- src/MNH/sources_neg_correct.f90 | 22 ++-- src/MNH/tke_eps_sources.f90 | 22 ++-- src/MNH/tridiag_thermo.f90 | 27 ++-- src/MNH/tridiag_tke.f90 | 13 +- src/MNH/tridiag_w.f90 | 20 +-- src/MNH/tridiag_wind.f90 | 13 +- src/MNH/turb.f90 | 141 ++++++++++---------- src/MNH/turb_hor_dyn_corr.f90 | 62 ++++----- src/MNH/turb_hor_splt.f90 | 61 +++++---- src/MNH/turb_hor_sv_flux.f90 | 24 ++-- src/MNH/turb_hor_thermo_corr.f90 | 29 ++-- src/MNH/turb_hor_thermo_flux.f90 | 37 +++--- src/MNH/turb_hor_tke.f90 | 18 +-- src/MNH/turb_hor_uv.f90 | 32 ++--- src/MNH/turb_hor_uw.f90 | 20 +-- src/MNH/turb_hor_vw.f90 | 20 +-- src/MNH/turb_ver.f90 | 66 +++++----- src/MNH/turb_ver_dyn_flux.f90 | 37 +++--- src/MNH/turb_ver_thermo_corr.f90 | 36 ++--- src/MNH/turb_ver_thermo_flux.f90 | 42 +++--- src/ZSOLVER/advection_metsv.f90 | 96 +++++++------- src/ZSOLVER/advection_uvw.f90 | 46 +++---- src/ZSOLVER/gdiv.f90 | 22 ++-- src/ZSOLVER/modeln.f90 | 12 +- src/ZSOLVER/p_abs.f90 | 12 +- src/ZSOLVER/pressurez.f90 | 24 ++-- src/ZSOLVER/qlap.f90 | 32 ++--- src/ZSOLVER/tridiag_thermo.f90 | 27 ++-- src/ZSOLVER/turb.f90 | 141 ++++++++++---------- src/ZSOLVER/turb_hor_dyn_corr.f90 | 56 ++++---- src/ZSOLVER/turb_hor_thermo_flux.f90 | 36 +++-- src/ZSOLVER/zsolver.f90 | 14 +- src/ZSOLVER/zsolver_inv.f90 | 6 +- 52 files changed, 974 insertions(+), 1012 deletions(-) diff --git a/src/MNH/advection_metsv.f90 b/src/MNH/advection_metsv.f90 index 6ba8a05bb..43e6ce771 100644 --- a/src/MNH/advection_metsv.f90 +++ b/src/MNH/advection_metsv.f90 @@ -174,8 +174,8 @@ use mode_argslist_ll, only: ADD3DFIELD_ll, ADD4DFIELD_ll, CLEANLIST_ll, LIST_ use mode_budget, only: Budget_store_init, Budget_store_end #ifdef MNH_OPENACC USE MODE_DEVICE -USE MODE_MNH_ZWORK, ONLY: MNH_ALLOCATE_ZT3D, MNH_ALLOCATE_ZT4D, MNH_CHECK_IN_ZT3D, MNH_CHECK_OUT_ZT3D, & - MNH_GET_ZT3D, MNH_REL_ZT3D, MNH_REL_ZT4D, ZT3D +USE MODE_MNH_ZWORK, ONLY: MNH_ALLOCATE_FLAT, MNH_CHECK_IN_ZT3D, MNH_CHECK_OUT_ZT3D, & + MNH_GET_ZT3D, MNH_RELEASE_FLAT, MNH_REL_ZT3D, ZT3D #endif use mode_exchange_ll, only: UPDATE_HALO_ll USE MODE_IO_FIELD_WRITE, only: IO_Field_write @@ -400,41 +400,41 @@ allocate( ZLS ( JIU,JJU,JKU ) ) allocate( ZCPH ( JIU,JJU,JKU ) ) #else CALL MNH_CHECK_IN_ZT3D("ADVECTION_METSV") -IZRUCPPM = MNH_ALLOCATE_ZT3D( ZRUCPPM , JIU,JJU,JKU ) -IZRVCPPM = MNH_ALLOCATE_ZT3D( ZRVCPPM , JIU,JJU,JKU ) -IZRWCPPM = MNH_ALLOCATE_ZT3D( ZRWCPPM , JIU,JJU,JKU ) -IZCFLU = MNH_ALLOCATE_ZT3D( ZCFLU , JIU,JJU,JKU ) -IZCFLV = MNH_ALLOCATE_ZT3D( ZCFLV , JIU,JJU,JKU ) -IZCFLW = MNH_ALLOCATE_ZT3D( ZCFLW , JIU,JJU,JKU ) -IZCFL = MNH_ALLOCATE_ZT3D( ZCFL , JIU,JJU,JKU ) -IZTH = MNH_ALLOCATE_ZT3D( ZTH , JIU,JJU,JKU ) -IZTKE = MNH_ALLOCATE_ZT3D( ZTKE , JIU,JJU,SIZE(PTKET,3) ) -IZRTHS_OTHER = MNH_ALLOCATE_ZT3D( ZRTHS_OTHER , JIU,JJU,JKU ) -IZRTKES_OTHER = MNH_ALLOCATE_ZT3D( ZRTKES_OTHER , JIU,JJU,SIZE(PTKET,3) ) -IZRTHS_PPM = MNH_ALLOCATE_ZT3D( ZRTHS_PPM , JIU,JJU,JKU ) -IZRTKES_PPM = MNH_ALLOCATE_ZT3D( ZRTKES_PPM , JIU,JJU,SIZE(PTKET,3) ) -IZR = MNH_ALLOCATE_ZT4D( ZR , JIU,JJU,JKU, SIZE(PRT, 4) ) -IZSV = MNH_ALLOCATE_ZT4D( ZSV , JIU,JJU,JKU, SIZE(PSVT,4) ) -IZSNWC = MNH_ALLOCATE_ZT4D( ZSNWC , JIU,JJU,JKU, NBLOWSNOW_2D ) -IZSNWC_INIT = MNH_ALLOCATE_ZT4D( ZSNWC_INIT , JIU,JJU,JKU, NBLOWSNOW_2D ) -IZRSNWCS = MNH_ALLOCATE_ZT4D( ZRSNWCS , JIU,JJU,JKU, NBLOWSNOW_2D ) -IZRRS_OTHER = MNH_ALLOCATE_ZT4D( ZRRS_OTHER , JIU,JJU,JKU, SIZE(PRT, 4) ) -IZRSVS_OTHER = MNH_ALLOCATE_ZT4D( ZRSVS_OTHER , JIU,JJU,JKU, SIZE(PSVT,4) ) -IZRSNWCS_OTHER = MNH_ALLOCATE_ZT4D( ZRSNWCS_OTHER, JIU,JJU,JKU, NBLOWSNOW_2D ) -IZRRS_PPM = MNH_ALLOCATE_ZT4D( ZRRS_PPM , JIU,JJU,JKU, SIZE(PRT, 4) ) -IZRSVS_PPM = MNH_ALLOCATE_ZT4D( ZRSVS_PPM , JIU,JJU,JKU, SIZE(PSVT,4) ) -IZRSNWCS_PPM = MNH_ALLOCATE_ZT4D( ZRSNWCS_PPM , JIU,JJU,JKU, NBLOWSNOW_2D ) -IZRHOX1 = MNH_ALLOCATE_ZT3D( ZRHOX1 , JIU,JJU,JKU ) -IZRHOX2 = MNH_ALLOCATE_ZT3D( ZRHOX2 , JIU,JJU,JKU ) -IZRHOY1 = MNH_ALLOCATE_ZT3D( ZRHOY1 , JIU,JJU,JKU ) -IZRHOY2 = MNH_ALLOCATE_ZT3D( ZRHOY2 , JIU,JJU,JKU ) -IZRHOZ1 = MNH_ALLOCATE_ZT3D( ZRHOZ1 , JIU,JJU,JKU ) -IZRHOZ2 = MNH_ALLOCATE_ZT3D( ZRHOZ2 , JIU,JJU,JKU ) -IZT = MNH_ALLOCATE_ZT3D( ZT , JIU,JJU,JKU ) -IZEXN = MNH_ALLOCATE_ZT3D( ZEXN , JIU,JJU,JKU ) -IZLV = MNH_ALLOCATE_ZT3D( ZLV , JIU,JJU,JKU ) -IZLS = MNH_ALLOCATE_ZT3D( ZLS , JIU,JJU,JKU ) -IZCPH = MNH_ALLOCATE_ZT3D( ZCPH , JIU,JJU,JKU ) +IZRUCPPM = MNH_ALLOCATE_FLAT( ZRUCPPM , JIU, JJU, JKU ) +IZRVCPPM = MNH_ALLOCATE_FLAT( ZRVCPPM , JIU, JJU, JKU ) +IZRWCPPM = MNH_ALLOCATE_FLAT( ZRWCPPM , JIU, JJU, JKU ) +IZCFLU = MNH_ALLOCATE_FLAT( ZCFLU , JIU, JJU, JKU ) +IZCFLV = MNH_ALLOCATE_FLAT( ZCFLV , JIU, JJU, JKU ) +IZCFLW = MNH_ALLOCATE_FLAT( ZCFLW , JIU, JJU, JKU ) +IZCFL = MNH_ALLOCATE_FLAT( ZCFL , JIU, JJU, JKU ) +IZTH = MNH_ALLOCATE_FLAT( ZTH , JIU, JJU, JKU ) +IZTKE = MNH_ALLOCATE_FLAT( ZTKE , JIU, JJU, SIZE(PTKET,3) ) +IZRTHS_OTHER = MNH_ALLOCATE_FLAT( ZRTHS_OTHER , JIU, JJU, JKU ) +IZRTKES_OTHER = MNH_ALLOCATE_FLAT( ZRTKES_OTHER , JIU, JJU, SIZE(PTKET,3) ) +IZRTHS_PPM = MNH_ALLOCATE_FLAT( ZRTHS_PPM , JIU, JJU, JKU ) +IZRTKES_PPM = MNH_ALLOCATE_FLAT( ZRTKES_PPM , JIU, JJU, SIZE(PTKET,3) ) +IZR = MNH_ALLOCATE_FLAT( ZR , JIU, JJU, JKU, SIZE(PRT, 4) ) +IZSV = MNH_ALLOCATE_FLAT( ZSV , JIU, JJU, JKU, SIZE(PSVT,4) ) +IZSNWC = MNH_ALLOCATE_FLAT( ZSNWC , JIU, JJU, JKU, NBLOWSNOW_2D ) +IZSNWC_INIT = MNH_ALLOCATE_FLAT( ZSNWC_INIT , JIU, JJU, JKU, NBLOWSNOW_2D ) +IZRSNWCS = MNH_ALLOCATE_FLAT( ZRSNWCS , JIU, JJU, JKU, NBLOWSNOW_2D ) +IZRRS_OTHER = MNH_ALLOCATE_FLAT( ZRRS_OTHER , JIU, JJU, JKU, SIZE(PRT, 4) ) +IZRSVS_OTHER = MNH_ALLOCATE_FLAT( ZRSVS_OTHER , JIU, JJU, JKU, SIZE(PSVT,4) ) +IZRSNWCS_OTHER = MNH_ALLOCATE_FLAT( ZRSNWCS_OTHER, JIU, JJU, JKU, NBLOWSNOW_2D ) +IZRRS_PPM = MNH_ALLOCATE_FLAT( ZRRS_PPM , JIU, JJU, JKU, SIZE(PRT, 4) ) +IZRSVS_PPM = MNH_ALLOCATE_FLAT( ZRSVS_PPM , JIU, JJU, JKU, SIZE(PSVT,4) ) +IZRSNWCS_PPM = MNH_ALLOCATE_FLAT( ZRSNWCS_PPM , JIU, JJU, JKU, NBLOWSNOW_2D ) +IZRHOX1 = MNH_ALLOCATE_FLAT( ZRHOX1 , JIU, JJU, JKU ) +IZRHOX2 = MNH_ALLOCATE_FLAT( ZRHOX2 , JIU, JJU, JKU ) +IZRHOY1 = MNH_ALLOCATE_FLAT( ZRHOY1 , JIU, JJU, JKU ) +IZRHOY2 = MNH_ALLOCATE_FLAT( ZRHOY2 , JIU, JJU, JKU ) +IZRHOZ1 = MNH_ALLOCATE_FLAT( ZRHOZ1 , JIU, JJU, JKU ) +IZRHOZ2 = MNH_ALLOCATE_FLAT( ZRHOZ2 , JIU, JJU, JKU ) +IZT = MNH_ALLOCATE_FLAT( ZT , JIU, JJU, JKU ) +IZEXN = MNH_ALLOCATE_FLAT( ZEXN , JIU, JJU, JKU ) +IZLV = MNH_ALLOCATE_FLAT( ZLV , JIU, JJU, JKU ) +IZLS = MNH_ALLOCATE_FLAT( ZLS , JIU, JJU, JKU ) +IZCPH = MNH_ALLOCATE_FLAT( ZCPH , JIU, JJU, JKU ) #endif !$acc data present( ZRUCPPM, ZRVCPPM, ZRWCPPM, ZCFLU, ZCFLV, ZCFLW, ZCFL, ZTH, & @@ -1113,23 +1113,15 @@ deallocate ( ZRUCPPM, ZRVCPPM, ZRWCPPM, ZCFLU, ZCFLV, ZCFLW, ZCFL, ZTH, ZRRS_PPM, ZRSVS_PPM, ZRSNWCS_PPM, ZRHOX1, ZRHOX2, ZRHOY1, ZRHOY2, ZRHOZ1, ZRHOZ2, & ZT, ZEXN, ZLV, ZLS, ZCPH ) #else -CALL MNH_REL_ZT3D ( IZRHOX1, IZRHOX2, IZRHOY1, IZRHOY2, IZRHOZ1, IZRHOZ2, & - IZT, IZEXN, IZLV, IZLS, IZCPH ) +CALL MNH_RELEASE_FLAT ( IZRHOX1, IZRHOX2, IZRHOY1, IZRHOY2, IZRHOZ1, IZRHOZ2, & + IZT, IZEXN, IZLV, IZLS, IZCPH ) -CALL MNH_REL_ZT4D ( NBLOWSNOW_2D , IZRSNWCS_PPM ) -CALL MNH_REL_ZT4D ( SIZE(PSVT,4) , IZRSVS_PPM ) -CALL MNH_REL_ZT4D ( SIZE(PRT, 4) , IZRRS_PPM ) -CALL MNH_REL_ZT4D ( NBLOWSNOW_2D , IZRSNWCS_OTHER ) -CALL MNH_REL_ZT4D ( SIZE(PSVT,4) , IZRSVS_OTHER ) -CALL MNH_REL_ZT4D ( SIZE(PRT, 4) , IZRRS_OTHER ) -CALL MNH_REL_ZT4D ( NBLOWSNOW_2D , IZRSNWCS ) -CALL MNH_REL_ZT4D ( NBLOWSNOW_2D , IZSNWC_INIT ) -CALL MNH_REL_ZT4D ( NBLOWSNOW_2D , IZSNWC ) -CALL MNH_REL_ZT4D ( SIZE(PSVT,4) , IZSV ) -CALL MNH_REL_ZT4D ( SIZE(PRT, 4) , IZR ) +CALL MNH_RELEASE_FLAT ( IZR, IZSV, IZSNWC, IZSNWC_INIT, IZRSNWCS, IZRRS_OTHER, IZRSVS_OTHER, & + IZRSNWCS_OTHER, IZRRS_PPM, IZRSVS_PPM, IZRSNWCS_PPM) + +CALL MNH_RELEASE_FLAT ( IZRUCPPM, IZRVCPPM, IZRWCPPM, IZCFLU, IZCFLV, IZCFLW, IZCFL, IZTH, & + IZTKE, IZRTHS_OTHER, IZRTKES_OTHER, IZRTHS_PPM, IZRTKES_PPM ) -CALL MNH_REL_ZT3D ( IZRUCPPM, IZRVCPPM, IZRWCPPM, IZCFLU, IZCFLV, IZCFLW, IZCFL, IZTH, & - IZTKE, IZRTHS_OTHER, IZRTKES_OTHER, IZRTHS_PPM, IZRTKES_PPM ) CALL MNH_CHECK_OUT_ZT3D("ADVECTION_METSV") #endif diff --git a/src/MNH/advection_uvw.f90 b/src/MNH/advection_uvw.f90 index f6e1f9bfe..24047a92f 100644 --- a/src/MNH/advection_uvw.f90 +++ b/src/MNH/advection_uvw.f90 @@ -1,4 +1,4 @@ -!MNH_LIC Copyright 1994-2021 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 1994-2022 CNRS, Meteo-France and Universite Paul Sabatier !MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence !MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt !MNH_LIC for details. version 1. @@ -107,7 +107,7 @@ use mode_budget, only: Budget_store_init, Budget_store_end USE MODE_ll #ifdef MNH_OPENACC USE MODE_DEVICE -USE MODE_MNH_ZWORK, ONLY : ZT3D, MNH_ALLOCATE_ZT3D, MNH_GET_ZT3D , MNH_REL_ZT3D, MNH_GET_ZT4D , MNH_REL_ZT4D +USE MODE_MNH_ZWORK, ONLY : ZT3D, MNH_GET_ZT3D , MNH_REL_ZT3D, MNH_GET_ZT4D , MNH_REL_ZT4D #endif use mode_mppdb diff --git a/src/MNH/emoist.f90 b/src/MNH/emoist.f90 index 50d6d0779..962e7961e 100644 --- a/src/MNH/emoist.f90 +++ b/src/MNH/emoist.f90 @@ -101,7 +101,7 @@ USE MODD_CST USE MODD_DYN_n, ONLY : LOCEAN #ifdef MNH_OPENACC -USE MODE_MNH_ZWORK +USE MODE_MNH_ZWORK, ONLY: MNH_ALLOCATE_FLAT, MNH_RELEASE_FLAT #endif use mode_mppdb @@ -160,8 +160,8 @@ JKU = size( pthlm, 3 ) allocate( za (JIU,JJU,JKU) ) allocate( zrw (JIU,JJU,JKU ) ) #else -IZA = MNH_ALLOCATE_ZT3D( za , JIU,JJU,JKU ) -IZRW = MNH_ALLOCATE_ZT3D( zrw , JIU,JJU,JKU ) +IZA = MNH_ALLOCATE_FLAT( za, JIU, JJU, JKU ) +IZRW = MNH_ALLOCATE_FLAT( zrw, JIU, JJU, JKU ) #endif !$acc data present( za, zrw ) @@ -272,7 +272,7 @@ end if #ifndef MNH_OPENACC deallocate( za, zrw ) #else -CALL MNH_REL_ZT3D( iza, izrw ) +CALL MNH_RELEASE_FLAT( iza, izrw ) #endif !$acc end data diff --git a/src/MNH/etheta.f90 b/src/MNH/etheta.f90 index 9e0099214..5bf6e04d4 100644 --- a/src/MNH/etheta.f90 +++ b/src/MNH/etheta.f90 @@ -1,4 +1,4 @@ -!MNH_LIC Copyright 1995-2021 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 1995-2022 CNRS, Meteo-France and Universite Paul Sabatier !MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence !MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt !MNH_LIC for details. version 1. @@ -104,7 +104,7 @@ USE MODD_CST USE MODD_DYN_n, ONLY : LOCEAN #ifdef MNH_OPENACC -USE MODE_MNH_ZWORK, ONLY: MNH_ALLOCATE_ZT3D , MNH_REL_ZT3D +USE MODE_MNH_ZWORK, ONLY: MNH_ALLOCATE_FLAT , MNH_RELEASE_FLAT #endif use mode_mppdb @@ -160,8 +160,8 @@ end if allocate( za ( size( pthlm, 1 ), size( pthlm, 2 ), size( pthlm, 3 ) ) ) allocate( zrw ( size( pthlm, 1 ), size( pthlm, 2 ), size( pthlm, 3 ) ) ) #else -iza = MNH_ALLOCATE_ZT3D( za , size( pthlm, 1 ), size( pthlm, 2 ), size( pthlm, 3 ) ) -izrw = MNH_ALLOCATE_ZT3D( zrw , size( pthlm, 1 ), size( pthlm, 2 ), size( pthlm, 3 ) ) +iza = MNH_ALLOCATE_FLAT( za , size( pthlm, 1 ), size( pthlm, 2 ), size( pthlm, 3 ) ) +izrw = MNH_ALLOCATE_FLAT( zrw , size( pthlm, 1 ), size( pthlm, 2 ), size( pthlm, 3 ) ) #endif !$acc data present( za, zrw ) @@ -251,7 +251,7 @@ end if #ifndef MNH_OPENACC deallocate (za, zrw) #else -CALL MNH_REL_ZT3D(iza, izrw) +CALL MNH_RELEASE_FLAT( iza, izrw ) #endif !$acc end data diff --git a/src/MNH/gradient_u.f90 b/src/MNH/gradient_u.f90 index 68c007167..3d89a476e 100644 --- a/src/MNH/gradient_u.f90 +++ b/src/MNH/gradient_u.f90 @@ -195,7 +195,7 @@ END FUNCTION GX_U_M USE MODI_SHUMAN_DEVICE USE MODD_CONF ! -USE MODE_MNH_ZWORK , ONLY : MNH_ALLOCATE_ZT3D , MNH_REL_ZT3D +USE MODE_MNH_ZWORK, ONLY: MNH_ALLOCATE_FLAT, MNH_RELEASE_FLAT ! IMPLICIT NONE ! @@ -224,9 +224,9 @@ JIU = size(pa, 1 ) JJU = size(pa, 2 ) JKU = size(pa, 3 ) -iztmp1_device = MNH_ALLOCATE_ZT3D( ztmp1_device,JIU,JJU,JKU ) -iztmp2_device = MNH_ALLOCATE_ZT3D( ztmp2_device,JIU,JJU,JKU ) -iztmp3_device = MNH_ALLOCATE_ZT3D( ztmp3_device,JIU,JJU,JKU ) +iztmp1_device = MNH_ALLOCATE_FLAT( ztmp1_device, JIU, JJU, JKU ) +iztmp2_device = MNH_ALLOCATE_FLAT( ztmp2_device, JIU, JJU, JKU ) +iztmp3_device = MNH_ALLOCATE_FLAT( ztmp3_device, JIU, JJU, JKU ) !$acc data present( ztmp1_device, ztmp2_device, ztmp3_device ) @@ -268,7 +268,7 @@ END IF !$acc end data -CALL MNH_REL_ZT3D(iztmp1_device,iztmp2_device,iztmp3_device) +CALL MNH_RELEASE_FLAT( iztmp1_device, iztmp2_device, iztmp3_device ) !$acc end data @@ -385,7 +385,7 @@ END FUNCTION GY_U_UV USE MODI_SHUMAN_DEVICE USE MODD_CONF ! -USE MODE_MNH_ZWORK , ONLY : MNH_ALLOCATE_ZT3D , MNH_REL_ZT3D +USE MODE_MNH_ZWORK, ONLY: MNH_ALLOCATE_FLAT, MNH_RELEASE_FLAT ! IMPLICIT NONE ! @@ -416,9 +416,9 @@ JIU = size(pa, 1 ) JJU = size(pa, 2 ) JKU = size(pa, 3 ) -iztmp1_device = MNH_ALLOCATE_ZT3D( ztmp1_device,JIU,JJU,JKU ) -iztmp2_device = MNH_ALLOCATE_ZT3D( ztmp2_device,JIU,JJU,JKU ) -iztmp3_device = MNH_ALLOCATE_ZT3D( ztmp3_device,JIU,JJU,JKU ) +iztmp1_device = MNH_ALLOCATE_FLAT( ztmp1_device, JIU, JJU, JKU ) +iztmp2_device = MNH_ALLOCATE_FLAT( ztmp2_device, JIU, JJU, JKU ) +iztmp3_device = MNH_ALLOCATE_FLAT( ztmp3_device, JIU, JJU, JKU ) !$acc data present( ztmp1_device, ztmp2_device, ztmp3_device ) @@ -468,7 +468,7 @@ END IF !$acc end data -CALL MNH_REL_ZT3D(iztmp1_device,iztmp2_device,iztmp3_device) +CALL MNH_RELEASE_FLAT( iztmp1_device, iztmp2_device, iztmp3_device ) !$acc end data @@ -568,7 +568,7 @@ END FUNCTION GZ_U_UW ! ! USE MODI_SHUMAN_DEVICE -USE MODE_MNH_ZWORK , ONLY : MNH_ALLOCATE_ZT3D , MNH_REL_ZT3D +USE MODE_MNH_ZWORK, ONLY: MNH_ALLOCATE_FLAT, MNH_RELEASE_FLAT ! IMPLICIT NONE ! @@ -594,8 +594,8 @@ JIU = size(pa, 1 ) JJU = size(pa, 2 ) JKU = size(pa, 3 ) -iztmp1_device = MNH_ALLOCATE_ZT3D( ztmp1_device,JIU,JJU,JKU ) -iztmp2_device = MNH_ALLOCATE_ZT3D( ztmp2_device,JIU,JJU,JKU ) +iztmp1_device = MNH_ALLOCATE_FLAT( ztmp1_device, JIU, JJU, JKU ) +iztmp2_device = MNH_ALLOCATE_FLAT( ztmp2_device, JIU, JJU, JKU ) !$acc data present( ztmp1_device, ztmp2_device ) @@ -611,7 +611,7 @@ PGZ_U_UW_DEVICE(:,:,:)= ZTMP1_DEVICE(:,:,:) / ZTMP2_DEVICE(:,:,:) !$acc end data -CALL MNH_REL_ZT3D(iztmp1_device,iztmp2_device) +CALL MNH_RELEASE_FLAT( iztmp1_device, iztmp2_device ) !$acc end data diff --git a/src/MNH/gradient_v.f90 b/src/MNH/gradient_v.f90 index 6bda4c104..33a49d5e1 100644 --- a/src/MNH/gradient_v.f90 +++ b/src/MNH/gradient_v.f90 @@ -193,7 +193,7 @@ END FUNCTION GY_V_M ! USE MODI_SHUMAN_DEVICE USE MODD_CONF -USE MODE_MNH_ZWORK , ONLY : MNH_ALLOCATE_ZT3D , MNH_REL_ZT3D +USE MODE_MNH_ZWORK, ONLY: MNH_ALLOCATE_FLAT, MNH_RELEASE_FLAT ! IMPLICIT NONE ! @@ -225,9 +225,9 @@ JIU = size(pa, 1 ) JJU = size(pa, 2 ) JKU = size(pa, 3 ) -iztmp1_device = MNH_ALLOCATE_ZT3D( ztmp1_device,JIU,JJU,JKU ) -iztmp2_device = MNH_ALLOCATE_ZT3D( ztmp2_device,JIU,JJU,JKU ) -iztmp3_device = MNH_ALLOCATE_ZT3D( ztmp3_device,JIU,JJU,JKU ) +iztmp1_device = MNH_ALLOCATE_FLAT( ztmp1_device, JIU, JJU, JKU ) +iztmp2_device = MNH_ALLOCATE_FLAT( ztmp2_device, JIU, JJU, JKU ) +iztmp3_device = MNH_ALLOCATE_FLAT( ztmp3_device, JIU, JJU, JKU ) !$acc data present( ztmp1_device, ztmp2_device, ztmp3_device ) @@ -270,7 +270,7 @@ END IF !$acc end data -CALL MNH_REL_ZT3D(iztmp1_device,iztmp2_device,iztmp3_device) +CALL MNH_RELEASE_FLAT( iztmp1_device, iztmp2_device, iztmp3_device ) !$acc end data @@ -385,7 +385,7 @@ END FUNCTION GX_V_UV ! USE MODI_SHUMAN_DEVICE USE MODD_CONF -USE MODE_MNH_ZWORK , ONLY : MNH_ALLOCATE_ZT3D , MNH_REL_ZT3D +USE MODE_MNH_ZWORK, ONLY: MNH_ALLOCATE_FLAT, MNH_RELEASE_FLAT ! IMPLICIT NONE ! @@ -415,10 +415,10 @@ JIU = size(pa, 1 ) JJU = size(pa, 2 ) JKU = size(pa, 3 ) -iztmp1_device = MNH_ALLOCATE_ZT3D( ztmp1_device,JIU,JJU,JKU ) -iztmp2_device = MNH_ALLOCATE_ZT3D( ztmp2_device,JIU,JJU,JKU ) -iztmp3_device = MNH_ALLOCATE_ZT3D( ztmp3_device,JIU,JJU,JKU ) -iztmp4_device = MNH_ALLOCATE_ZT3D( ztmp4_device,JIU,JJU,JKU ) +iztmp1_device = MNH_ALLOCATE_FLAT( ztmp1_device, JIU, JJU, JKU ) +iztmp2_device = MNH_ALLOCATE_FLAT( ztmp2_device, JIU, JJU, JKU ) +iztmp3_device = MNH_ALLOCATE_FLAT( ztmp3_device, JIU, JJU, JKU ) +iztmp4_device = MNH_ALLOCATE_FLAT( ztmp4_device, JIU, JJU, JKU ) !$acc data present( ztmp1_device, ztmp2_device, ztmp3_device, ztmp4_device ) @@ -468,7 +468,7 @@ END IF !$acc end data -CALL MNH_REL_ZT3D(iztmp1_device,iztmp2_device,iztmp3_device,iztmp4_device) +CALL MNH_RELEASE_FLAT( iztmp1_device, iztmp2_device, iztmp3_device, iztmp4_device ) !$acc end data @@ -570,7 +570,7 @@ END FUNCTION GZ_V_VW ! USE MODI_SHUMAN_DEVICE USE MODI_SHUMAN -USE MODE_MNH_ZWORK , ONLY : MNH_ALLOCATE_ZT3D , MNH_REL_ZT3D +USE MODE_MNH_ZWORK, ONLY: MNH_ALLOCATE_FLAT, MNH_RELEASE_FLAT ! IMPLICIT NONE ! @@ -596,8 +596,8 @@ JIU = size(pa, 1 ) JJU = size(pa, 2 ) JKU = size(pa, 3 ) -iztmp1_device = MNH_ALLOCATE_ZT3D( ztmp1_device,JIU,JJU,JKU ) -iztmp2_device = MNH_ALLOCATE_ZT3D( ztmp2_device,JIU,JJU,JKU ) +iztmp1_device = MNH_ALLOCATE_FLAT( ztmp1_device, JIU, JJU, JKU ) +iztmp2_device = MNH_ALLOCATE_FLAT( ztmp2_device, JIU, JJU, JKU ) !$acc data present( ztmp1_device, ztmp2_device ) @@ -613,7 +613,7 @@ PGZ_V_VW_DEVICE(:,:,:)= ZTMP1_DEVICE(:,:,:) / ZTMP2_DEVICE(:,:,:) !$acc end data -CALL MNH_REL_ZT3D(iztmp1_device,iztmp2_device) +CALL MNH_RELEASE_FLAT( iztmp1_device, iztmp2_device ) !$acc end data @@ -621,4 +621,3 @@ CALL MNH_REL_ZT3D(iztmp1_device,iztmp2_device) ! END SUBROUTINE GZ_V_VW_DEVICE #endif - diff --git a/src/MNH/gradient_w.f90 b/src/MNH/gradient_w.f90 index 4a73fc8a2..7053c663e 100644 --- a/src/MNH/gradient_w.f90 +++ b/src/MNH/gradient_w.f90 @@ -174,7 +174,7 @@ END FUNCTION GZ_W_M ! USE MODI_SHUMAN_DEVICE USE MODI_SHUMAN -USE MODE_MNH_ZWORK , ONLY : MNH_ALLOCATE_ZT3D , MNH_REL_ZT3D +USE MODE_MNH_ZWORK, ONLY: MNH_ALLOCATE_FLAT, MNH_RELEASE_FLAT ! IMPLICIT NONE ! @@ -200,8 +200,8 @@ JIU = size(pa, 1 ) JJU = size(pa, 2 ) JKU = size(pa, 3 ) -iztmp1_device = MNH_ALLOCATE_ZT3D( ztmp1_device,JIU,JJU,JKU ) -iztmp2_device = MNH_ALLOCATE_ZT3D( ztmp2_device,JIU,JJU,JKU ) +iztmp1_device = MNH_ALLOCATE_FLAT( ztmp1_device, JIU, JJU, JKU ) +iztmp2_device = MNH_ALLOCATE_FLAT( ztmp2_device, JIU, JJU, JKU ) !$acc data present( ztmp1_device, ztmp2_device ) @@ -217,7 +217,7 @@ PGZ_W_M_DEVICE(:,:,:)= ZTMP1_DEVICE(:,:,:)/ZTMP2_DEVICE(:,:,:) !$acc end data -CALL MNH_REL_ZT3D(iztmp1_device,iztmp2_device) +CALL MNH_RELEASE_FLAT( iztmp1_device, iztmp2_device ) !$acc end data @@ -323,7 +323,7 @@ END FUNCTION GX_W_UW ! USE MODI_SHUMAN_DEVICE USE MODD_CONF -USE MODE_MNH_ZWORK , ONLY : MNH_ALLOCATE_ZT3D , MNH_REL_ZT3D +USE MODE_MNH_ZWORK, ONLY: MNH_ALLOCATE_FLAT, MNH_RELEASE_FLAT ! IMPLICIT NONE ! @@ -351,11 +351,11 @@ JIU = size(pa, 1 ) JJU = size(pa, 2 ) JKU = size(pa, 3 ) -iztmp1_device = MNH_ALLOCATE_ZT3D( ztmp1_device,JIU,JJU,JKU ) -iztmp2_device = MNH_ALLOCATE_ZT3D( ztmp2_device,JIU,JJU,JKU ) -iztmp3_device = MNH_ALLOCATE_ZT3D( ztmp3_device,JIU,JJU,JKU ) -iztmp4_device = MNH_ALLOCATE_ZT3D( ztmp4_device,JIU,JJU,JKU ) -iztmp5_device = MNH_ALLOCATE_ZT3D( ztmp5_device,JIU,JJU,JKU ) +iztmp1_device = MNH_ALLOCATE_FLAT( ztmp1_device, JIU, JJU, JKU ) +iztmp2_device = MNH_ALLOCATE_FLAT( ztmp2_device, JIU, JJU, JKU ) +iztmp3_device = MNH_ALLOCATE_FLAT( ztmp3_device, JIU, JJU, JKU ) +iztmp4_device = MNH_ALLOCATE_FLAT( ztmp4_device, JIU, JJU, JKU ) +iztmp5_device = MNH_ALLOCATE_FLAT( ztmp5_device, JIU, JJU, JKU ) !$acc data present( ztmp1_device, ztmp2_device, ztmp3_device, ztmp4_device, ztmp5_device ) @@ -388,7 +388,7 @@ END IF !$acc end data -CALL MNH_REL_ZT3D( iztmp1_device, iztmp2_device, iztmp3_device, iztmp4_device, iztmp5_device ) +CALL MNH_RELEASE_FLAT( iztmp1_device, iztmp2_device, iztmp3_device, iztmp4_device, iztmp5_device ) !$acc end data @@ -494,7 +494,7 @@ END FUNCTION GY_W_VW ! USE MODI_SHUMAN_DEVICE USE MODD_CONF -USE MODE_MNH_ZWORK , ONLY : MNH_ALLOCATE_ZT3D , MNH_REL_ZT3D +USE MODE_MNH_ZWORK, ONLY: MNH_ALLOCATE_FLAT, MNH_RELEASE_FLAT ! IMPLICIT NONE ! @@ -523,11 +523,11 @@ JIU = size(pa, 1 ) JJU = size(pa, 2 ) JKU = size(pa, 3 ) -iztmp1_device = MNH_ALLOCATE_ZT3D( ztmp1_device,JIU,JJU,JKU ) -iztmp2_device = MNH_ALLOCATE_ZT3D( ztmp2_device,JIU,JJU,JKU ) -iztmp3_device = MNH_ALLOCATE_ZT3D( ztmp3_device,JIU,JJU,JKU ) -iztmp4_device = MNH_ALLOCATE_ZT3D( ztmp4_device,JIU,JJU,JKU ) -iztmp5_device = MNH_ALLOCATE_ZT3D( ztmp5_device,JIU,JJU,JKU ) +iztmp1_device = MNH_ALLOCATE_FLAT( ztmp1_device, JIU, JJU, JKU ) +iztmp2_device = MNH_ALLOCATE_FLAT( ztmp2_device, JIU, JJU, JKU ) +iztmp3_device = MNH_ALLOCATE_FLAT( ztmp3_device, JIU, JJU, JKU ) +iztmp4_device = MNH_ALLOCATE_FLAT( ztmp4_device, JIU, JJU, JKU ) +iztmp5_device = MNH_ALLOCATE_FLAT( ztmp5_device, JIU, JJU, JKU ) !$acc data present( ztmp1_device, ztmp2_device, ztmp3_device, ztmp4_device, ztmp5_device ) @@ -560,7 +560,7 @@ END IF !$acc end data -CALL MNH_REL_ZT3D( iztmp1_device, iztmp2_device, iztmp3_device, iztmp4_device, iztmp5_device ) +CALL MNH_RELEASE_FLAT( iztmp1_device, iztmp2_device, iztmp3_device, iztmp4_device, iztmp5_device ) !$acc end data diff --git a/src/MNH/ice4_fast_rg.f90 b/src/MNH/ice4_fast_rg.f90 index 0577bfbf4..039cd33f8 100644 --- a/src/MNH/ice4_fast_rg.f90 +++ b/src/MNH/ice4_fast_rg.f90 @@ -1,4 +1,4 @@ -!MNH_LIC Copyright 1994-2021 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 1994-2022 CNRS, Meteo-France and Universite Paul Sabatier !MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence !MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt !MNH_LIC for details. version 1. @@ -108,7 +108,7 @@ USE MODD_RAIN_ICE_PARAM, ONLY: NDRYLBDAG,NDRYLBDAR,NDRYLBDAS,X0DEPG,X1DEPG,XCOLE XLBRDRYG2,XLBRDRYG3,XLBSDRYG1,XLBSDRYG2,XLBSDRYG3,XRCFRI #ifdef MNH_OPENACC -USE MODE_MNH_ZWORK, ONLY: MNH_ALLOCATE_FLAT, MNH_ALLOCATE_IT1DP, MNH_RELEASE_FLAT, MNH_REL_GT1DFLAT, MNH_REL_IT1D +USE MODE_MNH_ZWORK, ONLY: MNH_ALLOCATE_FLAT, MNH_RELEASE_FLAT, MNH_REL_GT1DFLAT, MNH_REL_IT1DFLAT #endif USE MODE_MPPDB @@ -257,9 +257,9 @@ allocate( zzw ( isize ) ) allocate( zrdryg_init( isize ) ) allocate( zrwetg_init( isize ) ) #else -II1 = MNH_ALLOCATE_IT1DP( I1, ISIZE ) -IIVEC1 = MNH_ALLOCATE_IT1DP( IVEC1, ISIZE ) -IIVEC2 = MNH_ALLOCATE_IT1DP( IVEC2, ISIZE ) +II1 = MNH_ALLOCATE_FLAT( I1, ISIZE ) +IIVEC1 = MNH_ALLOCATE_FLAT( IVEC1, ISIZE ) +IIVEC2 = MNH_ALLOCATE_FLAT( IVEC2, ISIZE ) IDXGDRY = MNH_ALLOCATE_FLAT( gdry, isize ) @@ -867,9 +867,9 @@ CALL MNH_RELEASE_FLAT( IZDRY ) CALL MNH_REL_GT1DFLAT( IDXGDRY ) -CALL MNH_REL_IT1D( IIVEC2 ) -CALL MNH_REL_IT1D( IIVEC1 ) -CALL MNH_REL_IT1D( II1 ) +CALL MNH_REL_IT1DFLAT( IIVEC2 ) +CALL MNH_REL_IT1DFLAT( IIVEC1 ) +CALL MNH_REL_IT1DFLAT( II1 ) #endif !$acc end data diff --git a/src/MNH/ice4_fast_rs.f90 b/src/MNH/ice4_fast_rs.f90 index ea3c59731..1304368e4 100644 --- a/src/MNH/ice4_fast_rs.f90 +++ b/src/MNH/ice4_fast_rs.f90 @@ -94,7 +94,7 @@ USE MODD_RAIN_ICE_PARAM, ONLY: NACCLBDAR,NACCLBDAS,NGAMINC,X0DEPS,X1DEPS,XACCINT XRIMINTP1,XRIMINTP2,XSRIMCG,XSRIMCG2,XSRIMCG3 #ifdef MNH_OPENACC -USE MODE_MNH_ZWORK, ONLY: MNH_ALLOCATE_FLAT, MNH_ALLOCATE_IT1DP, MNH_RELEASE_FLAT, MNH_REL_GT1DFLAT, MNH_REL_IT1D +USE MODE_MNH_ZWORK, ONLY: MNH_ALLOCATE_FLAT, MNH_RELEASE_FLAT, MNH_REL_GT1DFLAT, MNH_REL_IT1DFLAT #endif USE MODE_MPPDB @@ -218,9 +218,9 @@ allocate( zzw2 ( isize ) ) allocate( zzw6 ( isize ) ) allocate( zfreez_rate ( isize ) ) #else -II1 = MNH_ALLOCATE_IT1DP( I1, ISIZE ) -IIVEC1 = MNH_ALLOCATE_IT1DP( IVEC1, ISIZE ) -IIVEC2 = MNH_ALLOCATE_IT1DP( IVEC2, ISIZE ) +II1 = MNH_ALLOCATE_FLAT( I1, ISIZE ) +IIVEC1 = MNH_ALLOCATE_FLAT( IVEC1, ISIZE ) +IIVEC2 = MNH_ALLOCATE_FLAT( IVEC2, ISIZE ) IDXGRIM = MNH_ALLOCATE_FLAT( grim, ISIZE ) IDXGACC = MNH_ALLOCATE_FLAT( gacc, ISIZE ) @@ -783,9 +783,9 @@ CALL MNH_RELEASE_FLAT( IZRIM ) CALL MNH_REL_GT1DFLAT( IDXGACC ) CALL MNH_REL_GT1DFLAT( IDXGRIM ) -CALL MNH_REL_IT1D( IIVEC2 ) -CALL MNH_REL_IT1D( IIVEC1 ) -CALL MNH_REL_IT1D( II1 ) +CALL MNH_REL_IT1DFLAT( IIVEC2 ) +CALL MNH_REL_IT1DFLAT( IIVEC1 ) +CALL MNH_REL_IT1DFLAT( II1 ) #endif !$acc end data diff --git a/src/MNH/ice4_sedimentation_split.f90 b/src/MNH/ice4_sedimentation_split.f90 index b6ff2f792..d500c1a0c 100644 --- a/src/MNH/ice4_sedimentation_split.f90 +++ b/src/MNH/ice4_sedimentation_split.f90 @@ -403,9 +403,7 @@ USE MODD_RAIN_ICE_DESCR, ONLY: XCC,XCEXVT,XDC,XLBEXC,XRTMIN USE MODD_RAIN_ICE_PARAM, ONLY: XEXCSEDI,XEXSEDG,XEXSEDH,XEXSEDR,XEXSEDS,XFSEDG,XFSEDH,XFSEDI,XFSEDR,XFSEDS #ifdef MNH_OPENACC -USE MODE_MNH_ZWORK, ONLY: MNH_ALLOCATE_FLAT, MNH_ALLOCATE_IT1D, MNH_ALLOCATE_ZT1D, & - MNH_ALLOCATE_ZT2D, MNH_ALLOCATE_ZT3DP, & - MNH_RELEASE_FLAT, MNH_REL_IT1D, MNH_REL_ZT1D, MNH_REL_ZT3D +USE MODE_MNH_ZWORK, ONLY: MNH_ALLOCATE_FLAT, MNH_RELEASE_FLAT, MNH_REL_IT1DFLAT #endif use mode_mppdb @@ -491,16 +489,16 @@ allocate( zremaint(size( prhodref, 1 ), size( prhodref, 2 ) ) ) allocate( zwsed(size( prhodref, 1 ), size( prhodref, 2 ), 0 : size( prhodref, 3 ) + 1 ) ) #else -II1 = MNH_ALLOCATE_IT1D( i1, kit * kjt * kkt ) -II2 = MNH_ALLOCATE_IT1D( i2, kit * kjt * kkt ) -II3 = MNH_ALLOCATE_IT1D( i3, kit * kjt * kkt ) +II1 = MNH_ALLOCATE_FLAT( i1, kit * kjt * kkt ) +II2 = MNH_ALLOCATE_FLAT( i2, kit * kjt * kkt ) +II3 = MNH_ALLOCATE_FLAT( i3, kit * kjt * kkt ) -IZMRCHANGE = MNH_ALLOCATE_ZT2D( zmrchange, kit, kjt ) -IZMAX_TSTEP = MNH_ALLOCATE_ZT2D( zmax_tstep, kit, kjt ) +IZMRCHANGE = MNH_ALLOCATE_FLAT( zmrchange, kit, kjt ) +IZMAX_TSTEP = MNH_ALLOCATE_FLAT( zmax_tstep, kit, kjt ) IZRSMIN = MNH_ALLOCATE_FLAT( zrsmin, Size( xrtmin ) ) -IZREMAINT = MNH_ALLOCATE_ZT2D( zremaint, Size( prhodref, 1 ), Size( prhodref, 2 ) ) +IZREMAINT = MNH_ALLOCATE_FLAT( zremaint, Size( prhodref, 1 ), Size( prhodref, 2 ) ) IZWSED = MNH_ALLOCATE_FLAT( zwsed, 1, Size( prhodref, 1 ), 1, Size( prhodref, 2 ), 0, Size( prhodref, 3 ) + 1 ) #endif @@ -724,10 +722,10 @@ deallocate( i3 ) deallocate( i2 ) deallocate( i1 ) #else -CALL MNH_REL_IT1D( ii1, ii2, ii3 ) -CALL MNH_RELEASE_FLAT( IZWSED ) -CALL MNH_RELEASE_FLAT( IZRSMIN ) -CALL MNH_REL_ZT3D( IZMRCHANGE, IZMAX_TSTEP, IZREMAINT ) +CALL MNH_REL_IT1DFLAT( ii3 ) +CALL MNH_REL_IT1DFLAT( ii2 ) +CALL MNH_REL_IT1DFLAT( ii1 ) +CALL MNH_RELEASE_FLAT( IZMRCHANGE, IZMAX_TSTEP, IZRSMIN, IZREMAINT, IZWSED ) #endif !$acc end data diff --git a/src/MNH/ice4_tendencies.f90 b/src/MNH/ice4_tendencies.f90 index 2329e5d1b..6e6d056ec 100644 --- a/src/MNH/ice4_tendencies.f90 +++ b/src/MNH/ice4_tendencies.f90 @@ -1,4 +1,4 @@ -!MNH_LIC Copyright 1994-2021 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 1994-2022 CNRS, Meteo-France and Universite Paul Sabatier !MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence !MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt !MNH_LIC for details. version 1. @@ -186,7 +186,7 @@ USE MODD_RAIN_ICE_DESCR, ONLY: XLBDAS_MAX,XLBEXG,XLBEXH,XLBEXR,XLBEXS,XLBG,XLBH, USE MODD_RAIN_ICE_PARAM, ONLY: XSCFAC #ifdef MNH_OPENACC -USE MODE_MNH_ZWORK, ONLY: MNH_ALLOCATE_FLAT, MNH_ALLOCATE_ZT3D, MNH_RELEASE_FLAT, MNH_REL_ZT3D +USE MODE_MNH_ZWORK, ONLY: MNH_ALLOCATE_FLAT, MNH_RELEASE_FLAT #endif USE MODI_ICE4_COMPUTE_PDF @@ -458,10 +458,10 @@ IZLBDAR_RF = MNH_ALLOCATE_FLAT( zlbdar_rf, isize ) IZRGSI = MNH_ALLOCATE_FLAT( zrgsi, isize ) IZRGSI_MR = MNH_ALLOCATE_FLAT( zrgsi_mr, isize ) -IZRRT3D = MNH_ALLOCATE_ZT3D( zrrt3d, kit, kjt, kkt ) -IZRST3D = MNH_ALLOCATE_ZT3D( zrst3d, kit, kjt, kkt ) -IZRGT3D = MNH_ALLOCATE_ZT3D( zrgt3d, kit, kjt, kkt ) -IZRHT3D = MNH_ALLOCATE_ZT3D( zrht3d, kit, kjt, kkt ) +IZRRT3D = MNH_ALLOCATE_FLAT( zrrt3d, kit, kjt, kkt ) +IZRST3D = MNH_ALLOCATE_FLAT( zrst3d, kit, kjt, kkt ) +IZRGT3D = MNH_ALLOCATE_FLAT( zrgt3d, kit, kjt, kkt ) +IZRHT3D = MNH_ALLOCATE_FLAT( zrht3d, kit, kjt, kkt ) #endif !$acc data create( GLDCOMPUTE ) & @@ -1011,7 +1011,7 @@ deallocate( zrvt ) deallocate( zwetg ) deallocate( gldcompute ) #else -CALL MNH_REL_ZT3D( IZRRT3D, IZRST3D, IZRGT3D, IZRHT3D ) +CALL MNH_RELEASE_FLAT( IZRRT3D, IZRST3D, IZRGT3D, IZRHT3D ) CALL MNH_RELEASE_FLAT( IZRGSI_MR ) CALL MNH_RELEASE_FLAT( IZRGSI ) CALL MNH_RELEASE_FLAT( IZLBDAR_RF ) diff --git a/src/MNH/mode_mnh_zwork.f90 b/src/MNH/mode_mnh_zwork.f90 index 8bcc98143..bbd89b7cb 100644 --- a/src/MNH/mode_mnh_zwork.f90 +++ b/src/MNH/mode_mnh_zwork.f90 @@ -54,23 +54,23 @@ MODULE MODE_MNH_ZWORK TYPE(TMODEL) , DIMENSION(10) :: MODEL - INTEGER, parameter :: JPMAX_T3D_G = 12 + INTEGER, parameter :: JPMAX_T3D_G = 1 INTEGER , ALLOCATABLE, DIMENSION (:) :: NT3D_POOL_G INTEGER :: NT3D_TOP_G , NT3D_TOP_G_MAX = 0 LOGICAL,SAVE , ALLOCATABLE, TARGET , DIMENSION(:,:,:,:) :: GT3D LOGICAL,SAVE , ALLOCATABLE, TARGET , DIMENSION(:,:) :: GT2D_OSIZE - INTEGER, parameter :: JPMAX_T3D_I = 4 + INTEGER, parameter :: JPMAX_T3D_I = 1 INTEGER , ALLOCATABLE, DIMENSION (:) :: NT3D_POOL_I INTEGER :: NT3D_TOP_I , NT3D_TOP_I_MAX = 0 INTEGER,SAVE , ALLOCATABLE, TARGET , DIMENSION(:,:,:,:) :: IT3D - INTEGER, parameter :: JPMAX_T1D_R = 60 + INTEGER, parameter :: JPMAX_T1D_R = 10 INTEGER , ALLOCATABLE, DIMENSION (:) :: NT1D_POOL_R INTEGER :: NT1D_TOP_R , NT1D_TOP_R_MAX = 0 REAL,SAVE , ALLOCATABLE, TARGET , DIMENSION(:,:) :: ZT1D - INTEGER, parameter :: JPMAX_T1D_I = 30 + INTEGER, parameter :: JPMAX_T1D_I = 1 INTEGER , ALLOCATABLE, DIMENSION (:) :: NT1D_POOL_I INTEGER :: NT1D_TOP_I , NT1D_TOP_I_MAX = 0 INTEGER,SAVE , ALLOCATABLE, TARGET , DIMENSION(:,:) :: IT1D @@ -104,7 +104,7 @@ MODULE MODE_MNH_ZWORK !------ Integer 1DFLAT pool - INTEGER, PARAMETER :: JPMAX_T1DFLAT_I = 10 !Used to determine max size of buffer IT1DFLAT + INTEGER, PARAMETER :: JPMAX_T1DFLAT_I = 30 !Used to determine max size of buffer IT1DFLAT !(3D size of the mesh * JPMAX_T1DFLAT_I) INTEGER, SAVE :: NPMAX_POOL_T1DFLAT_I = 100 !Maximum size of the pool (max number of arrays) INTEGER(KIND=MNHINT64), ALLOCATABLE, DIMENSION (:) :: NT1DFLAT_POOL_I !Position in ZT1DFLAT of the beginning of each array @@ -128,7 +128,7 @@ MODULE MODE_MNH_ZWORK !------ Real 1DFLAT pool - INTEGER, PARAMETER :: JPMAX_T1DFLAT_R = 60 !Used to determine max size of buffer ZT1DFLAT + INTEGER, PARAMETER :: JPMAX_T1DFLAT_R = 80 !Used to determine max size of buffer ZT1DFLAT !(3D size of the mesh * JPMAX_T1DFLAT_R) INTEGER, SAVE :: NPMAX_POOL_T1DFLAT_R = 100 !Maximum size of the pool (max number of arrays) INTEGER(KIND=MNHINT64), ALLOCATABLE, DIMENSION (:) :: NT1DFLAT_POOL_R !Position in ZT1DFLAT of the beginning of each array @@ -1814,6 +1814,7 @@ CONTAINS Write( cmnhmsg(4), "( ' 2D = ', I20 )" ) NTOT_ALLOCSIZE_GT2DFLAT Write( cmnhmsg(5), "( ' 3D = ', I20 )" ) NTOT_ALLOCSIZE_GT3DFLAT Write( cmnhmsg(6), "( ' Released = ', I20 )" ) NTOT_RELSIZE_GT1DFLAT + Write( cmnhmsg(7), "( '-------------', '--------------------' )" ) call Print_msg( NVERB_INFO, 'GEN', 'FLAT_STATS' ) @@ -1838,6 +1839,7 @@ CONTAINS Write( cmnhmsg(4), "( ' 2D = ', I20 )" ) NTOT_ALLOCSIZE_IT2DFLAT Write( cmnhmsg(5), "( ' 3D = ', I20 )" ) NTOT_ALLOCSIZE_IT3DFLAT Write( cmnhmsg(6), "( ' Released = ', I20 )" ) NTOT_RELSIZE_IT1DFLAT + Write( cmnhmsg(7), "( '-------------', '--------------------' )" ) call Print_msg( NVERB_INFO, 'GEN', 'FLAT_STATS' ) @@ -1864,6 +1866,7 @@ CONTAINS Write( cmnhmsg(5), "( ' 3D = ', I20 )" ) NTOT_ALLOCSIZE_ZT3DFLAT Write( cmnhmsg(6), "( ' 4D = ', I20 )" ) NTOT_ALLOCSIZE_ZT4DFLAT Write( cmnhmsg(7), "( ' Released = ', I20 )" ) NTOT_RELSIZE_ZT1DFLAT + Write( cmnhmsg(8), "( '-------------', '--------------------' )" ) call Print_msg( NVERB_INFO, 'GEN', 'FLAT_STATS' ) END SUBROUTINE PRINT_FLATPOOL_STATS diff --git a/src/MNH/mode_prandtl.f90 b/src/MNH/mode_prandtl.f90 index 492fa71f0..0a898573e 100644 --- a/src/MNH/mode_prandtl.f90 +++ b/src/MNH/mode_prandtl.f90 @@ -16,7 +16,7 @@ USE MODD_PARAMETERS, ONLY : JPVEXT_TURB #ifdef MNH_OPENACC use mode_msg -USE MODE_MNH_ZWORK , ONLY : MNH_ALLOCATE_ZT3D , MNH_REL_ZT3D, MNH_ALLOCATE_GT3D , MNH_REL_GT3D +USE MODE_MNH_ZWORK , ONLY : MNH_ALLOCATE_FLAT , MNH_RELEASE_FLAT, MNH_REL_GT1DFLAT #endif #ifdef MNH_BITREP @@ -47,7 +47,7 @@ INTEGER :: IZCOEF #endif #ifdef MNH_OPENACC - IZCOEF = MNH_ALLOCATE_ZT3D( ZCOEF , SIZE(PF,1),SIZE(PF,2),SIZE(PF,3) ) + IZCOEF = MNH_ALLOCATE_FLAT( ZCOEF , SIZE(PF,1),SIZE(PF,2),SIZE(PF,3) ) #endif !$acc data present( PPHI3, PF_LIM, PF ) present( ZCOEF ) @@ -68,7 +68,7 @@ PF(:,:,:) = ZCOEF(:,:,:) * PF & !$acc end data #ifdef MNH_OPENACC -CALL MNH_REL_ZT3D(IZCOEF) +CALL MNH_RELEASE_FLAT(IZCOEF) #endif END SUBROUTINE SMOOTH_TURB_FUNCT @@ -115,9 +115,9 @@ allocate( zw1 ( size( predth1, 1 ), size( predth1, 2 ), size( predth1, 3 ) allocate( zw2 ( size( predth1, 1 ), size( predth1, 2 ), size( predth1, 3 ) ) ) allocate( gphi3logic( size( predth1, 1 ), size( predth1, 2 ), size( predth1, 3 ) ) ) #else -izw1 = MNH_ALLOCATE_ZT3D( zw1 , JIU,JJU,JKU ) -izw2 = MNH_ALLOCATE_ZT3D( zw2 , JIU,JJU,JKU ) -igphi3logic = MNH_ALLOCATE_GT3D( gphi3logic, JIU,JJU,JKU ) +izw1 = MNH_ALLOCATE_FLAT( zw1 , JIU,JJU,JKU ) +izw2 = MNH_ALLOCATE_FLAT( zw2 , JIU,JJU,JKU ) +igphi3logic = MNH_ALLOCATE_FLAT( gphi3logic, JIU,JJU,JKU ) #endif !$acc data present( zw1, zw2, gphi3logic ) @@ -190,8 +190,8 @@ PPHI3(:,:,IKE+1)=PPHI3(:,:,IKE) #ifndef MNH_OPENACC deallocate ( zw1,zw2,gphi3logic) #else -CALL MNH_REL_ZT3D(IZW1,IZW2) -CALL MNH_REL_GT3D(IGPHI3LOGIC) +CALL MNH_RELEASE_FLAT(IZW1,IZW2) +CALL MNH_REL_GT1DFLAT(IGPHI3LOGIC) #endif !$acc end data @@ -232,7 +232,7 @@ SUBROUTINE PSI_SV(PREDTH1,PREDR1,PREDS1,PRED2THS,PRED2RS,PPHI3,PPSI3,PPSI_SV) #ifndef MNH_OPENACC allocate( gpsilogic( size( pred2ths, 1 ), size( pred2ths, 2 ), size( pred2ths, 3 ) ) ) #else -igpsilogic = MNH_ALLOCATE_GT3D( gpsilogic , size( pred2ths, 1 ), size( pred2ths, 2 ), size( pred2ths, 3 ) ) +igpsilogic = MNH_ALLOCATE_FLAT( gpsilogic , size( pred2ths, 1 ), size( pred2ths, 2 ), size( pred2ths, 3 ) ) #endif !$acc data present( gpsilogic ) @@ -269,7 +269,7 @@ END DO #ifndef MNH_OPENACC deallocate( gpsilogic ) #else -CALL MNH_REL_GT3D(IGPSILOGIC) +CALL MNH_REL_GT1DFLAT(IGPSILOGIC) #endif !$acc end data @@ -469,7 +469,7 @@ SUBROUTINE D_PHI3DTDZ2_O_DDTDZ(PPHI3,PREDTH1,PREDR1,PRED2TH3,PRED2THR3,PDTDZ,HTU !$acc data present( PPHI3, PREDTH1, PREDR1, PRED2TH3, PRED2THR3, PDTDZ, PD_PHI3DTDZ2_O_DDTDZ ) #ifdef MNH_OPENACC -iztmp1_device = MNH_ALLOCATE_ZT3D( ztmp1_device, size( predth1, 1 ), size( predth1, 2 ), size( predth1, 3 ) ) +iztmp1_device = MNH_ALLOCATE_FLAT( ztmp1_device, size( predth1, 1 ), size( predth1, 2 ), size( predth1, 3 ) ) #endif !$acc data present( ztmp1_device ) @@ -547,7 +547,7 @@ PD_PHI3DTDZ2_O_DDTDZ(:,:,IKE+1)=PD_PHI3DTDZ2_O_DDTDZ(:,:,IKE) !$acc end data #ifdef MNH_OPENACC -CALL MNH_REL_ZT3D( iztmp1_device ) +CALL MNH_RELEASE_FLAT( iztmp1_device ) #endif !$acc end data diff --git a/src/MNH/modeln.f90 b/src/MNH/modeln.f90 index de3e496b0..b75a4f185 100644 --- a/src/MNH/modeln.f90 +++ b/src/MNH/modeln.f90 @@ -579,8 +579,8 @@ allocate( ZRVS (SIZE(XTHT,1),SIZE(XTHT,2),SIZE(XTHT,3)) ) allocate( ZRWS (SIZE(XTHT,1),SIZE(XTHT,2),SIZE(XTHT,3)) ) allocate( ZPABST(SIZE(XTHT,1),SIZE(XTHT,2),SIZE(XTHT,3)) ) #else -IZRWS = MNH_ALLOCATE_FLAT( ZRWS, 1, SIZE( XTHT, 1 ), 1, SIZE( XTHT, 2 ), 1, SIZE( XTHT, 3 ) ) -IZPABST = MNH_ALLOCATE_FLAT( ZPABST, 1, SIZE( XTHT, 1 ), 1, SIZE( XTHT, 2 ), 1, SIZE( XTHT, 3 ) ) +IZRWS = MNH_ALLOCATE_FLAT( ZRWS, SIZE( XTHT, 1 ), SIZE( XTHT, 2 ), SIZE( XTHT, 3 ) ) +IZPABST = MNH_ALLOCATE_FLAT( ZPABST, SIZE( XTHT, 1 ), SIZE( XTHT, 2 ), SIZE( XTHT, 3 ) ) IZSEA = -1 !Set to -1 because not (yet) allocated IZTOWN = -1 !Set to -1 because not (yet) allocated #endif @@ -1941,8 +1941,8 @@ IF (CCLOUD /= 'NONE' .AND. CELEC == 'NONE') THEN ALLOCATE (ZSEA(SIZE(XRHODJ,1),SIZE(XRHODJ,2))) ALLOCATE (ZTOWN(SIZE(XRHODJ,1),SIZE(XRHODJ,2))) #else - IZSEA = MNH_ALLOCATE_FLAT( ZSEA, 1, SIZE( XRHODJ, 1 ), 1, SIZE( XRHODJ, 2 ) ) - IZTOWN = MNH_ALLOCATE_FLAT( ZTOWN, 1, SIZE( XRHODJ, 1 ), 1, SIZE( XRHODJ, 2 ) ) + IZSEA = MNH_ALLOCATE_FLAT( ZSEA, SIZE( XRHODJ, 1 ), SIZE( XRHODJ, 2 ) ) + IZTOWN = MNH_ALLOCATE_FLAT( ZTOWN, SIZE( XRHODJ, 1 ), SIZE( XRHODJ, 2 ) ) #endif CALL MNHGET_SURF_PARAM_n (PSEA=ZSEA(:,:),PTOWN=ZTOWN(:,:)) !$acc update device( ZSEA, ZTOWN ) @@ -2056,8 +2056,8 @@ IF (CELEC /= 'NONE' .AND. (CCLOUD(1:3) == 'ICE')) THEN ALLOCATE (ZSEA(SIZE(XRHODJ,1),SIZE(XRHODJ,2))) ALLOCATE (ZTOWN(SIZE(XRHODJ,1),SIZE(XRHODJ,2))) #else - IZSEA = MNH_ALLOCATE_FLAT( ZSEA, 1, SIZE( XRHODJ, 1 ), 1, SIZE( XRHODJ, 2 ) ) - IZTOWN = MNH_ALLOCATE_FLAT( ZTOWN, 1, SIZE( XRHODJ, 1 ), 1, SIZE( XRHODJ, 2 ) ) + IZSEA = MNH_ALLOCATE_FLAT( ZSEA, SIZE( XRHODJ, 1 ), SIZE( XRHODJ, 2 ) ) + IZTOWN = MNH_ALLOCATE_FLAT( ZTOWN, SIZE( XRHODJ, 1 ), SIZE( XRHODJ, 2 ) ) #endif CALL MNHGET_SURF_PARAM_n (PSEA=ZSEA(:,:),PTOWN=ZTOWN(:,:)) CALL RESOLVED_ELEC_n (CCLOUD, CSCONV, CMF_CLOUD, & diff --git a/src/MNH/prandtl.f90 b/src/MNH/prandtl.f90 index d87bca878..41ebf0536 100644 --- a/src/MNH/prandtl.f90 +++ b/src/MNH/prandtl.f90 @@ -219,8 +219,7 @@ USE MODI_SHUMAN_DEVICE #endif ! #ifdef MNH_OPENACC -USE MODE_MNH_ZWORK , ONLY : MNH_ALLOCATE_ZT3D , MNH_REL_ZT3D, & - MNH_CHECK_IN_ZT3D,MNH_CHECK_OUT_ZT3D +USE MODE_MNH_ZWORK, ONLY: MNH_ALLOCATE_FLAT, MNH_RELEASE_FLAT #endif ! IMPLICIT NONE @@ -337,17 +336,16 @@ JKU = size( pthlm, 3 ) allocate( zw1(JIU,JJU,JKU ) ) allocate( zw2(JIU,JJU,JKU ) ) #else -CALL MNH_CHECK_IN_ZT3D("PRANDTL") -izw1 = MNH_ALLOCATE_ZT3D( zw1, JIU,JJU,JKU ) -izw2 = MNH_ALLOCATE_ZT3D( zw2, JIU,JJU,JKU ) +izw1 = MNH_ALLOCATE_FLAT( zw1, JIU,JJU,JKU ) +izw2 = MNH_ALLOCATE_FLAT( zw2, JIU,JJU,JKU ) #endif #ifdef MNH_OPENACC -iztmp1_device = MNH_ALLOCATE_ZT3D( ztmp1_device, JIU,JJU,JKU ) -iztmp2_device = MNH_ALLOCATE_ZT3D( ztmp2_device, JIU,JJU,JKU ) -iztmp3_device = MNH_ALLOCATE_ZT3D( ztmp3_device, JIU,JJU,JKU ) -iztmp4_device = MNH_ALLOCATE_ZT3D( ztmp4_device, JIU,JJU,JKU ) -iztmp5_device = MNH_ALLOCATE_ZT3D( ztmp5_device, JIU,JJU,JKU ) +iztmp1_device = MNH_ALLOCATE_FLAT( ztmp1_device, JIU,JJU,JKU ) +iztmp2_device = MNH_ALLOCATE_FLAT( ztmp2_device, JIU,JJU,JKU ) +iztmp3_device = MNH_ALLOCATE_FLAT( ztmp3_device, JIU,JJU,JKU ) +iztmp4_device = MNH_ALLOCATE_FLAT( ztmp4_device, JIU,JJU,JKU ) +iztmp5_device = MNH_ALLOCATE_FLAT( ztmp5_device, JIU,JJU,JKU ) #endif !$acc data present( zw1, zw2, ztmp1_device, ztmp2_device, ztmp3_device, ztmp4_device, ztmp5_device ) @@ -1265,8 +1263,7 @@ end if !$acc end data #ifdef MNH_OPENACC -CALL MNH_REL_ZT3D(IZW1, IZW2,IZTMP1_DEVICE,IZTMP2_DEVICE,IZTMP3_DEVICE,IZTMP4_DEVICE,IZTMP5_DEVICE) -CALL MNH_CHECK_OUT_ZT3D("PRANDTL") +CALL MNH_RELEASE_FLAT( IZW1, IZW2, IZTMP1_DEVICE, IZTMP2_DEVICE, IZTMP3_DEVICE, IZTMP4_DEVICE, IZTMP5_DEVICE ) #else DEALLOCATE(ZW1,ZW2) #endif diff --git a/src/MNH/rain_ice.f90 b/src/MNH/rain_ice.f90 index ff06abb2e..4e6708e61 100644 --- a/src/MNH/rain_ice.f90 +++ b/src/MNH/rain_ice.f90 @@ -1,4 +1,4 @@ -!MNH_LIC Copyright 1995-2021 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 1995-2022 CNRS, Meteo-France and Universite Paul Sabatier !MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence !MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt !MNH_LIC for details. version 1. @@ -255,9 +255,7 @@ USE MODI_BITREP #endif USE MODI_ICE4_RAINFR_VERT #ifdef MNH_OPENACC -USE MODE_MNH_ZWORK , ONLY : MNH_ALLOCATE_ZT3D , MNH_REL_ZT3D, MNH_ALLOCATE_ZT1DP , MNH_REL_ZT1D , & - MNH_ALLOCATE_GT3D , MNH_REL_GT3D, & - MNH_ALLOCATE_IT1D , MNH_REL_IT1D +USE MODE_MNH_ZWORK , ONLY : MNH_ALLOCATE_FLAT, MNH_RELEASE_FLAT, MNH_REL_GT1DFLAT, MNH_REL_IT1DFLAT #endif IMPLICIT NONE @@ -502,9 +500,9 @@ IIJKU = IIU * IJU * IKU #ifndef MNH_OPENACC ALLOCATE( I1(SIZE(PEXNREF)), I2(SIZE(PEXNREF)), I3(SIZE(PEXNREF)) ) #else -II1 = MNH_ALLOCATE_IT1D( I1, IIJKU ) -II2 = MNH_ALLOCATE_IT1D( I2, IIJKU ) -II3 = MNH_ALLOCATE_IT1D( I3, IIJKU ) +II1 = MNH_ALLOCATE_FLAT( I1, IIJKU ) +II2 = MNH_ALLOCATE_FLAT( I2, IIJKU ) +II3 = MNH_ALLOCATE_FLAT( I3, IIJKU ) #endif #ifndef MNH_OPENACC @@ -514,13 +512,13 @@ ALLOCATE( ZRS (IIU,IJU,IKU) ) ALLOCATE( ZRG (IIU,IJU,IKU) ) ALLOCATE( ZT (IIU,IJU,IKU) ) #else -IGMICRO = MNH_ALLOCATE_GT3D( GMICRO, IIU,IJU,IKU ) -IZRR = MNH_ALLOCATE_ZT3D( ZRR, IIU,IJU,IKU ) -IZRS = MNH_ALLOCATE_ZT3D( ZRS, IIU,IJU,IKU ) -IZRG = MNH_ALLOCATE_ZT3D( ZRG, IIU,IJU,IKU ) -IZRS_ZERO = MNH_ALLOCATE_ZT3D( ZRS_ZERO,IIU,IJU,IKU ) -IZRG_ZERO = MNH_ALLOCATE_ZT3D( ZRG_ZERO,IIU,IJU,IKU ) -IZT = MNH_ALLOCATE_ZT3D( ZT, IIU,IJU,IKU ) +IGMICRO = MNH_ALLOCATE_FLAT( GMICRO, IIU,IJU,IKU ) +IZRR = MNH_ALLOCATE_FLAT( ZRR, IIU,IJU,IKU ) +IZRS = MNH_ALLOCATE_FLAT( ZRS, IIU,IJU,IKU ) +IZRG = MNH_ALLOCATE_FLAT( ZRG, IIU,IJU,IKU ) +IZRS_ZERO = MNH_ALLOCATE_FLAT( ZRS_ZERO,IIU,IJU,IKU ) +IZRG_ZERO = MNH_ALLOCATE_FLAT( ZRG_ZERO,IIU,IJU,IKU ) +IZT = MNH_ALLOCATE_FLAT( ZT, IIU,IJU,IKU ) #endif !$acc data present( I1, I2, I3, GMICRO, ZRR, ZRS, ZRG, ZRS_ZERO, ZRG_ZERO, ZT ) @@ -654,73 +652,73 @@ IF( IMICRO >= 0 ) THEN ALLOCATE(ZRHODJ(0)) END IF #else -IZRVT = MNH_ALLOCATE_ZT1DP(ZRVT,IMICRO) -IZRCT = MNH_ALLOCATE_ZT1DP(ZRCT,IMICRO) -IZRRT = MNH_ALLOCATE_ZT1DP(ZRRT,IMICRO) -IZRIT = MNH_ALLOCATE_ZT1DP(ZRIT,IMICRO) -IZRST = MNH_ALLOCATE_ZT1DP(ZRST,IMICRO) -IZRGT = MNH_ALLOCATE_ZT1DP(ZRGT,IMICRO) +IZRVT = MNH_ALLOCATE_FLAT(ZRVT,IMICRO) +IZRCT = MNH_ALLOCATE_FLAT(ZRCT,IMICRO) +IZRRT = MNH_ALLOCATE_FLAT(ZRRT,IMICRO) +IZRIT = MNH_ALLOCATE_FLAT(ZRIT,IMICRO) +IZRST = MNH_ALLOCATE_FLAT(ZRST,IMICRO) +IZRGT = MNH_ALLOCATE_FLAT(ZRGT,IMICRO) IF ( KRR == 7 ) THEN -IZRHT = MNH_ALLOCATE_ZT1DP(ZRHT,IMICRO) +IZRHT = MNH_ALLOCATE_FLAT(ZRHT,IMICRO) ELSE -IZRHT = MNH_ALLOCATE_ZT1DP(ZRHT,0) +IZRHT = MNH_ALLOCATE_FLAT(ZRHT,0) END IF -IZCIT = MNH_ALLOCATE_ZT1DP(ZCIT,IMICRO) -IZRVS = MNH_ALLOCATE_ZT1DP(ZRVS,IMICRO) -IZRCS = MNH_ALLOCATE_ZT1DP(ZRCS,IMICRO) -IZRRS = MNH_ALLOCATE_ZT1DP(ZRRS,IMICRO) -IZRIS = MNH_ALLOCATE_ZT1DP(ZRIS,IMICRO) -IZRSS = MNH_ALLOCATE_ZT1DP(ZRSS,IMICRO) -IZRGS = MNH_ALLOCATE_ZT1DP(ZRGS,IMICRO) +IZCIT = MNH_ALLOCATE_FLAT(ZCIT,IMICRO) +IZRVS = MNH_ALLOCATE_FLAT(ZRVS,IMICRO) +IZRCS = MNH_ALLOCATE_FLAT(ZRCS,IMICRO) +IZRRS = MNH_ALLOCATE_FLAT(ZRRS,IMICRO) +IZRIS = MNH_ALLOCATE_FLAT(ZRIS,IMICRO) +IZRSS = MNH_ALLOCATE_FLAT(ZRSS,IMICRO) +IZRGS = MNH_ALLOCATE_FLAT(ZRGS,IMICRO) IF ( KRR == 7 ) THEN -IZRHS = MNH_ALLOCATE_ZT1DP(ZRHS,IMICRO) +IZRHS = MNH_ALLOCATE_FLAT(ZRHS,IMICRO) ELSE -IZRHS = MNH_ALLOCATE_ZT1DP(ZRHS,0) +IZRHS = MNH_ALLOCATE_FLAT(ZRHS,0) END IF -IZTHS = MNH_ALLOCATE_ZT1DP(ZTHS,IMICRO) -IZTHT = MNH_ALLOCATE_ZT1DP(ZTHT,IMICRO) -IZTHLT = MNH_ALLOCATE_ZT1DP(ZTHLT,IMICRO) -IZRHODREF = MNH_ALLOCATE_ZT1DP(ZRHODREF,IMICRO) -IZZT = MNH_ALLOCATE_ZT1DP(ZZT,IMICRO) -IZPRES = MNH_ALLOCATE_ZT1DP(ZPRES,IMICRO) -IZEXNREF = MNH_ALLOCATE_ZT1DP(ZEXNREF,IMICRO) -IZSIGMA_RC = MNH_ALLOCATE_ZT1DP(ZSIGMA_RC,IMICRO) -IZCF = MNH_ALLOCATE_ZT1DP(ZCF,IMICRO) -IZRF = MNH_ALLOCATE_ZT1DP(ZRF,IMICRO) -IZHLC_HCF = MNH_ALLOCATE_ZT1DP(ZHLC_HCF,IMICRO) -IZHLC_LCF = MNH_ALLOCATE_ZT1DP(ZHLC_LCF,IMICRO) -IZHLC_HRC = MNH_ALLOCATE_ZT1DP(ZHLC_HRC,IMICRO) -IZHLC_LRC = MNH_ALLOCATE_ZT1DP(ZHLC_LRC,IMICRO) -IZHLC_RCMAX = MNH_ALLOCATE_ZT1DP(ZHLC_RCMAX,IMICRO) -IZRCRAUTC = MNH_ALLOCATE_ZT1DP(ZRCRAUTC,IMICRO) -IZHLC_HRCLOCAL = MNH_ALLOCATE_ZT1DP(ZHLC_HRCLOCAL,IMICRO) -IZHLC_LRCLOCAL = MNH_ALLOCATE_ZT1DP(ZHLC_LRCLOCAL,IMICRO) -! -IZZW = MNH_ALLOCATE_ZT1DP(ZZW,IMICRO) -IZLSFACT = MNH_ALLOCATE_ZT1DP(ZLSFACT,IMICRO) -IZLVFACT = MNH_ALLOCATE_ZT1DP(ZLVFACT,IMICRO) -IZUSW = MNH_ALLOCATE_ZT1DP(ZUSW,IMICRO) -IZSSI = MNH_ALLOCATE_ZT1DP(ZSSI,IMICRO) -IZLBDAR = MNH_ALLOCATE_ZT1DP(ZLBDAR,IMICRO) -IZLBDAR_RF = MNH_ALLOCATE_ZT1DP(ZLBDAR_RF,IMICRO) -IZLBDAS = MNH_ALLOCATE_ZT1DP(ZLBDAS,IMICRO) -IZLBDAG = MNH_ALLOCATE_ZT1DP(ZLBDAG,IMICRO) +IZTHS = MNH_ALLOCATE_FLAT(ZTHS,IMICRO) +IZTHT = MNH_ALLOCATE_FLAT(ZTHT,IMICRO) +IZTHLT = MNH_ALLOCATE_FLAT(ZTHLT,IMICRO) +IZRHODREF = MNH_ALLOCATE_FLAT(ZRHODREF,IMICRO) +IZZT = MNH_ALLOCATE_FLAT(ZZT,IMICRO) +IZPRES = MNH_ALLOCATE_FLAT(ZPRES,IMICRO) +IZEXNREF = MNH_ALLOCATE_FLAT(ZEXNREF,IMICRO) +IZSIGMA_RC = MNH_ALLOCATE_FLAT(ZSIGMA_RC,IMICRO) +IZCF = MNH_ALLOCATE_FLAT(ZCF,IMICRO) +IZRF = MNH_ALLOCATE_FLAT(ZRF,IMICRO) +IZHLC_HCF = MNH_ALLOCATE_FLAT(ZHLC_HCF,IMICRO) +IZHLC_LCF = MNH_ALLOCATE_FLAT(ZHLC_LCF,IMICRO) +IZHLC_HRC = MNH_ALLOCATE_FLAT(ZHLC_HRC,IMICRO) +IZHLC_LRC = MNH_ALLOCATE_FLAT(ZHLC_LRC,IMICRO) +IZHLC_RCMAX = MNH_ALLOCATE_FLAT(ZHLC_RCMAX,IMICRO) +IZRCRAUTC = MNH_ALLOCATE_FLAT(ZRCRAUTC,IMICRO) +IZHLC_HRCLOCAL = MNH_ALLOCATE_FLAT(ZHLC_HRCLOCAL,IMICRO) +IZHLC_LRCLOCAL = MNH_ALLOCATE_FLAT(ZHLC_LRCLOCAL,IMICRO) +! +IZZW = MNH_ALLOCATE_FLAT(ZZW,IMICRO) +IZLSFACT = MNH_ALLOCATE_FLAT(ZLSFACT,IMICRO) +IZLVFACT = MNH_ALLOCATE_FLAT(ZLVFACT,IMICRO) +IZUSW = MNH_ALLOCATE_FLAT(ZUSW,IMICRO) +IZSSI = MNH_ALLOCATE_FLAT(ZSSI,IMICRO) +IZLBDAR = MNH_ALLOCATE_FLAT(ZLBDAR,IMICRO) +IZLBDAR_RF = MNH_ALLOCATE_FLAT(ZLBDAR_RF,IMICRO) +IZLBDAS = MNH_ALLOCATE_FLAT(ZLBDAS,IMICRO) +IZLBDAG = MNH_ALLOCATE_FLAT(ZLBDAG,IMICRO) IF ( KRR == 7 ) THEN -IZLBDAH = MNH_ALLOCATE_ZT1DP(ZLBDAH,IMICRO) +IZLBDAH = MNH_ALLOCATE_FLAT(ZLBDAH,IMICRO) ELSE -IZLBDAH = MNH_ALLOCATE_ZT1DP(ZLBDAH,0) +IZLBDAH = MNH_ALLOCATE_FLAT(ZLBDAH,0) END IF -IZRDRYG = MNH_ALLOCATE_ZT1DP(ZRDRYG,IMICRO) -IZRWETG = MNH_ALLOCATE_ZT1DP(ZRWETG,IMICRO) -IZAI = MNH_ALLOCATE_ZT1DP(ZAI,IMICRO) -IZCJ = MNH_ALLOCATE_ZT1DP(ZCJ,IMICRO) -IZKA = MNH_ALLOCATE_ZT1DP(ZKA,IMICRO) -IZDV = MNH_ALLOCATE_ZT1DP(ZDV,IMICRO) +IZRDRYG = MNH_ALLOCATE_FLAT(ZRDRYG,IMICRO) +IZRWETG = MNH_ALLOCATE_FLAT(ZRWETG,IMICRO) +IZAI = MNH_ALLOCATE_FLAT(ZAI,IMICRO) +IZCJ = MNH_ALLOCATE_FLAT(ZCJ,IMICRO) +IZKA = MNH_ALLOCATE_FLAT(ZKA,IMICRO) +IZDV = MNH_ALLOCATE_FLAT(ZDV,IMICRO) ! IF (LBU_ENABLE .OR. LLES_CALL .OR. LCHECK ) THEN -IZRHODJ = MNH_ALLOCATE_ZT1DP(ZRHODJ,IMICRO) +IZRHODJ = MNH_ALLOCATE_FLAT(ZRHODJ,IMICRO) ELSE -IZRHODJ = MNH_ALLOCATE_ZT1DP(ZRHODJ,0) +IZRHODJ = MNH_ALLOCATE_FLAT(ZRHODJ,0) END IF #endif @@ -1238,14 +1236,14 @@ IZRHODJ = MNH_ALLOCATE_ZT1DP(ZRHODJ,0) DEALLOCATE(ZHLC_HRCLOCAL) DEALLOCATE(ZHLC_LRCLOCAL) #else - CALL MNH_REL_ZT1D(IZKA,IZDV,IZRHODJ) - CALL MNH_REL_ZT1D(IZLBDAS,IZLBDAG,IZLBDAH,IZRDRYG,IZRWETG,IZAI,IZCJ) - CALL MNH_REL_ZT1D(IZZW,IZLSFACT,IZLVFACT,IZUSW,IZSSI,IZLBDAR,IZLBDAR_RF) - CALL MNH_REL_ZT1D(IZRCRAUTC,IZHLC_HRCLOCAL,IZHLC_LRCLOCAL) - CALL MNH_REL_ZT1D(IZHLC_HCF,IZHLC_LCF,IZHLC_HRC,IZHLC_LRC,IZHLC_RCMAX) - CALL MNH_REL_ZT1D(IZRHODREF,IZZT,IZPRES,IZEXNREF,IZSIGMA_RC,IZCF,IZRF) - CALL MNH_REL_ZT1D(IZRVS,IZRCS,IZRRS,IZRIS,IZRSS,IZRGS,IZRHS,IZTHS,IZTHT,IZTHLT) - CALL MNH_REL_ZT1D(IZRVT,IZRCT,IZRRT,IZRIT,IZRST,IZRGT,IZRHT,IZCIT) + CALL MNH_RELEASE_FLAT(IZKA,IZDV,IZRHODJ) + CALL MNH_RELEASE_FLAT(IZLBDAS,IZLBDAG,IZLBDAH,IZRDRYG,IZRWETG,IZAI,IZCJ) + CALL MNH_RELEASE_FLAT(IZZW,IZLSFACT,IZLVFACT,IZUSW,IZSSI,IZLBDAR,IZLBDAR_RF) + CALL MNH_RELEASE_FLAT(IZRCRAUTC,IZHLC_HRCLOCAL,IZHLC_LRCLOCAL) + CALL MNH_RELEASE_FLAT(IZHLC_HCF,IZHLC_LCF,IZHLC_HRC,IZHLC_LRC,IZHLC_RCMAX) + CALL MNH_RELEASE_FLAT(IZRHODREF,IZZT,IZPRES,IZEXNREF,IZSIGMA_RC,IZCF,IZRF) + CALL MNH_RELEASE_FLAT(IZRVS,IZRCS,IZRRS,IZRIS,IZRSS,IZRGS,IZRHS,IZTHS,IZTHT,IZTHLT) + CALL MNH_RELEASE_FLAT(IZRVT,IZRCT,IZRRT,IZRIT,IZRST,IZRGT,IZRHT,IZCIT) #endif END IF ! @@ -1312,9 +1310,11 @@ END IF DEALLOCATE ( I1,I2,I3 ) DEALLOCATE ( GMICRO, ZRR, ZRS, ZRG, ZT ) #else -CALL MNH_REL_IT1D(II1, II2, II3) -CALL MNH_REL_GT3D ( IGMICRO ) -CALL MNH_REL_ZT3D ( IZRR, IZRS, IZRG, IZRS_ZERO, IZRG_ZERO, IZT ) +CALL MNH_REL_IT1DFLAT( II3 ) +CALL MNH_REL_IT1DFLAT( II2 ) +CALL MNH_REL_IT1DFLAT( II1 ) +CALL MNH_REL_GT1DFLAT ( IGMICRO ) +CALL MNH_RELEASE_FLAT( IZRR, IZRS, IZRG, IZRS_ZERO, IZRG_ZERO, IZT ) #endif !$acc end data diff --git a/src/MNH/rain_ice_nucleation.f90 b/src/MNH/rain_ice_nucleation.f90 index 4fcdd4718..494f012b1 100644 --- a/src/MNH/rain_ice_nucleation.f90 +++ b/src/MNH/rain_ice_nucleation.f90 @@ -46,9 +46,7 @@ use modi_bitrep #endif #ifdef MNH_OPENACC -USE MODE_MNH_ZWORK , ONLY : MNH_ALLOCATE_ZT3D , MNH_REL_ZT3D, MNH_ALLOCATE_ZT1DP , MNH_REL_ZT1D , & - MNH_ALLOCATE_GT3D , MNH_REL_GT3D, & - MNH_ALLOCATE_IT1D ,MNH_ALLOCATE_IT1DP , MNH_REL_IT1D +USE MODE_MNH_ZWORK, ONLY: MNH_ALLOCATE_FLAT, MNH_RELEASE_FLAT, MNH_REL_GT1DFLAT, MNH_REL_IT1DFLAT #endif IMPLICIT NONE @@ -157,11 +155,11 @@ allocate( i3( JIJKU ) ) allocate( gnegt( JIU,JJU,JKU ) ) allocate( zw ( JIU,JJU,JKU ) ) #else -II1 = MNH_ALLOCATE_IT1D( i1, JIJKU ) -II2 = MNH_ALLOCATE_IT1D( i2, JIJKU ) -II3 = MNH_ALLOCATE_IT1D( i3, JIJKU ) -IGNEGT = MNH_ALLOCATE_GT3D( gnegt, JIU,JJU,JKU ) -IZW = MNH_ALLOCATE_ZT3D( zw , JIU,JJU,JKU ) +II1 = MNH_ALLOCATE_FLAT( i1, JIJKU ) +II2 = MNH_ALLOCATE_FLAT( i2, JIJKU ) +II3 = MNH_ALLOCATE_FLAT( i3, JIJKU ) +IGNEGT = MNH_ALLOCATE_FLAT( gnegt, JIU,JJU,JKU ) +IZW = MNH_ALLOCATE_FLAT( zw , JIU,JJU,JKU ) #endif !$acc data present( i1, i2, i3, gnegt, zw ) @@ -205,13 +203,13 @@ IF( INEGT >= 1 ) THEN ALLOCATE(ZUSW(INEGT)) ALLOCATE(ZSSI(INEGT)) #else - IZRVT = MNH_ALLOCATE_ZT1DP(ZRVT,INEGT) - IZCIT = MNH_ALLOCATE_ZT1DP(ZCIT,INEGT) - IZZT = MNH_ALLOCATE_ZT1DP(ZZT,INEGT) - IZPRES = MNH_ALLOCATE_ZT1DP(ZPRES,INEGT) - IZZW = MNH_ALLOCATE_ZT1DP(ZZW,INEGT) - IZUSW = MNH_ALLOCATE_ZT1DP(ZUSW,INEGT) - IZSSI = MNH_ALLOCATE_ZT1DP(ZSSI,INEGT) + IZRVT = MNH_ALLOCATE_FLAT( ZRVT, INEGT ) + IZCIT = MNH_ALLOCATE_FLAT( ZCIT, INEGT ) + IZZT = MNH_ALLOCATE_FLAT( ZZT, INEGT ) + IZPRES = MNH_ALLOCATE_FLAT( ZPRES, INEGT ) + IZZW = MNH_ALLOCATE_FLAT( ZZW, INEGT ) + IZUSW = MNH_ALLOCATE_FLAT( ZUSW, INEGT ) + IZSSI = MNH_ALLOCATE_FLAT( ZSSI, INEGT ) #endif !$acc data present( zrvt, zcit, zzt, zpres, zzw, zusw, zssi ) @@ -350,7 +348,7 @@ END IF DEALLOCATE(ZCIT) DEALLOCATE(ZRVT) #else - CALL MNH_REL_ZT1D(izrvt, izcit, izzt, izpres, izzw, izusw, izssi) + CALL MNH_RELEASE_FLAT( izrvt, izcit, izzt, izpres, izzw, izusw, izssi ) #endif END IF @@ -374,9 +372,11 @@ END IF #ifndef MNH_OPENACC deallocate (i1, i2, i3, gnegt, zw ) #else -CALL MNH_REL_IT1D(ii1, ii2, ii3) -CALL MNH_REL_GT3D(IGNEGT) -CALL MNH_REL_ZT3D(IZW) +CALL MNH_REL_IT1DFLAT( ii3 ) +CALL MNH_REL_IT1DFLAT( ii2 ) +CALL MNH_REL_IT1DFLAT( ii1 ) +CALL MNH_REL_GT1DFLAT( IGNEGT ) +CALL MNH_RELEASE_FLAT( IZW ) #endif !$acc end data diff --git a/src/MNH/rain_ice_sedimentation_split.f90 b/src/MNH/rain_ice_sedimentation_split.f90 index 38f7f55e3..39ab2ffd7 100644 --- a/src/MNH/rain_ice_sedimentation_split.f90 +++ b/src/MNH/rain_ice_sedimentation_split.f90 @@ -52,9 +52,7 @@ USE MODI_BITREP #endif #ifdef MNH_OPENACC -USE MODE_MNH_ZWORK , ONLY : MNH_ALLOCATE_ZT3D , MNH_ALLOCATE_ZT2D, MNH_REL_ZT3D, MNH_ALLOCATE_ZT1DP , MNH_REL_ZT1D , & - MNH_ALLOCATE_GT3D , MNH_ALLOCATE_GT2D, MNH_REL_GT3D, & - MNH_ALLOCATE_IT1D , MNH_REL_IT1D +USE MODE_MNH_ZWORK, ONLY: MNH_ALLOCATE_FLAT, MNH_RELEASE_FLAT, MNH_REL_GT1DFLAT, MNH_REL_IT1DFLAT #endif IMPLICIT NONE @@ -217,24 +215,24 @@ ALLOCATE( II1(IIJKU), II2(IIJKU), II3(IIJKU) ) ALLOCATE( IG1(IIJKU), IG2(IIJKU), IG3(IIJKU) ) ALLOCATE( IH1(IIJKU), IH2(IIJKU), IH3(IIJKU) ) #else -IIC1 = MNH_ALLOCATE_IT1D(IC1,IIJKU) -IIC2 = MNH_ALLOCATE_IT1D(IC2,IIJKU) -IIC3 = MNH_ALLOCATE_IT1D(IC3,IIJKU) -IIR1 = MNH_ALLOCATE_IT1D(IR1,IIJKU) -IIR2 = MNH_ALLOCATE_IT1D(IR2,IIJKU) -IIR3 = MNH_ALLOCATE_IT1D(IR3,IIJKU) -IIS1 = MNH_ALLOCATE_IT1D(IS1,IIJKU) -IIS2 = MNH_ALLOCATE_IT1D(IS2,IIJKU) -IIS3 = MNH_ALLOCATE_IT1D(IS3,IIJKU) -III1 = MNH_ALLOCATE_IT1D(II1,IIJKU) -III2 = MNH_ALLOCATE_IT1D(II2,IIJKU) -III3 = MNH_ALLOCATE_IT1D(II3,IIJKU) -IIG1 = MNH_ALLOCATE_IT1D(IG1,IIJKU) -IIG2 = MNH_ALLOCATE_IT1D(IG2,IIJKU) -IIG3 = MNH_ALLOCATE_IT1D(IG3,IIJKU) -IIH1 = MNH_ALLOCATE_IT1D(IH1,IIJKU) -IIH2 = MNH_ALLOCATE_IT1D(IH2,IIJKU) -IIH3 = MNH_ALLOCATE_IT1D(IH3,IIJKU) +IIC1 = MNH_ALLOCATE_FLAT(IC1,IIJKU) +IIC2 = MNH_ALLOCATE_FLAT(IC2,IIJKU) +IIC3 = MNH_ALLOCATE_FLAT(IC3,IIJKU) +IIR1 = MNH_ALLOCATE_FLAT(IR1,IIJKU) +IIR2 = MNH_ALLOCATE_FLAT(IR2,IIJKU) +IIR3 = MNH_ALLOCATE_FLAT(IR3,IIJKU) +IIS1 = MNH_ALLOCATE_FLAT(IS1,IIJKU) +IIS2 = MNH_ALLOCATE_FLAT(IS2,IIJKU) +IIS3 = MNH_ALLOCATE_FLAT(IS3,IIJKU) +III1 = MNH_ALLOCATE_FLAT(II1,IIJKU) +III2 = MNH_ALLOCATE_FLAT(II2,IIJKU) +III3 = MNH_ALLOCATE_FLAT(II3,IIJKU) +IIG1 = MNH_ALLOCATE_FLAT(IG1,IIJKU) +IIG2 = MNH_ALLOCATE_FLAT(IG2,IIJKU) +IIG3 = MNH_ALLOCATE_FLAT(IG3,IIJKU) +IIH1 = MNH_ALLOCATE_FLAT(IH1,IIJKU) +IIH2 = MNH_ALLOCATE_FLAT(IH2,IIJKU) +IIH3 = MNH_ALLOCATE_FLAT(IH3,IIJKU) #endif #ifndef MNH_OPENACC ALLOCATE( GDEP(IIU,IJU) ) @@ -245,13 +243,13 @@ ALLOCATE( GSEDIMS(IIU,IJU,IKU) ) ALLOCATE( GSEDIMG(IIU,IJU,IKU) ) ALLOCATE( GSEDIMH(IIU,IJU,IKU) ) #else -IGDEP = MNH_ALLOCATE_GT2D( GDEP,IIU,IJU ) -IGSEDIMR = MNH_ALLOCATE_GT3D( GSEDIMR,IIU,IJU,IKU ) -IGSEDIMC = MNH_ALLOCATE_GT3D( GSEDIMC,IIU,IJU,IKU ) -IGSEDIMI = MNH_ALLOCATE_GT3D( GSEDIMI,IIU,IJU,IKU ) -IGSEDIMS = MNH_ALLOCATE_GT3D( GSEDIMS,IIU,IJU,IKU ) -IGSEDIMG = MNH_ALLOCATE_GT3D( GSEDIMG,IIU,IJU,IKU ) -IGSEDIMH = MNH_ALLOCATE_GT3D( GSEDIMH,IIU,IJU,IKU ) +IGDEP = MNH_ALLOCATE_FLAT( GDEP,IIU,IJU ) +IGSEDIMR = MNH_ALLOCATE_FLAT( GSEDIMR,IIU,IJU,IKU ) +IGSEDIMC = MNH_ALLOCATE_FLAT( GSEDIMC,IIU,IJU,IKU ) +IGSEDIMI = MNH_ALLOCATE_FLAT( GSEDIMI,IIU,IJU,IKU ) +IGSEDIMS = MNH_ALLOCATE_FLAT( GSEDIMS,IIU,IJU,IKU ) +IGSEDIMG = MNH_ALLOCATE_FLAT( GSEDIMG,IIU,IJU,IKU ) +IGSEDIMH = MNH_ALLOCATE_FLAT( GSEDIMH,IIU,IJU,IKU ) #endif ALLOCATE( ZRTMIN(SIZE(XRTMIN)) ) #ifndef MNH_OPENACC @@ -273,22 +271,22 @@ ALLOCATE( ZPRHS (IIU,IJU,IKU) ) ALLOCATE( ZW (IIU,IJU,IKU) ) ALLOCATE( ZWSED (IIU,IJU,0:IKU+1) ) #else -IZCONC_TMP = MNH_ALLOCATE_ZT2D( ZCONC_TMP,IIU,IJU ) -IZOMPSEA = MNH_ALLOCATE_ZT2D( ZOMPSEA ,IIU,IJU ) -IZTMP1_2D = MNH_ALLOCATE_ZT2D( ZTMP1_2D ,IIU,IJU ) -IZTMP2_2D = MNH_ALLOCATE_ZT2D( ZTMP2_2D ,IIU,IJU ) -IZTMP3_2D = MNH_ALLOCATE_ZT2D( ZTMP3_2D ,IIU,IJU ) -IZTMP4_2D = MNH_ALLOCATE_ZT2D( ZTMP4_2D ,IIU,IJU ) -IZCONC3D = MNH_ALLOCATE_ZT3D( ZCONC3D,IIU,IJU,IKU ) -IZRAY = MNH_ALLOCATE_ZT3D( ZRAY ,IIU,IJU,IKU ) -IZLBC = MNH_ALLOCATE_ZT3D( ZLBC ,IIU,IJU,IKU ) -IZFSEDC = MNH_ALLOCATE_ZT3D( ZFSEDC ,IIU,IJU,IKU ) -IZPRCS = MNH_ALLOCATE_ZT3D( ZPRCS ,IIU,IJU,IKU ) -IZPRRS = MNH_ALLOCATE_ZT3D( ZPRRS ,IIU,IJU,IKU ) -IZPRSS = MNH_ALLOCATE_ZT3D( ZPRSS ,IIU,IJU,IKU ) -IZPRGS = MNH_ALLOCATE_ZT3D( ZPRGS ,IIU,IJU,IKU ) -IZPRHS = MNH_ALLOCATE_ZT3D( ZPRHS ,IIU,IJU,IKU ) -IZW = MNH_ALLOCATE_ZT3D( ZW ,IIU,IJU,IKU ) +IZCONC_TMP = MNH_ALLOCATE_FLAT( ZCONC_TMP,IIU,IJU ) +IZOMPSEA = MNH_ALLOCATE_FLAT( ZOMPSEA ,IIU,IJU ) +IZTMP1_2D = MNH_ALLOCATE_FLAT( ZTMP1_2D ,IIU,IJU ) +IZTMP2_2D = MNH_ALLOCATE_FLAT( ZTMP2_2D ,IIU,IJU ) +IZTMP3_2D = MNH_ALLOCATE_FLAT( ZTMP3_2D ,IIU,IJU ) +IZTMP4_2D = MNH_ALLOCATE_FLAT( ZTMP4_2D ,IIU,IJU ) +IZCONC3D = MNH_ALLOCATE_FLAT( ZCONC3D,IIU,IJU,IKU ) +IZRAY = MNH_ALLOCATE_FLAT( ZRAY ,IIU,IJU,IKU ) +IZLBC = MNH_ALLOCATE_FLAT( ZLBC ,IIU,IJU,IKU ) +IZFSEDC = MNH_ALLOCATE_FLAT( ZFSEDC ,IIU,IJU,IKU ) +IZPRCS = MNH_ALLOCATE_FLAT( ZPRCS ,IIU,IJU,IKU ) +IZPRRS = MNH_ALLOCATE_FLAT( ZPRRS ,IIU,IJU,IKU ) +IZPRSS = MNH_ALLOCATE_FLAT( ZPRSS ,IIU,IJU,IKU ) +IZPRGS = MNH_ALLOCATE_FLAT( ZPRGS ,IIU,IJU,IKU ) +IZPRHS = MNH_ALLOCATE_FLAT( ZPRHS ,IIU,IJU,IKU ) +IZW = MNH_ALLOCATE_FLAT( ZW ,IIU,IJU,IKU ) ALLOCATE( ZWSED (IIU,IJU,0:IKU+1) ) #endif @@ -765,21 +763,43 @@ END IF #ifndef MNH_OPENACC DEALLOCATE(IC1, IC2, IC3, IR1, IR2, IR3, IS1, IS2, IS3, II1, II2, II3, IG1, IG2, IG3, IH1, IH2, IH3) #else -CALL MNH_REL_IT1D(IIC1, IIC2, IIC3, IIR1, IIR2, IIR3, IIS1, IIS2, IIS3,& - III1, III2, III3, IIG1, IIG2, IIG3, IIH1, IIH2, IIH3) +CALL MNH_REL_IT1DFLAT( IIH3 ) +CALL MNH_REL_IT1DFLAT( IIH2 ) +CALL MNH_REL_IT1DFLAT( IIH1 ) +CALL MNH_REL_IT1DFLAT( IIG3 ) +CALL MNH_REL_IT1DFLAT( IIG2 ) +CALL MNH_REL_IT1DFLAT( IIG1 ) +CALL MNH_REL_IT1DFLAT( III3 ) +CALL MNH_REL_IT1DFLAT( III2 ) +CALL MNH_REL_IT1DFLAT( III1 ) +CALL MNH_REL_IT1DFLAT( IIS3 ) +CALL MNH_REL_IT1DFLAT( IIS2 ) +CALL MNH_REL_IT1DFLAT( IIS1 ) +CALL MNH_REL_IT1DFLAT( IIR3 ) +CALL MNH_REL_IT1DFLAT( IIR2 ) +CALL MNH_REL_IT1DFLAT( IIR1 ) +CALL MNH_REL_IT1DFLAT( IIC3 ) +CALL MNH_REL_IT1DFLAT( IIC2 ) +CALL MNH_REL_IT1DFLAT( IIC1 ) #endif #ifndef MNH_OPENACC DEALLOCATE(GDEP, GSEDIMR, GSEDIMC, GSEDIMI, GSEDIMS, GSEDIMG, GSEDIMH) #else -CALL MNH_REL_GT3D(IGDEP, IGSEDIMR, IGSEDIMC, IGSEDIMI, IGSEDIMS, IGSEDIMG, IGSEDIMH) +CALL MNH_REL_GT1DFLAT( IGSEDIMH ) +CALL MNH_REL_GT1DFLAT( IGSEDIMG ) +CALL MNH_REL_GT1DFLAT( IGSEDIMS ) +CALL MNH_REL_GT1DFLAT( IGSEDIMI ) +CALL MNH_REL_GT1DFLAT( IGSEDIMC ) +CALL MNH_REL_GT1DFLAT( IGSEDIMR ) +CALL MNH_REL_GT1DFLAT( IGDEP ) #endif DEALLOCATE(ZRTMIN) #ifndef MNH_OPENACC DEALLOCATE(ZCONC_TMP,ZOMPSEA, ZTMP1_2D, ZTMP2_2D, ZTMP3_2D, ZTMP4_2D, ZCONC3D) DEALLOCATE(ZRAY, ZLBC, ZFSEDC,ZPRCS, ZPRRS, ZPRSS, ZPRGS, ZPRHS, ZW) #else -CALL MNH_REL_ZT3D(IZRAY, IZLBC, IZFSEDC,IZPRCS, IZPRRS, IZPRSS, IZPRGS, IZPRHS, IZW) -CALL MNH_REL_ZT3D(IZCONC_TMP,IZOMPSEA, IZTMP1_2D, IZTMP2_2D, IZTMP3_2D, IZTMP4_2D, IZCONC3D) +CALL MNH_RELEASE_FLAT( IZRAY, IZLBC, IZFSEDC,IZPRCS, IZPRRS, IZPRSS, IZPRGS, IZPRHS, IZW ) +CALL MNH_RELEASE_FLAT( IZCONC_TMP, IZOMPSEA, IZTMP1_2D, IZTMP2_2D, IZTMP3_2D, IZTMP4_2D, IZCONC3D ) #endif DEALLOCATE(ZWSED) diff --git a/src/MNH/resolved_cloud.f90 b/src/MNH/resolved_cloud.f90 index 9cba44767..02b590708 100644 --- a/src/MNH/resolved_cloud.f90 +++ b/src/MNH/resolved_cloud.f90 @@ -339,8 +339,7 @@ USE MODI_SHUMAN_DEVICE #endif USE MODI_SLOW_TERMS #ifdef MNH_OPENACC -USE MODE_MNH_ZWORK , ONLY : MNH_ALLOCATE_ZT3D , MNH_REL_ZT3D, MNH_ALLOCATE_ZT4D , MNH_REL_ZT4D , MNH_ALLOCATE_ZT2D , & - MNH_ALLOCATE_GT3D , MNH_REL_GT3D +USE MODE_MNH_ZWORK, ONLY: MNH_ALLOCATE_FLAT, MNH_RELEASE_FLAT, MNH_REL_GT1DFLAT #endif ! IMPLICIT NONE @@ -610,29 +609,28 @@ allocate ( ZINPRI ( JIU,JJU ) ) allocate ( ZTHSSTEP ( SIZE(PTHS,1), SIZE(PTHS,2), SIZE(PTHS,3) ) ) allocate ( ZRSSTEP ( SIZE(PRS,1), SIZE(PRS,2), SIZE(PRS,3), SIZE(PRS,4) ) ) #else -ILLMICRO = MNH_ALLOCATE_GT3D ( LLMICRO ,JIU,JJU,JKU ) -IZDZZ = MNH_ALLOCATE_ZT3D ( ZDZZ ,JIU,JJU,JKU ) - +ILLMICRO = MNH_ALLOCATE_FLAT( LLMICRO ,JIU,JJU,JKU ) +IZDZZ = MNH_ALLOCATE_FLAT( ZDZZ ,JIU,JJU,JKU ) if ( hcloud == 'ICE3' .or. hcloud == 'ICE4' ) then - IZEXN = MNH_ALLOCATE_ZT3D ( ZEXN ,JIU,JJU,JKU ) - IZFPR = MNH_ALLOCATE_ZT4D ( ZFPR ,JIU,JJU,JKU,KRR ) + IZEXN = MNH_ALLOCATE_FLAT( ZEXN ,JIU,JJU,JKU ) + IZFPR = MNH_ALLOCATE_FLAT( ZFPR ,JIU,JJU,JKU,KRR ) else - IZEXN = MNH_ALLOCATE_ZT3D ( ZEXN ,0,0,0 ) - IZFPR = MNH_ALLOCATE_ZT4D ( ZFPR ,0,0,0,0 ) + IZEXN = MNH_ALLOCATE_FLAT( ZEXN ,0,0,0 ) + IZFPR = MNH_ALLOCATE_FLAT( ZFPR ,0,0,0,0 ) end if if ( hcloud == 'LIMA' .and. lptsplit ) then - IZICEFR = MNH_ALLOCATE_ZT3D ( ZICEFR ,JIU,JJU,JKU ) - IZPRCFR = MNH_ALLOCATE_ZT3D ( ZPRCFR ,JIU,JJU,JKU ) + IZICEFR = MNH_ALLOCATE_FLAT( ZICEFR ,JIU,JJU,JKU ) + IZPRCFR = MNH_ALLOCATE_FLAT( ZPRCFR ,JIU,JJU,JKU ) else - IZICEFR = MNH_ALLOCATE_ZT3D ( ZICEFR ,0,0,0 ) - IZPRCFR = MNH_ALLOCATE_ZT3D ( ZPRCFR ,0,0,0 ) + IZICEFR = MNH_ALLOCATE_FLAT( ZICEFR ,0,0,0 ) + IZPRCFR = MNH_ALLOCATE_FLAT( ZPRCFR ,0,0,0 ) end if -IZZZ = MNH_ALLOCATE_ZT3D ( ZZZ ,JIU,JJU,JKU ) -IZINPRI = MNH_ALLOCATE_ZT2D ( ZINPRI ,JIU,JJU ) -IZTHSSTEP = MNH_ALLOCATE_ZT3D ( ZTHSSTEP , SIZE(PTHS,1), SIZE(PTHS,2), SIZE(PTHS,3) ) -IZRSSTEP = MNH_ALLOCATE_ZT4D ( ZRSSTEP , SIZE(PRS,1), SIZE(PRS,2), SIZE(PRS,3), SIZE(PRS,4) ) +IZZZ = MNH_ALLOCATE_FLAT( ZZZ ,JIU,JJU,JKU ) +IZINPRI = MNH_ALLOCATE_FLAT( ZINPRI ,JIU,JJU ) +IZTHSSTEP = MNH_ALLOCATE_FLAT( ZTHSSTEP , SIZE(PTHS,1), SIZE(PTHS,2), SIZE(PTHS,3) ) +IZRSSTEP = MNH_ALLOCATE_FLAT( ZRSSTEP , SIZE(PRS,1), SIZE(PRS,2), SIZE(PRS,3), SIZE(PRS,4) ) #endif @@ -1304,15 +1302,16 @@ deallocate( ZEXN ) deallocate( ZDZZ ) deallocate( LLMICRO ) #else -CALL MNH_REL_ZT4D(SIZE(PRS,4) , IZRSSTEP ) -CALL MNH_REL_ZT3D ( IZTHSSTEP ) -CALL MNH_REL_ZT3D ( IZINPRI ) -CALL MNH_REL_ZT3D ( IZZZ ) -CALL MNH_REL_ZT3D ( IZICEFR, IZPRCFR ) -CALL MNH_REL_ZT4D ( KRR, IZFPR ) -CALL MNH_REL_ZT3D ( IZDZZ, IZEXN ) - -CALL MNH_REL_GT3D ( ILLMICRO ) +CALL MNH_RELEASE_FLAT( IZRSSTEP ) +CALL MNH_RELEASE_FLAT( IZTHSSTEP ) +CALL MNH_RELEASE_FLAT( IZINPRI ) +CALL MNH_RELEASE_FLAT( IZZZ ) +CALL MNH_RELEASE_FLAT( IZPRCFR ) +CALL MNH_RELEASE_FLAT( IZICEFR ) +CALL MNH_RELEASE_FLAT( IZFPR ) +CALL MNH_RELEASE_FLAT( IZEXN ) +CALL MNH_RELEASE_FLAT( IZDZZ ) +CALL MNH_REL_GT1DFLAT( ILLMICRO ) #endif !$acc end data diff --git a/src/MNH/sources_neg_correct.f90 b/src/MNH/sources_neg_correct.f90 index eba53946c..e1aca3017 100644 --- a/src/MNH/sources_neg_correct.f90 +++ b/src/MNH/sources_neg_correct.f90 @@ -33,7 +33,7 @@ use modd_param_lima, only: lcold_lima => lcold, lrain_lima => lrain, lspro_lima use mode_budget, only: Budget_store_init, Budget_store_end #ifdef MNH_OPENACC -use mode_mnh_zwork, only: Mnh_allocate_zt3d , Mnh_rel_zt3d +use mode_mnh_zwork, only: Mnh_allocate_flat , Mnh_release_flat #endif use mode_mppdb use mode_msg @@ -173,20 +173,20 @@ else end if if ( .not. Associated( zcor ) ) Allocate( zcor(0, 0, 0) ) #else -izt = Mnh_allocate_zt3d( zt, jiu, jju, jku ) -izexn = Mnh_allocate_zt3d( zexn, jiu, jju, jku ) -izlv = Mnh_allocate_zt3d( zlv, jiu, jju, jku ) -izcph = Mnh_allocate_zt3d( zcph, jiu, jju, jku ) +izt = Mnh_allocate_flat( zt, jiu, jju, jku ) +izexn = Mnh_allocate_flat( zexn, jiu, jju, jku ) +izlv = Mnh_allocate_flat( zlv, jiu, jju, jku ) +izcph = Mnh_allocate_flat( zcph, jiu, jju, jku ) if ( hcloud == 'ICE3' .or. hcloud == 'ICE4' .or. hcloud == 'LIMA' ) then - izls = Mnh_allocate_zt3d( zls, jiu, jju, jku ) + izls = Mnh_allocate_flat( zls, jiu, jju, jku ) if ( krr > 3 ) then - izcor = Mnh_allocate_zt3d( zcor, jiu, jju, jku ) + izcor = Mnh_allocate_flat( zcor, jiu, jju, jku ) else - izcor = Mnh_allocate_zt3d( zcor, 0, 0, 0 ) + izcor = Mnh_allocate_flat( zcor, 0, 0, 0 ) end if else - izls = Mnh_allocate_zt3d( zls, 0, 0, 0 ) - izcor = Mnh_allocate_zt3d( zcor, 0, 0, 0 ) + izls = Mnh_allocate_flat( zls, 0, 0, 0 ) + izcor = Mnh_allocate_flat( zcor, 0, 0, 0 ) end if #endif @@ -411,7 +411,7 @@ end select CLOUD #ifndef MNH_OPENACC deallocate( zexn, zlv, zcph, zls, zcor ) #else -call Mnh_rel_zt3d ( izt, izexn, izlv, izcph, izls, izcor ) +call Mnh_release_flat ( izt, izexn, izlv, izcph, izls, izcor ) #endif if ( hbudname /= 'NECON' .and. hbudname /= 'NEGA' ) then diff --git a/src/MNH/tke_eps_sources.f90 b/src/MNH/tke_eps_sources.f90 index 777745fce..1d427f976 100644 --- a/src/MNH/tke_eps_sources.f90 +++ b/src/MNH/tke_eps_sources.f90 @@ -187,7 +187,7 @@ use mode_budget, only: Budget_store_add, Budget_store_end, Budget_store_ USE MODE_EXCHANGE_ll, ONLY: UPDATE_HALO_ll USE MODE_IO_FIELD_WRITE, only: IO_Field_write #ifdef MNH_OPENACC -USE MODE_MNH_ZWORK, ONLY: MNH_ALLOCATE_ZT3D, MNH_REL_ZT3D +USE MODE_MNH_ZWORK, ONLY: MNH_ALLOCATE_FLAT, MNH_RELEASE_FLAT #endif use mode_mppdb ! @@ -315,18 +315,18 @@ allocate( zflx (JIU,JJU,JKU ) ) allocate( zsource(JIU,JJU,JKU ) ) allocate( zkeff (JIU,JJU,JKU ) ) #else -iza = MNH_ALLOCATE_ZT3D( za ,JIU,JJU,JKU) -izres = MNH_ALLOCATE_ZT3D( zres ,JIU,JJU,JKU) -izflx = MNH_ALLOCATE_ZT3D( zflx ,JIU,JJU,JKU) -izsource = MNH_ALLOCATE_ZT3D( zsource,JIU,JJU,JKU) -izkeff = MNH_ALLOCATE_ZT3D( zkeff ,JIU,JJU,JKU) +iza = MNH_ALLOCATE_FLAT( za ,JIU,JJU,JKU) +izres = MNH_ALLOCATE_FLAT( zres ,JIU,JJU,JKU) +izflx = MNH_ALLOCATE_FLAT( zflx ,JIU,JJU,JKU) +izsource = MNH_ALLOCATE_FLAT( zsource,JIU,JJU,JKU) +izkeff = MNH_ALLOCATE_FLAT( zkeff ,JIU,JJU,JKU) #endif #ifdef MNH_OPENACC -iztmp1_device = MNH_ALLOCATE_ZT3D( ztmp1_device,JIU,JJU,JKU) -iztmp2_device = MNH_ALLOCATE_ZT3D( ztmp2_device,JIU,JJU,JKU) -iztmp3_device = MNH_ALLOCATE_ZT3D( ztmp3_device,JIU,JJU,JKU) -iztmp4_device = MNH_ALLOCATE_ZT3D( ztmp4_device,JIU,JJU,JKU) +iztmp1_device = MNH_ALLOCATE_FLAT( ztmp1_device,JIU,JJU,JKU) +iztmp2_device = MNH_ALLOCATE_FLAT( ztmp2_device,JIU,JJU,JKU) +iztmp3_device = MNH_ALLOCATE_FLAT( ztmp3_device,JIU,JJU,JKU) +iztmp4_device = MNH_ALLOCATE_FLAT( ztmp4_device,JIU,JJU,JKU) #endif !$acc data present( ZA, ZRES, ZFLX, ZSOURCE, ZKEFF, ZTMP1_DEVICE, ZTMP2_DEVICE, ZTMP3_DEVICE, ZTMP4_DEVICE ) @@ -675,7 +675,7 @@ end if #ifndef MNH_OPENACC deallocate( ZA, ZRES, ZFLX, ZSOURCE, ZKEFF ) #else -CALL MNH_REL_ZT3D( IZA, IZRES, IZFLX, IZSOURCE, IZKEFF, IZTMP1_DEVICE, IZTMP2_DEVICE, IZTMP3_DEVICE, IZTMP4_DEVICE ) +CALL MNH_RELEASE_FLAT( IZA, IZRES, IZFLX, IZSOURCE, IZKEFF, IZTMP1_DEVICE, IZTMP2_DEVICE, IZTMP3_DEVICE, IZTMP4_DEVICE ) #endif !$acc end data diff --git a/src/MNH/tridiag_thermo.f90 b/src/MNH/tridiag_thermo.f90 index 07b817501..b7462995a 100644 --- a/src/MNH/tridiag_thermo.f90 +++ b/src/MNH/tridiag_thermo.f90 @@ -158,8 +158,7 @@ USE MODI_BITREP #endif ! #ifdef MNH_OPENACC -USE MODE_MNH_ZWORK , ONLY : MNH_ALLOCATE_ZT3D , MNH_REL_ZT3D , MNH_ALLOCATE_ZT2D, & - MNH_CHECK_IN_ZT3D,MNH_CHECK_OUT_ZT3D +USE MODE_MNH_ZWORK , ONLY : MNH_ALLOCATE_FLAT , MNH_RELEASE_FLAT #endif ! IMPLICIT NONE @@ -235,19 +234,18 @@ allocate( zy (JIU,JJU,JKU ) ) allocate( zgam (JIU,JJU,JKU ) ) allocate( zbet (JIU,JJU ) ) #else -CALL MNH_CHECK_IN_ZT3D("TRIDIAG_THERMO") -izrhodj_dfddtdz_o_dz2 = MNH_ALLOCATE_ZT3D( zrhodj_dfddtdz_o_dz2,JIU,JJU,JKU ) -izmzm_rhodj = MNH_ALLOCATE_ZT3D( zmzm_rhodj ,JIU,JJU,JKU ) -iza = MNH_ALLOCATE_ZT3D( za ,JIU,JJU,JKU ) -izb = MNH_ALLOCATE_ZT3D( zb ,JIU,JJU,JKU ) -izc = MNH_ALLOCATE_ZT3D( zc ,JIU,JJU,JKU ) -izy = MNH_ALLOCATE_ZT3D( zy ,JIU,JJU,JKU ) -izgam = MNH_ALLOCATE_ZT3D( zgam ,JIU,JJU,JKU ) -izbet = MNH_ALLOCATE_ZT2D( zbet ,JIU,JJU ) +izrhodj_dfddtdz_o_dz2 = MNH_ALLOCATE_FLAT( zrhodj_dfddtdz_o_dz2, JIU, JJU, JKU ) +izmzm_rhodj = MNH_ALLOCATE_FLAT( zmzm_rhodj , JIU, JJU, JKU ) +iza = MNH_ALLOCATE_FLAT( za , JIU, JJU, JKU ) +izb = MNH_ALLOCATE_FLAT( zb , JIU, JJU, JKU ) +izc = MNH_ALLOCATE_FLAT( zc , JIU, JJU, JKU ) +izy = MNH_ALLOCATE_FLAT( zy , JIU, JJU, JKU ) +izgam = MNH_ALLOCATE_FLAT( zgam , JIU, JJU, JKU ) +izbet = MNH_ALLOCATE_FLAT( zbet , JIU, JJU ) #endif #ifdef MNH_OPENACC -iztmp1_device = MNH_ALLOCATE_ZT3D( ztmp1_device,JIU,JJU,JKU ) +iztmp1_device = MNH_ALLOCATE_FLAT( ztmp1_device, JIU, JJU, JKU ) #endif !$acc data present( zrhodj_dfddtdz_o_dz2, zmzm_rhodj, za, zb, zc, zy, zgam, zbet, ztmp1_device ) @@ -484,9 +482,8 @@ end if #ifndef MNH_OPENACC deallocate (zrhodj_dfddtdz_o_dz2,zmzm_rhodj,za,zb,zc,zy,zgam,zbet) #else -CALL MNH_REL_ZT3D(IZRHODJ_DFDDTDZ_O_DZ2,IZMZM_RHODJ,IZA,IZB,IZC,IZY,IZGAM,& - IZBET,iztmp1_device) -CALL MNH_CHECK_OUT_ZT3D("TRIDIAG_THERMO") +CALL MNH_RELEASE_FLAT( IZRHODJ_DFDDTDZ_O_DZ2, IZMZM_RHODJ, IZA, IZB, IZC, IZY, IZGAM, & + IZBET, iztmp1_device ) #endif !$acc end data diff --git a/src/MNH/tridiag_tke.f90 b/src/MNH/tridiag_tke.f90 index fcee8400d..87251eada 100644 --- a/src/MNH/tridiag_tke.f90 +++ b/src/MNH/tridiag_tke.f90 @@ -143,8 +143,7 @@ USE MODD_PARAMETERS USE MODE_MPPDB ! #ifdef MNH_OPENACC -USE MODE_MNH_ZWORK , ONLY : MNH_ALLOCATE_ZT3D , MNH_REL_ZT3D , MNH_ALLOCATE_ZT2D, & - MNH_CHECK_IN_ZT3D,MNH_CHECK_OUT_ZT3D +USE MODE_MNH_ZWORK, ONLY: MNH_ALLOCATE_FLAT, MNH_RELEASE_FLAT #endif ! IMPLICIT NONE @@ -201,10 +200,9 @@ allocate( zy (JIU,JJU,JKU ) ) allocate( zgam(JIU,JJU,JKU ) ) allocate( zbet(JIU,JJU ) ) #else -CALL MNH_CHECK_IN_ZT3D("TRIDIAG_TKE") -izy = MNH_ALLOCATE_ZT3D( zy ,JIU,JJU,JKU ) -izgam = MNH_ALLOCATE_ZT3D( zgam,JIU,JJU,JKU ) -izbet = MNH_ALLOCATE_ZT2D( zbet,JIU,JJU ) +izy = MNH_ALLOCATE_FLAT( zy , JIU, JJU, JKU ) +izgam = MNH_ALLOCATE_FLAT( zgam, JIU, JJU, JKU ) +izbet = MNH_ALLOCATE_FLAT( zbet, JIU, JJU ) #endif !$acc data present( ZY, ZGAM, ZBET ) @@ -352,8 +350,7 @@ end if #ifndef MNH_OPENACC deallocate( ZY, ZGAM, ZBET ) #else -CALL MNH_REL_ZT3D( IZY, IZGAM, IZBET ) -CALL MNH_CHECK_OUT_ZT3D("TRIDIAG_TKE") +CALL MNH_RELEASE_FLAT( IZY, IZGAM, IZBET ) #endif !$acc end data diff --git a/src/MNH/tridiag_w.f90 b/src/MNH/tridiag_w.f90 index 67a4895fd..4a572e2c9 100644 --- a/src/MNH/tridiag_w.f90 +++ b/src/MNH/tridiag_w.f90 @@ -162,7 +162,7 @@ USE MODI_BITREP #endif ! #ifdef MNH_OPENACC -USE MODE_MNH_ZWORK , ONLY : MNH_ALLOCATE_ZT3D , MNH_REL_ZT3D , MNH_ALLOCATE_ZT2D +USE MODE_MNH_ZWORK, ONLY: MNH_ALLOCATE_FLAT, MNH_RELEASE_FLAT #endif ! IMPLICIT NONE @@ -222,14 +222,14 @@ allocate( zy (JIU,JJU,JKU ) ) allocate( zgam (JIU,JJU,JKU ) ) allocate( zbet (JIU,JJU ) ) #else -izrhodj_dfddwdz_o_dz2 = MNH_ALLOCATE_ZT3D( zrhodj_dfddwdz_o_dz2,JIU,JJU,JKU ) -izmzm_rhodj = MNH_ALLOCATE_ZT3D( zmzm_rhodj ,JIU,JJU,JKU ) -iza = MNH_ALLOCATE_ZT3D( za ,JIU,JJU,JKU ) -izb = MNH_ALLOCATE_ZT3D( zb ,JIU,JJU,JKU ) -izc = MNH_ALLOCATE_ZT3D( zc ,JIU,JJU,JKU ) -izy = MNH_ALLOCATE_ZT3D( zy ,JIU,JJU,JKU ) -izgam = MNH_ALLOCATE_ZT3D( zgam ,JIU,JJU,JKU ) -izbet = MNH_ALLOCATE_ZT2D( zbet ,JIU,JJU ) +izrhodj_dfddwdz_o_dz2 = MNH_ALLOCATE_FLAT( zrhodj_dfddwdz_o_dz2,JIU,JJU,JKU ) +izmzm_rhodj = MNH_ALLOCATE_FLAT( zmzm_rhodj ,JIU,JJU,JKU ) +iza = MNH_ALLOCATE_FLAT( za ,JIU,JJU,JKU ) +izb = MNH_ALLOCATE_FLAT( zb ,JIU,JJU,JKU ) +izc = MNH_ALLOCATE_FLAT( zc ,JIU,JJU,JKU ) +izy = MNH_ALLOCATE_FLAT( zy ,JIU,JJU,JKU ) +izgam = MNH_ALLOCATE_FLAT( zgam ,JIU,JJU,JKU ) +izbet = MNH_ALLOCATE_FLAT( zbet ,JIU,JJU ) #endif !$acc data present( ZRHODJ_DFDDWDZ_O_DZ2, ZMZM_RHODJ, ZA, ZB, ZC, ZY, ZGAM, ZBET ) @@ -464,7 +464,7 @@ end if #ifndef MNH_OPENACC deallocate (ZRHODJ_DFDDWDZ_O_DZ2, ZMZM_RHODJ, ZA, ZB, ZC, ZY, ZGAM, ZBET) #else -CALL MNH_REL_ZT3D(IZRHODJ_DFDDWDZ_O_DZ2, IZMZM_RHODJ, IZA, IZB, IZC, IZY, IZGAM, IZBET) +CALL MNH_RELEASE_FLAT( IZRHODJ_DFDDWDZ_O_DZ2, IZMZM_RHODJ, IZA, IZB, IZC, IZY, IZGAM, IZBET ) #endif diff --git a/src/MNH/tridiag_wind.f90 b/src/MNH/tridiag_wind.f90 index 2a1298642..7e3c0dfce 100644 --- a/src/MNH/tridiag_wind.f90 +++ b/src/MNH/tridiag_wind.f90 @@ -149,8 +149,7 @@ USE MODD_PARAMETERS use mode_mppdb #ifdef MNH_OPENACC -USE MODE_MNH_ZWORK , ONLY : MNH_ALLOCATE_ZT3D , MNH_REL_ZT3D , MNH_ALLOCATE_ZT2D, & - MNH_CHECK_IN_ZT3D,MNH_CHECK_OUT_ZT3D +USE MODE_MNH_ZWORK, ONLY: MNH_ALLOCATE_FLAT, MNH_RELEASE_FLAT #endif IMPLICIT NONE @@ -208,10 +207,9 @@ allocate( zy (JIU,JJU,JKU ) ) allocate( zgam(JIU,JJU,JKU ) ) allocate( zbet(JIU,JJU ) ) #else -CALL MNH_CHECK_IN_ZT3D("TRIDIAG_WIND") -izy = MNH_ALLOCATE_ZT3D( zy ,JIU,JJU,JKU ) -izgam = MNH_ALLOCATE_ZT3D( zgam,JIU,JJU,JKU ) -izbet = MNH_ALLOCATE_ZT2D( zbet,JIU,JJU ) +izy = MNH_ALLOCATE_FLAT( zy , JIU, JJU, JKU ) +izgam = MNH_ALLOCATE_FLAT( zgam, JIU, JJU, JKU ) +izbet = MNH_ALLOCATE_FLAT( zbet, JIU, JJU ) #endif !$acc data present( ZY, ZGAM, ZBET ) @@ -352,8 +350,7 @@ end if #ifndef MNH_OPENACC deallocate ( zy,zgam,zbet ) #else -CALL MNH_REL_ZT3D( izy,izgam,izbet ) -CALL MNH_CHECK_OUT_ZT3D("TRIDIAG_WIND") +CALL MNH_RELEASE_FLAT( izy, izgam, izbet ) #endif !$acc end data diff --git a/src/MNH/turb.f90 b/src/MNH/turb.f90 index 6f234ab39..753c9c42c 100644 --- a/src/MNH/turb.f90 +++ b/src/MNH/turb.f90 @@ -9,9 +9,7 @@ module mode_turb #ifdef MNH_OPENACC use mode_msg - USE MODE_MNH_ZWORK , ONLY : MNH_ALLOCATE_ZT3D , MNH_REL_ZT3D, MNH_ALLOCATE_ZT3DP , MNH_ALLOCATE_ZT2D, & - MNH_ALLOCATE_ZT4D , MNH_REL_ZT4D , & - MNH_CHECK_IN_ZT3D,MNH_CHECK_OUT_ZT3D + USE MODE_MNH_ZWORK, ONLY: MNH_ALLOCATE_FLAT, MNH_RELEASE_FLAT #endif #ifdef MNH_BITREP @@ -617,75 +615,74 @@ allocate( zdudz (JIU,JJU, JKU_TURB ) ) allocate( zdvdz (JIU,JJU, JKU_TURB ) ) #else -CALL MNH_CHECK_IN_ZT3D("TURB") -IZCP = MNH_ALLOCATE_ZT3D (ZCP ,JIU,JJU,JKU ) -IZEXN = MNH_ALLOCATE_ZT3D (ZEXN ,JIU,JJU,JKU ) -IZT = MNH_ALLOCATE_ZT3D (ZT ,JIU,JJU,JKU ) -IZLOCPEXNM = MNH_ALLOCATE_ZT3D (ZLOCPEXNM ,JIU,JJU,JKU ) -IZLEPS = MNH_ALLOCATE_ZT3D (ZLEPS ,JIU,JJU,JKU ) -IZTRH = MNH_ALLOCATE_ZT3D (ZTRH ,JIU,JJU,JKU ) -IZATHETA = MNH_ALLOCATE_ZT3D (ZATHETA ,JIU,JJU,JKU ) -IZAMOIST = MNH_ALLOCATE_ZT3D (ZAMOIST ,JIU,JJU,JKU ) -IZCOEF_DISS = MNH_ALLOCATE_ZT3D (ZCOEF_DISS,JIU,JJU,JKU ) -IZFRAC_ICE = MNH_ALLOCATE_ZT3D (ZFRAC_ICE ,JIU,JJU,JKU ) - -IZMWTH = MNH_ALLOCATE_ZT3D (ZMWTH ,JIU,JJU,JKU ) -IZMWR = MNH_ALLOCATE_ZT3D (ZMWR ,JIU,JJU,JKU ) -IZMTH2 = MNH_ALLOCATE_ZT3D (ZMTH2 ,JIU,JJU,JKU ) -IZMR2 = MNH_ALLOCATE_ZT3D (ZMR2 ,JIU,JJU,JKU ) -IZMTHR = MNH_ALLOCATE_ZT3D (ZMTHR ,JIU,JJU,JKU ) - -IZFWTH = MNH_ALLOCATE_ZT3D (ZFWTH ,JIU,JJU,JKU ) -IZFWR = MNH_ALLOCATE_ZT3D (ZFWR ,JIU,JJU,JKU ) -IZFTH2 = MNH_ALLOCATE_ZT3D (ZFTH2 ,JIU,JJU,JKU ) -IZFR2 = MNH_ALLOCATE_ZT3D (ZFR2 ,JIU,JJU,JKU ) -IZFTHR = MNH_ALLOCATE_ZT3D (ZFTHR ,JIU,JJU,JKU ) -IZTHLM = MNH_ALLOCATE_ZT3D (ZTHLM ,JIU,JJU,JKU ) +IZCP = MNH_ALLOCATE_FLAT( ZCP, JIU, JJU, JKU ) +IZEXN = MNH_ALLOCATE_FLAT( ZEXN, JIU, JJU, JKU ) +IZT = MNH_ALLOCATE_FLAT( ZT, JIU, JJU, JKU ) +IZLOCPEXNM = MNH_ALLOCATE_FLAT( ZLOCPEXNM, JIU, JJU, JKU ) +IZLEPS = MNH_ALLOCATE_FLAT( ZLEPS, JIU, JJU, JKU ) +IZTRH = MNH_ALLOCATE_FLAT( ZTRH, JIU, JJU, JKU ) +IZATHETA = MNH_ALLOCATE_FLAT( ZATHETA, JIU, JJU, JKU ) +IZAMOIST = MNH_ALLOCATE_FLAT( ZAMOIST, JIU, JJU, JKU ) +IZCOEF_DISS = MNH_ALLOCATE_FLAT( ZCOEF_DISS, JIU, JJU, JKU ) +IZFRAC_ICE = MNH_ALLOCATE_FLAT( ZFRAC_ICE, JIU, JJU, JKU ) + +IZMWTH = MNH_ALLOCATE_FLAT( ZMWTH, JIU, JJU, JKU ) +IZMWR = MNH_ALLOCATE_FLAT( ZMWR, JIU, JJU, JKU ) +IZMTH2 = MNH_ALLOCATE_FLAT( ZMTH2, JIU, JJU, JKU ) +IZMR2 = MNH_ALLOCATE_FLAT( ZMR2, JIU, JJU, JKU ) +IZMTHR = MNH_ALLOCATE_FLAT( ZMTHR, JIU, JJU, JKU ) + +IZFWTH = MNH_ALLOCATE_FLAT( ZFWTH, JIU, JJU, JKU ) +IZFWR = MNH_ALLOCATE_FLAT( ZFWR, JIU, JJU, JKU ) +IZFTH2 = MNH_ALLOCATE_FLAT( ZFTH2, JIU, JJU, JKU ) +IZFR2 = MNH_ALLOCATE_FLAT( ZFR2, JIU, JJU, JKU ) +IZFTHR = MNH_ALLOCATE_FLAT( ZFTHR, JIU, JJU, JKU ) +IZTHLM = MNH_ALLOCATE_FLAT( ZTHLM, JIU, JJU, JKU ) JLU_ZRM = 0 IF ( HTURBLEN == 'BL89' .OR. HTURBLEN == 'RM17' .OR. ORMC01 ) JLU_ZRM = SIZE(PRT,4) -IZRM = MNH_ALLOCATE_ZT4D ( ZRM,JIU,JJU,JKU, JLU_ZRM ) +IZRM = MNH_ALLOCATE_FLAT( ZRM, JIU, JJU, JKU, JLU_ZRM ) -IZTAU11M = MNH_ALLOCATE_ZT2D ( ZTAU11M,JIU,JJU ) -IZTAU12M = MNH_ALLOCATE_ZT2D ( ZTAU12M,JIU,JJU ) -IZTAU22M = MNH_ALLOCATE_ZT2D ( ZTAU22M,JIU,JJU ) -IZTAU33M = MNH_ALLOCATE_ZT2D ( ZTAU33M,JIU,JJU ) -IZUSLOPE = MNH_ALLOCATE_ZT2D ( ZUSLOPE,JIU,JJU ) -IZVSLOPE = MNH_ALLOCATE_ZT2D ( ZVSLOPE,JIU,JJU ) -IZCDUEFF = MNH_ALLOCATE_ZT2D ( ZCDUEFF,JIU,JJU ) -IZLMO = MNH_ALLOCATE_ZT2D ( ZLMO ,JIU,JJU ) +IZTAU11M = MNH_ALLOCATE_FLAT( ZTAU11M, JIU, JJU ) +IZTAU12M = MNH_ALLOCATE_FLAT( ZTAU12M, JIU, JJU ) +IZTAU22M = MNH_ALLOCATE_FLAT( ZTAU22M, JIU, JJU ) +IZTAU33M = MNH_ALLOCATE_FLAT( ZTAU33M, JIU, JJU ) +IZUSLOPE = MNH_ALLOCATE_FLAT( ZUSLOPE, JIU, JJU ) +IZVSLOPE = MNH_ALLOCATE_FLAT( ZVSLOPE, JIU, JJU ) +IZCDUEFF = MNH_ALLOCATE_FLAT( ZCDUEFF, JIU, JJU ) +IZLMO = MNH_ALLOCATE_FLAT( ZLMO, JIU, JJU ) JJU_ORMC01 = 0 IF (ORMC01) JJU_ORMC01 = SIZE(PTHLT,2) -IZUSTAR = MNH_ALLOCATE_ZT2D ( ZUSTAR ,JIU,JJU_ORMC01 ) -IZRVM = MNH_ALLOCATE_ZT2D ( ZRVM ,JIU,JJU_ORMC01 ) -IZSFRV = MNH_ALLOCATE_ZT2D ( ZSFRV ,JIU,JJU_ORMC01 ) +IZUSTAR = MNH_ALLOCATE_FLAT( ZUSTAR, JIU, JJU_ORMC01 ) +IZRVM = MNH_ALLOCATE_FLAT( ZRVM, JIU, JJU_ORMC01 ) +IZSFRV = MNH_ALLOCATE_FLAT( ZSFRV, JIU, JJU_ORMC01 ) JKU_CLOUD = 0 IF ( HCLOUD == 'KHKO' .OR. HCLOUD == 'C2R2' ) JKU_CLOUD = size( put, 3 ) -iztt = MNH_ALLOCATE_ZT3D( ztt ,JIU,JJU,JKU_CLOUD ) -izexne = MNH_ALLOCATE_ZT3D( zexne ,JIU,JJU,JKU_CLOUD ) -izlv = MNH_ALLOCATE_ZT3D( zlv ,JIU,JJU,JKU_CLOUD ) -izcph = MNH_ALLOCATE_ZT3D( zcph ,JIU,JJU,JKU_CLOUD ) +iztt = MNH_ALLOCATE_FLAT( ztt, JIU, JJU, JKU_CLOUD ) +izexne = MNH_ALLOCATE_FLAT( zexne, JIU, JJU, JKU_CLOUD ) +izlv = MNH_ALLOCATE_FLAT( zlv, JIU, JJU, JKU_CLOUD ) +izcph = MNH_ALLOCATE_FLAT( zcph, JIU, JJU, JKU_CLOUD ) JKU_TURB = 0 IF ( HTURBLEN == 'BL89' .OR. HTURBLEN == 'RM17' ) JKU_TURB = size( put, 3 ) -izshear = MNH_ALLOCATE_ZT3D( zshear,JIU,JJU, JKU_TURB ) +izshear = MNH_ALLOCATE_FLAT( zshear, JIU, JJU, JKU_TURB ) JKU_TURB = 0 IF ( HTURBLEN == 'RM17' ) JKU_TURB = size( put, 3 ) -izdudz = MNH_ALLOCATE_ZT3D( zdudz ,JIU,JJU, JKU_TURB ) -izdvdz = MNH_ALLOCATE_ZT3D( zdvdz ,JIU,JJU, JKU_TURB ) +izdudz = MNH_ALLOCATE_FLAT( zdudz, JIU, JJU, JKU_TURB ) +izdvdz = MNH_ALLOCATE_FLAT( zdvdz, JIU, JJU, JKU_TURB ) #endif #ifdef MNH_OPENACC -iztmp1_device = MNH_ALLOCATE_ZT3D( ztmp1_device,JIU,JJU,JKU ) +iztmp1_device = MNH_ALLOCATE_FLAT( ztmp1_device, JIU, JJU, JKU ) JKU_TURB = 0 IF (HTURBDIM=="1DIM") JKU_TURB = size( pthlt, 3 ) -iztmp2_device = MNH_ALLOCATE_ZT3D( ztmp2_device,JIU,JJU, JKU_TURB ) -iztmp3_device = MNH_ALLOCATE_ZT3D( ztmp3_device,JIU,JJU, JKU_TURB ) +iztmp2_device = MNH_ALLOCATE_FLAT( ztmp2_device, JIU, JJU, JKU_TURB ) +iztmp3_device = MNH_ALLOCATE_FLAT( ztmp3_device, JIU, JJU, JKU_TURB ) #endif @@ -1608,22 +1605,20 @@ deallocate( zcp, zexn, zt, zlocpexnm, zleps, ztrh, & ztt, zexne, zlv, zcph, zshear, zdudz, zdvdz ) #else -CALL MNH_REL_ZT3D ( iztt, izexne, izlv, izcph, izshear, izdudz, izdvdz, & - iztmp1_device, iztmp2_device, iztmp3_device ) +CALL MNH_RELEASE_FLAT( iztt, izexne, izlv, izcph, izshear, izdudz, izdvdz, & + iztmp1_device, iztmp2_device, iztmp3_device ) -CALL MNH_REL_ZT3D ( iztau11m, iztau12m, iztau22m, iztau33m, & - izuslope, izvslope, izcdueff, izlmo, & - izustar, izrvm, izsfrv ) +CALL MNH_RELEASE_FLAT( iztau11m, iztau12m, iztau22m, iztau33m, & + izuslope, izvslope, izcdueff, izlmo, & + izustar, izrvm, izsfrv ) -CALL MNH_REL_ZT3D ( izrm) +CALL MNH_RELEASE_FLAT( izrm) -CALL MNH_REL_ZT3D ( izmwth, izmwr, izmth2, izmr2, izmthr, & - izfwth, izfwr, izfth2, izfr2, izfthr, izthlm ) +CALL MNH_RELEASE_FLAT( izmwth, izmwr, izmth2, izmr2, izmthr, & + izfwth, izfwr, izfth2, izfr2, izfthr, izthlm ) -CALL MNH_REL_ZT3D ( izcp, izexn, izt, izlocpexnm, izleps, iztrh, & - izatheta, izamoist, izcoef_diss, izfrac_ice ) - -CALL MNH_CHECK_OUT_ZT3D("TURB") +CALL MNH_RELEASE_FLAT( izcp, izexn, izt, izlocpexnm, izleps, iztrh, & + izatheta, izamoist, izcoef_diss, izfrac_ice ) #endif !$acc end data @@ -1788,8 +1783,8 @@ INTEGER :: izrvsat, izdrvsatdt allocate( zrvsat ( size( pexn, 1 ), size( pexn, 2 ), size( pexn, 3 ) ) ) allocate( zdrvsatdt( size( pexn, 1 ), size( pexn, 2 ), size( pexn, 3 ) ) ) #else -izrvsat = MNH_ALLOCATE_ZT3D( zrvsat , size( pexn, 1 ), size( pexn, 2 ), size( pexn, 3 ) ) -izdrvsatdt = MNH_ALLOCATE_ZT3D( zdrvsatdt, size( pexn, 1 ), size( pexn, 2 ), size( pexn, 3 ) ) +izrvsat = MNH_ALLOCATE_FLAT( zrvsat , size( pexn, 1 ), size( pexn, 2 ), size( pexn, 3 ) ) +izdrvsatdt = MNH_ALLOCATE_FLAT( zdrvsatdt, size( pexn, 1 ), size( pexn, 2 ), size( pexn, 3 ) ) #endif !$acc data present( zrvsat, zdrvsatdt ) @@ -1864,7 +1859,7 @@ izdrvsatdt = MNH_ALLOCATE_ZT3D( zdrvsatdt, size( pexn, 1 ), size( pexn, 2 ), siz #ifndef MNH_OPENACC deallocate( zrvsat, zdrvsatdt ) #else - CALL MNH_REL_ZT3D(izrvsat, izdrvsatdt ) + CALL MNH_RELEASE_FLAT( izrvsat, izdrvsatdt ) #endif !$acc end data @@ -2400,16 +2395,16 @@ allocate( ZDRTDZ (JIU,JJU,JKU) ) allocate( ZETHETA(JIU,JJU,JKU) ) allocate( ZEMOIST(JIU,JJU,JKU) ) #else -IZWORK2D = MNH_ALLOCATE_ZT2D( ZWORK2D,JIU,JJU) -IZDTHLDZ = MNH_ALLOCATE_ZT3D( ZDTHLDZ,JIU,JJU,JKU) -IZDRTDZ = MNH_ALLOCATE_ZT3D( ZDRTDZ ,JIU,JJU,JKU) -IZETHETA = MNH_ALLOCATE_ZT3D( ZETHETA,JIU,JJU,JKU) -IZEMOIST = MNH_ALLOCATE_ZT3D( ZEMOIST,JIU,JJU,JKU) +IZWORK2D = MNH_ALLOCATE_FLAT( ZWORK2D, JIU, JJU ) +IZDTHLDZ = MNH_ALLOCATE_FLAT( ZDTHLDZ, JIU, JJU, JKU ) +IZDRTDZ = MNH_ALLOCATE_FLAT( ZDRTDZ, JIU, JJU, JKU ) +IZETHETA = MNH_ALLOCATE_FLAT( ZETHETA, JIU, JJU, JKU ) +IZEMOIST = MNH_ALLOCATE_FLAT( ZEMOIST, JIU, JJU, JKU ) #endif #ifdef MNH_OPENACC -IZTMP1_DEVICE = MNH_ALLOCATE_ZT3D( ZTMP1_DEVICE,JIU,JJU,JKU) -IZTMP2_DEVICE = MNH_ALLOCATE_ZT3D( ZTMP2_DEVICE,JIU,JJU,JKU) +IZTMP1_DEVICE = MNH_ALLOCATE_FLAT( ZTMP1_DEVICE, JIU, JJU, JKU ) +IZTMP2_DEVICE = MNH_ALLOCATE_FLAT( ZTMP2_DEVICE, JIU, JJU, JKU ) #endif !$acc data present(zwork2d, zdthldz, zdrtdz, zetheta, zemoist, & @@ -2624,8 +2619,8 @@ end if #ifndef MNH_OPENACC deallocate(zwork2d, zdthldz, zdrtdz, zetheta, zemoist ) #else -CALL MNH_REL_ZT3D(izwork2d, izdthldz, izdrtdz, izetheta, izemoist, & - iztmp1_device, iztmp2_device ) +CALL MNH_RELEASE_FLAT( izwork2d, izdthldz, izdrtdz, izetheta, izemoist, & + iztmp1_device, iztmp2_device ) #endif !$acc end data diff --git a/src/MNH/turb_hor_dyn_corr.f90 b/src/MNH/turb_hor_dyn_corr.f90 index 4eace2008..9803af842 100644 --- a/src/MNH/turb_hor_dyn_corr.f90 +++ b/src/MNH/turb_hor_dyn_corr.f90 @@ -150,8 +150,11 @@ USE MODD_PARAMETERS USE MODD_LES USE MODD_NSV ! -USE MODE_ll USE MODE_IO_FIELD_WRITE, only: IO_Field_write +USE MODE_ll +#ifdef MNH_OPENACC +USE MODE_MNH_ZWORK, ONLY: MNH_ALLOCATE_FLAT, MNH_RELEASE_FLAT +#endif use mode_mppdb ! USE MODI_GRADIENT_M @@ -172,9 +175,6 @@ USE MODE_MPPDB #ifdef MNH_BITREP USE MODI_BITREP #endif -#ifdef MNH_OPENACC -USE MODE_MNH_ZWORK , ONLY : MNH_ALLOCATE_ZT3D , MNH_REL_ZT3D, MNH_ALLOCATE_ZT3DP , MNH_ALLOCATE_ZT2D -#endif ! IMPLICIT NONE ! @@ -357,34 +357,34 @@ allocate( zdw_dz (JIU,JJU, 1 ) ) allocate( zcoeff(JIU,JJU, 1 + jpvext : 3 + jpvext ) ) allocate( zdzz (JIU,JJU, 1 + jpvext : 3 + jpvext ) ) #else -izflx = MNH_ALLOCATE_ZT3D( zflx ,JIU,JJU,JKU ) -izwork = MNH_ALLOCATE_ZT3D( zwork,JIU,JJU,JKU ) +izflx = MNH_ALLOCATE_FLAT( zflx, JIU, JJU, JKU ) +izwork = MNH_ALLOCATE_FLAT( zwork, JIU, JJU, JKU ) -izdirsinzw = MNH_ALLOCATE_ZT2D( zdirsinzw,JIU,JJU ) +izdirsinzw = MNH_ALLOCATE_FLAT( zdirsinzw,JIU,JJU ) -igx_u_m_pum = MNH_ALLOCATE_ZT3D( gx_u_m_pum,JIU,JJU,JKU ) -igy_v_m_pvm = MNH_ALLOCATE_ZT3D( gy_v_m_pvm,JIU,JJU,JKU ) -igz_w_m_pwm = MNH_ALLOCATE_ZT3D( gz_w_m_pwm,JIU,JJU,JKU ) -igz_w_m_zwp = MNH_ALLOCATE_ZT3D( gz_w_m_zwp,JIU,JJU,JKU ) -izmzf_dzz = MNH_ALLOCATE_ZT3D( zmzf_dzz ,JIU,JJU,JKU ) -izdfddwdz = MNH_ALLOCATE_ZT3D( zdfddwdz ,JIU,JJU,JKU ) -izwp = MNH_ALLOCATE_ZT3D( zwp ,JIU,JJU,JKU ) +igx_u_m_pum = MNH_ALLOCATE_FLAT( gx_u_m_pum, JIU, JJU, JKU ) +igy_v_m_pvm = MNH_ALLOCATE_FLAT( gy_v_m_pvm, JIU, JJU, JKU ) +igz_w_m_pwm = MNH_ALLOCATE_FLAT( gz_w_m_pwm, JIU, JJU, JKU ) +igz_w_m_zwp = MNH_ALLOCATE_FLAT( gz_w_m_zwp, JIU, JJU, JKU ) +izmzf_dzz = MNH_ALLOCATE_FLAT( zmzf_dzz, JIU, JJU, JKU ) +izdfddwdz = MNH_ALLOCATE_FLAT( zdfddwdz, JIU, JJU, JKU ) +izwp = MNH_ALLOCATE_FLAT( zwp, JIU, JJU, JKU ) -izdu_dz_dzs_dx = MNH_ALLOCATE_ZT3DP( zdu_dz_dzs_dx,JIU,JJU, 1 , 1 ) -izdv_dz_dzs_dy = MNH_ALLOCATE_ZT3DP( zdv_dz_dzs_dy,JIU,JJU, 1 , 1 ) -izdu_dx = MNH_ALLOCATE_ZT3DP( zdu_dx ,JIU,JJU, 1 , 1 ) -izdv_dy = MNH_ALLOCATE_ZT3DP( zdv_dy ,JIU,JJU, 1 , 1 ) -izdw_dz = MNH_ALLOCATE_ZT3DP( zdw_dz ,JIU,JJU, 1 , 1 ) +izdu_dz_dzs_dx = MNH_ALLOCATE_FLAT( zdu_dz_dzs_dx,1, JIU, 1, JJU, 1 , 1 ) +izdv_dz_dzs_dy = MNH_ALLOCATE_FLAT( zdv_dz_dzs_dy,1, JIU, 1, JJU, 1 , 1 ) +izdu_dx = MNH_ALLOCATE_FLAT( zdu_dx, 1, JIU, 1, JJU, 1 , 1 ) +izdv_dy = MNH_ALLOCATE_FLAT( zdv_dy, 1, JIU, 1, JJU, 1 , 1 ) +izdw_dz = MNH_ALLOCATE_FLAT( zdw_dz, 1, JIU, 1, JJU, 1 , 1 ) -izcoeff = MNH_ALLOCATE_ZT3DP( zcoeff,JIU,JJU, 1 + jpvext , 3 + jpvext ) -izdzz = MNH_ALLOCATE_ZT3DP( zdzz ,JIU,JJU, 1 + jpvext , 3 + jpvext ) +izcoeff = MNH_ALLOCATE_FLAT( zcoeff,1, JIU, 1, JJU, 1 + jpvext, 3 + jpvext ) +izdzz = MNH_ALLOCATE_FLAT( zdzz, 1, JIU, 1, JJU, 1 + jpvext, 3 + jpvext ) #endif #ifdef MNH_OPENACC -iztmp1_device = MNH_ALLOCATE_ZT3D( ztmp1_device,JIU,JJU,JKU ) -iztmp2_device = MNH_ALLOCATE_ZT3D( ztmp2_device,JIU,JJU,JKU ) -iztmp3_device = MNH_ALLOCATE_ZT3D( ztmp3_device,JIU,JJU,JKU ) -iztmp4_device = MNH_ALLOCATE_ZT3D( ztmp4_device,JIU,JJU,JKU ) +iztmp1_device = MNH_ALLOCATE_FLAT( ztmp1_device, JIU, JJU, JKU ) +iztmp2_device = MNH_ALLOCATE_FLAT( ztmp2_device, JIU, JJU, JKU ) +iztmp3_device = MNH_ALLOCATE_FLAT( ztmp3_device, JIU, JJU, JKU ) +iztmp4_device = MNH_ALLOCATE_FLAT( ztmp4_device, JIU, JJU, JKU ) #endif !$acc data present(ZFLX, ZWORK, ZDIRSINZW, ZCOEFF, ZDZZ, & @@ -1329,12 +1329,12 @@ DEALLOCATE (ZFLX, ZWORK, ZDIRSINZW, ZCOEFF, ZDZZ, & ZMZF_DZZ, ZDFDDWDZ, ZWP, & ZDU_DZ_DZS_DX, ZDV_DZ_DZS_DY, ZDU_DX, ZDV_DY, ZDW_DZ ) #else -CALL MNH_REL_ZT3D(IZTMP1_DEVICE, IZTMP2_DEVICE, IZTMP3_DEVICE, IZTMP4_DEVICE ) -CALL MNH_REL_ZT3D(IZFLX, IZWORK, IZDIRSINZW, & - IGX_U_M_PUM, IGY_V_M_PVM, IGZ_W_M_PWM, IGZ_W_M_ZWP, & - IZMZF_DZZ, IZDFDDWDZ, IZWP, & - IZDU_DZ_DZS_DX, IZDV_DZ_DZS_DY, IZDU_DX, IZDV_DY, IZDW_DZ, & - IZCOEFF, IZDZZ ) +CALL MNH_RELEASE_FLAT( IZTMP1_DEVICE, IZTMP2_DEVICE, IZTMP3_DEVICE, IZTMP4_DEVICE ) +CALL MNH_RELEASE_FLAT( IZFLX, IZWORK, IZDIRSINZW, & + IGX_U_M_PUM, IGY_V_M_PVM, IGZ_W_M_PWM, IGZ_W_M_ZWP, & + IZMZF_DZZ, IZDFDDWDZ, IZWP, & + IZDU_DZ_DZS_DX, IZDV_DZ_DZS_DY, IZDU_DX, IZDV_DY, IZDW_DZ, & + IZCOEFF, IZDZZ ) #endif diff --git a/src/MNH/turb_hor_splt.f90 b/src/MNH/turb_hor_splt.f90 index 8996757cc..078d9a562 100644 --- a/src/MNH/turb_hor_splt.f90 +++ b/src/MNH/turb_hor_splt.f90 @@ -1,4 +1,4 @@ -!MNH_LIC Copyright 1994-2021 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 1994-2022 CNRS, Meteo-France and Universite Paul Sabatier !MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence !MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt !MNH_LIC for details. version 1. @@ -269,8 +269,7 @@ USE MODI_TURB_HOR USE MODI_TURB_HOR_TKE ! #ifdef MNH_OPENACC -USE MODE_MNH_ZWORK , ONLY : MNH_ALLOCATE_ZT3D , MNH_REL_ZT3D, MNH_ALLOCATE_ZT3DP , MNH_ALLOCATE_ZT2D, & - MNH_ALLOCATE_ZT4D , MNH_REL_ZT4D +USE MODE_MNH_ZWORK, ONLY: MNH_ALLOCATE_FLAT, MNH_RELEASE_FLAT #endif ! IMPLICIT NONE @@ -467,16 +466,16 @@ ALLOCATE(ZINV_PDYY(JIU,JJU,JKU)) ALLOCATE(ZINV_PDZZ(JIU,JJU,JKU)) ALLOCATE(ZMZM_PRHODJ(JIU,JJU,JKU)) #else -IZK = MNH_ALLOCATE_ZT3D(ZK, JIU,JJU,JKU) -IZINV_PDXX = MNH_ALLOCATE_ZT3D(ZINV_PDXX, JIU,JJU,JKU) -IZINV_PDYY = MNH_ALLOCATE_ZT3D(ZINV_PDYY, JIU,JJU,JKU) -IZINV_PDZZ = MNH_ALLOCATE_ZT3D(ZINV_PDZZ, JIU,JJU,JKU) -IZMZM_PRHODJ = MNH_ALLOCATE_ZT3D(ZMZM_PRHODJ, JIU,JJU,JKU) +IZK = MNH_ALLOCATE_FLAT( ZK, JIU, JJU, JKU ) +IZINV_PDXX = MNH_ALLOCATE_FLAT( ZINV_PDXX, JIU, JJU, JKU ) +IZINV_PDYY = MNH_ALLOCATE_FLAT( ZINV_PDYY, JIU, JJU, JKU ) +IZINV_PDZZ = MNH_ALLOCATE_FLAT( ZINV_PDZZ, JIU, JJU, JKU ) +IZMZM_PRHODJ = MNH_ALLOCATE_FLAT( ZMZM_PRHODJ, JIU, JJU, JKU ) #endif #ifdef MNH_OPENACC -IZTMP1_DEVICE = MNH_ALLOCATE_ZT3D( ZTMP1_DEVICE, JIU,JJU,JKU ) -IZTMP2_DEVICE = MNH_ALLOCATE_ZT3D( ZTMP2_DEVICE, JIU,JJU,JKU ) +IZTMP1_DEVICE = MNH_ALLOCATE_FLAT( ZTMP1_DEVICE, JIU, JJU, JKU ) +IZTMP2_DEVICE = MNH_ALLOCATE_FLAT( ZTMP2_DEVICE, JIU, JJU, JKU ) #endif !$acc data present( ZK, ZINV_PDXX, ZINV_PDYY, ZINV_PDZZ, ZMZM_PRHODJ, & @@ -522,23 +521,23 @@ IF (KSPLIT>1 .AND. CPROGRAM=='MESONH') THEN ALLOCATE(ZRTHLS(SIZE(PRTHLS,1),SIZE(PRTHLS,2),SIZE(PRTHLS,3))) ALLOCATE(ZRRS(SIZE(PRRS,1),SIZE(PRRS,2),SIZE(PRRS,3),SIZE(PRRS,4))) #else - IZUM = MNH_ALLOCATE_ZT3D(ZUM,JIU,JJU,JKU) - IZVM = MNH_ALLOCATE_ZT3D(ZVM,JIU,JJU,JKU) - IZWM = MNH_ALLOCATE_ZT3D(ZWM,JIU,JJU,JKU) + IZUM = MNH_ALLOCATE_FLAT( ZUM, JIU, JJU, JKU ) + IZVM = MNH_ALLOCATE_FLAT( ZVM, JIU, JJU, JKU ) + IZWM = MNH_ALLOCATE_FLAT( ZWM, JIU, JJU, JKU ) - IZTHLM = MNH_ALLOCATE_ZT3D(ZTHLM,JIU,JJU,JKU) - IZTKEM = MNH_ALLOCATE_ZT3D(ZTKEM,JIU,JJU,JKU) + IZTHLM = MNH_ALLOCATE_FLAT( ZTHLM, JIU, JJU, JKU ) + IZTKEM = MNH_ALLOCATE_FLAT( ZTKEM, JIU, JJU, JKU ) - IZRUS = MNH_ALLOCATE_ZT3D(ZRUS,JIU,JJU,JKU) - IZRVS = MNH_ALLOCATE_ZT3D(ZRVS,JIU,JJU,JKU) - IZRWS = MNH_ALLOCATE_ZT3D(ZRWS,JIU,JJU,JKU) - - IZRTHLS = MNH_ALLOCATE_ZT3D(ZRTHLS,JIU,JJU,JKU) + IZRUS = MNH_ALLOCATE_FLAT( ZRUS, JIU, JJU, JKU ) + IZRVS = MNH_ALLOCATE_FLAT( ZRVS, JIU, JJU, JKU ) + IZRWS = MNH_ALLOCATE_FLAT( ZRWS, JIU, JJU, JKU ) + + IZRTHLS = MNH_ALLOCATE_FLAT( ZRTHLS, JIU, JJU, JKU ) - IZSVM = MNH_ALLOCATE_ZT4D(ZSVM,JIU,JJU,JKU, SIZE(PSVM,4) ) - IZRM = MNH_ALLOCATE_ZT4D(ZRM,JIU,JJU,JKU, SIZE(PRM,4) ) - IZRSVS = MNH_ALLOCATE_ZT4D(ZRSVS,JIU,JJU,JKU, SIZE(PRSVS,4) ) - IZRRS = MNH_ALLOCATE_ZT4D(ZRRS,JIU,JJU,JKU, SIZE(PRRS,4) ) + IZSVM = MNH_ALLOCATE_FLAT( ZSVM, JIU, JJU, JKU, SIZE(PSVM,4) ) + IZRM = MNH_ALLOCATE_FLAT( ZRM, JIU, JJU, JKU, SIZE(PRM,4) ) + IZRSVS = MNH_ALLOCATE_FLAT( ZRSVS, JIU, JJU, JKU, SIZE(PRSVS,4) ) + IZRRS = MNH_ALLOCATE_FLAT( ZRRS, JIU, JJU, JKU, SIZE(PRRS,4) ) #endif @@ -763,11 +762,11 @@ IF (KSPLIT>1 .AND. CPROGRAM=='MESONH') THEN DEALLOCATE(ZRTHLS) DEALLOCATE(ZRRS) #else - CALL MNH_REL_ZT4D (SIZE(PRRS,4) , IZRRS ) - CALL MNH_REL_ZT4D (SIZE(PRSVS,4) , IZRSVS ) - CALL MNH_REL_ZT4D (SIZE(PRM,4) , IZRM ) - CALL MNH_REL_ZT4D (SIZE(PSVM,4) , IZSVM ) - CALL MNH_REL_ZT3D ( izum, izvm, izwm, izthlm, iztkem, izrus, izrvs, izrws, izrthls) + CALL MNH_RELEASE_FLAT( IZRRS ) + CALL MNH_RELEASE_FLAT( IZRSVS ) + CALL MNH_RELEASE_FLAT( IZRM ) + CALL MNH_RELEASE_FLAT( IZSVM ) + CALL MNH_RELEASE_FLAT( izum, izvm, izwm, izthlm, iztkem, izrus, izrvs, izrws, izrthls ) #endif ! @@ -817,8 +816,8 @@ DEALLOCATE(ZINV_PDYY) DEALLOCATE(ZINV_PDZZ) DEALLOCATE(ZMZM_PRHODJ) #else -CALL MNH_REL_ZT3D(IZK, IZINV_PDXX, IZINV_PDYY, IZINV_PDZZ, IZMZM_PRHODJ, & - IZTMP1_DEVICE, IZTMP2_DEVICE ) +CALL MNH_RELEASE_FLAT( IZK, IZINV_PDXX, IZINV_PDYY, IZINV_PDZZ, IZMZM_PRHODJ, & + IZTMP1_DEVICE, IZTMP2_DEVICE ) #endif if ( mppdb_initialized ) then diff --git a/src/MNH/turb_hor_sv_flux.f90 b/src/MNH/turb_hor_sv_flux.f90 index aeeb39f67..458c2bd05 100644 --- a/src/MNH/turb_hor_sv_flux.f90 +++ b/src/MNH/turb_hor_sv_flux.f90 @@ -137,7 +137,7 @@ USE MODI_LES_MEAN_SUBGRID USE MODI_SECOND_MNH ! #ifdef MNH_OPENACC -USE MODE_MNH_ZWORK , ONLY : MNH_ALLOCATE_ZT3D , MNH_REL_ZT3D, MNH_ALLOCATE_ZT3DP , MNH_ALLOCATE_ZT2D +USE MODE_MNH_ZWORK, ONLY: MNH_ALLOCATE_FLAT, MNH_RELEASE_FLAT #endif ! IMPLICIT NONE @@ -248,20 +248,20 @@ allocate( zwork2d(JIU,JJU, 1 ) ) allocate( zcoeff(JIU,JJU, 1 + jpvext : 3 + jpvext ) ) #else -izflxx = MNH_ALLOCATE_ZT3D( zflxx,JIU,JJU,JKU) -izflxy = MNH_ALLOCATE_ZT3D( zflxy,JIU,JJU,JKU) +izflxx = MNH_ALLOCATE_FLAT( zflxx, JIU, JJU, JKU ) +izflxy = MNH_ALLOCATE_FLAT( zflxy, JIU, JJU, JKU ) -izwork2d = MNH_ALLOCATE_ZT3DP( zwork2d,JIU,JJU, 1 , 1 ) +izwork2d = MNH_ALLOCATE_FLAT( zwork2d, 1, JIU, 1, JJU, 1, 1 ) -izcoeff = MNH_ALLOCATE_ZT3DP( zcoeff,JIU,JJU, 1 + jpvext , 3 + jpvext ) +izcoeff = MNH_ALLOCATE_FLAT( zcoeff, 1, JIU, 1, JJU, 1 + jpvext, 3 + jpvext ) #endif #ifdef MNH_OPENACC -iztmp1_device = MNH_ALLOCATE_ZT3D( ztmp1_device,JIU,JJU,JKU) -iztmp2_device = MNH_ALLOCATE_ZT3D( ztmp2_device,JIU,JJU,JKU) -iztmp3_device = MNH_ALLOCATE_ZT3D( ztmp3_device,JIU,JJU,JKU) -iztmp4_device = MNH_ALLOCATE_ZT3D( ztmp4_device,JIU,JJU,JKU) -iztmp5_device = MNH_ALLOCATE_ZT3D( ztmp5_device,JIU,JJU,JKU) +iztmp1_device = MNH_ALLOCATE_FLAT( ztmp1_device, JIU, JJU, JKU ) +iztmp2_device = MNH_ALLOCATE_FLAT( ztmp2_device, JIU, JJU, JKU ) +iztmp3_device = MNH_ALLOCATE_FLAT( ztmp3_device, JIU, JJU, JKU ) +iztmp4_device = MNH_ALLOCATE_FLAT( ztmp4_device, JIU, JJU, JKU ) +iztmp5_device = MNH_ALLOCATE_FLAT( ztmp5_device, JIU, JJU, JKU ) #endif !$acc data present( ZFLXX, ZFLXY, ZWORK2D, ZCOEFF, & @@ -642,8 +642,8 @@ end if #ifndef MNH_OPENACC deallocate( ZFLXX, ZFLXY, ZWORK2D, ZCOEFF ) #else -CALL MNH_REL_ZT3D ( IZFLXX, IZFLXY, IZWORK2D, IZCOEFF, & - IZTMP1_DEVICE, IZTMP2_DEVICE, IZTMP3_DEVICE, IZTMP4_DEVICE, IZTMP5_DEVICE ) +CALL MNH_RELEASE_FLAT( IZFLXX, IZFLXY, IZWORK2D, IZCOEFF, & + IZTMP1_DEVICE, IZTMP2_DEVICE, IZTMP3_DEVICE, IZTMP4_DEVICE, IZTMP5_DEVICE ) #endif !$acc end data diff --git a/src/MNH/turb_hor_thermo_corr.f90 b/src/MNH/turb_hor_thermo_corr.f90 index eb3ec18e8..137754554 100644 --- a/src/MNH/turb_hor_thermo_corr.f90 +++ b/src/MNH/turb_hor_thermo_corr.f90 @@ -151,8 +151,7 @@ USE MODI_BITREP #endif ! #ifdef MNH_OPENACC -USE MODE_MNH_ZWORK , ONLY : MNH_ALLOCATE_ZT3D , MNH_REL_ZT3D, MNH_ALLOCATE_ZT3DP , MNH_ALLOCATE_ZT2D, & - MNH_ALLOCATE_ZT4D , MNH_REL_ZT4D +USE MODE_MNH_ZWORK, ONLY: MNH_ALLOCATE_FLAT, MNH_RELEASE_FLAT #endif ! IMPLICIT NONE @@ -270,22 +269,22 @@ allocate( za (JIU,JJU,JKU ) ) allocate( zcoeff(JIU,JJU, 1 + jpvext : 3 + jpvext ) ) #else -izflx = MNH_ALLOCATE_ZT3D( zflx ,JIU,JJU,JKU ) -izwork = MNH_ALLOCATE_ZT3D( zwork ,JIU,JJU,JKU ) -iza = MNH_ALLOCATE_ZT3D( za ,JIU,JJU,JKU ) +izflx = MNH_ALLOCATE_FLAT( zflx , JIU, JJU, JKU ) +izwork = MNH_ALLOCATE_FLAT( zwork , JIU, JJU, JKU ) +iza = MNH_ALLOCATE_FLAT( za , JIU, JJU, JKU ) -izcoeff= MNH_ALLOCATE_ZT3DP( zcoeff,JIU,JJU, 1 + jpvext , 3 + jpvext ) +izcoeff= MNH_ALLOCATE_FLAT( zcoeff, 1, JIU, 1, JJU, 1 + jpvext, 3 + jpvext ) #endif #ifdef MNH_OPENACC -iztmp1_device= MNH_ALLOCATE_ZT3D( ztmp1_device,JIU,JJU,JKU ) -iztmp2_device= MNH_ALLOCATE_ZT3D( ztmp2_device,JIU,JJU,JKU ) -iztmp3_device= MNH_ALLOCATE_ZT3D( ztmp3_device,JIU,JJU,JKU ) -iztmp4_device= MNH_ALLOCATE_ZT3D( ztmp4_device,JIU,JJU,JKU ) -iztmp5_device= MNH_ALLOCATE_ZT3D( ztmp5_device,JIU,JJU,JKU ) -iztmp6_device= MNH_ALLOCATE_ZT3D( ztmp6_device,JIU,JJU,JKU ) -iztmp7_device= MNH_ALLOCATE_ZT3D( ztmp7_device,JIU,JJU,JKU ) -iztmp8_device= MNH_ALLOCATE_ZT3D( ztmp8_device,JIU,JJU,JKU ) +iztmp1_device= MNH_ALLOCATE_FLAT( ztmp1_device, JIU, JJU, JKU ) +iztmp2_device= MNH_ALLOCATE_FLAT( ztmp2_device, JIU, JJU, JKU ) +iztmp3_device= MNH_ALLOCATE_FLAT( ztmp3_device, JIU, JJU, JKU ) +iztmp4_device= MNH_ALLOCATE_FLAT( ztmp4_device, JIU, JJU, JKU ) +iztmp5_device= MNH_ALLOCATE_FLAT( ztmp5_device, JIU, JJU, JKU ) +iztmp6_device= MNH_ALLOCATE_FLAT( ztmp6_device, JIU, JJU, JKU ) +iztmp7_device= MNH_ALLOCATE_FLAT( ztmp7_device, JIU, JJU, JKU ) +iztmp8_device= MNH_ALLOCATE_FLAT( ztmp8_device, JIU, JJU, JKU ) #endif !$acc data present( ZFLX, ZWORK, ZA, ZCOEFF, & @@ -891,7 +890,7 @@ end if #ifndef MNH_OPENACC deallocate (zflx,zwork,za,zcoeff) #else -CALL MNH_REL_ZT3D ( IZFLX, IZWORK, IZA, IZCOEFF, & +CALL MNH_RELEASE_FLAT( IZFLX, IZWORK, IZA, IZCOEFF, & IZTMP1_DEVICE, IZTMP2_DEVICE, IZTMP3_DEVICE, IZTMP4_DEVICE, & IZTMP5_DEVICE, IZTMP6_DEVICE, IZTMP7_DEVICE, IZTMP8_DEVICE ) #endif diff --git a/src/MNH/turb_hor_thermo_flux.f90 b/src/MNH/turb_hor_thermo_flux.f90 index 2ef2f3d1a..eddbe7796 100644 --- a/src/MNH/turb_hor_thermo_flux.f90 +++ b/src/MNH/turb_hor_thermo_flux.f90 @@ -152,8 +152,7 @@ USE MODI_LES_MEAN_SUBGRID USE MODI_SECOND_MNH ! #ifdef MNH_OPENACC -USE MODE_MNH_ZWORK , ONLY : MNH_ALLOCATE_FLAT, MNH_ALLOCATE_ZT3D , MNH_REL_ZT3D, MNH_ALLOCATE_ZT3DP, & - MNH_RELEASE_FLAT, MNH_CHECK_IN_ZT3D, MNH_CHECK_OUT_ZT3D +USE MODE_MNH_ZWORK, ONLY: MNH_ALLOCATE_FLAT, MNH_RELEASE_FLAT #endif ! IMPLICIT NONE @@ -284,24 +283,23 @@ allocate( zflxc(JIU,JJU,JKU) ) allocate( zcoeff(JIU,JJU, 1 + jpvext : 3 + jpvext ) ) #else -CALL MNH_CHECK_IN_ZT3D("TURB_HOR_THERMO_FLUX") -izflx = MNH_ALLOCATE_FLAT( zflx, 1, JIU, 1, JJU,1, JKU ) -izflxc = MNH_ALLOCATE_FLAT( zflxc, 1, JIU, 1, JJU,1, JKU ) -! izvptv= MNH_ALLOCATE_ZT3D( zvptv,JIU,JJU,JKU ) +izflx = MNH_ALLOCATE_FLAT( zflx, JIU, JJU, JKU ) +izflxc = MNH_ALLOCATE_FLAT( zflxc, JIU, JJU, JKU ) +! izvptv= MNH_ALLOCATE_FLAT( zvptv, JIU, JJU, JKU ) -izcoeff= MNH_ALLOCATE_ZT3DP( zcoeff,JIU,JJU, 1 + jpvext , 3 + jpvext ) +izcoeff= MNH_ALLOCATE_FLAT( zcoeff, 1, JIU, 1, JJU, 1 + jpvext, 3 + jpvext ) #endif #ifdef MNH_OPENACC -iztmp1_device= MNH_ALLOCATE_ZT3D( ztmp1_device,JIU,JJU,JKU ) -iztmp2_device= MNH_ALLOCATE_ZT3D( ztmp2_device,JIU,JJU,JKU ) -iztmp3_device= MNH_ALLOCATE_ZT3D( ztmp3_device,JIU,JJU,JKU ) -iztmp4_device= MNH_ALLOCATE_ZT3D( ztmp4_device,JIU,JJU,JKU ) -iztmp5_device= MNH_ALLOCATE_ZT3D( ztmp5_device,JIU,JJU,JKU ) -iztmp6_device= MNH_ALLOCATE_ZT3D( ztmp6_device,JIU,JJU,JKU ) -iztmp7_device= MNH_ALLOCATE_ZT3D( ztmp7_device,JIU,JJU,JKU ) -iztmp8_device= MNH_ALLOCATE_ZT3D( ztmp8_device,JIU,JJU,JKU ) +iztmp1_device = MNH_ALLOCATE_FLAT( ztmp1_device, JIU, JJU, JKU ) +iztmp2_device = MNH_ALLOCATE_FLAT( ztmp2_device, JIU, JJU, JKU ) +iztmp3_device = MNH_ALLOCATE_FLAT( ztmp3_device, JIU, JJU, JKU ) +iztmp4_device = MNH_ALLOCATE_FLAT( ztmp4_device, JIU, JJU, JKU ) +iztmp5_device = MNH_ALLOCATE_FLAT( ztmp5_device, JIU, JJU, JKU ) +iztmp6_device = MNH_ALLOCATE_FLAT( ztmp6_device, JIU, JJU, JKU ) +iztmp7_device = MNH_ALLOCATE_FLAT( ztmp7_device, JIU, JJU, JKU ) +iztmp8_device = MNH_ALLOCATE_FLAT( ztmp8_device, JIU, JJU, JKU ) #endif !$acc data present( ZFLX, ZFLXC, ZCOEFF, & @@ -1853,12 +1851,9 @@ end if #ifndef MNH_OPENACC deallocate (zflx,zflxc,zcoeff) #else -CALL MNH_RELEASE_FLAT( IZFLXC ) -CALL MNH_RELEASE_FLAT( IZFLX ) -CALL MNH_REL_ZT3D ( IZCOEFF, & - IZTMP1_DEVICE, IZTMP2_DEVICE, IZTMP3_DEVICE, IZTMP4_DEVICE, & - IZTMP5_DEVICE, IZTMP6_DEVICE, IZTMP7_DEVICE, IZTMP8_DEVICE ) -CALL MNH_CHECK_OUT_ZT3D("TURB_HOR_THERMO_FLUX") +CALL MNH_RELEASE_FLAT( IZFLX, IZFLXC, IZCOEFF, & + IZTMP1_DEVICE, IZTMP2_DEVICE, IZTMP3_DEVICE, IZTMP4_DEVICE, & + IZTMP5_DEVICE, IZTMP6_DEVICE, IZTMP7_DEVICE, IZTMP8_DEVICE ) #endif !$acc end data diff --git a/src/MNH/turb_hor_tke.f90 b/src/MNH/turb_hor_tke.f90 index c4cc5f5f1..1a673d844 100644 --- a/src/MNH/turb_hor_tke.f90 +++ b/src/MNH/turb_hor_tke.f90 @@ -100,7 +100,7 @@ USE MODI_LES_MEAN_SUBGRID USE MODI_SECOND_MNH #ifdef MNH_OPENACC -USE MODE_MNH_ZWORK , ONLY : MNH_ALLOCATE_ZT3D , MNH_REL_ZT3D, MNH_ALLOCATE_ZT3DP , MNH_ALLOCATE_ZT2D +USE MODE_MNH_ZWORK, ONLY: MNH_ALLOCATE_FLAT, MNH_RELEASE_FLAT #endif IMPLICIT NONE @@ -181,17 +181,17 @@ allocate( zflx (JIU,JJU,JKU ) ) allocate( zcoeff(JIU,JJU, 1 + jpvext : 3 + jpvext ) ) #else -izflx = MNH_ALLOCATE_ZT3D( zflx ,JIU,JJU,JKU ) +izflx = MNH_ALLOCATE_FLAT( zflx, JIU, JJU, JKU ) -izcoeff = MNH_ALLOCATE_ZT3DP( zcoeff,JIU,JJU, 1 + jpvext , 3 + jpvext ) +izcoeff = MNH_ALLOCATE_FLAT( zcoeff, 1, JIU, 1, JJU, 1 + jpvext, 3 + jpvext ) #endif #ifdef MNH_OPENACC -iztmp1_device = MNH_ALLOCATE_ZT3D( ztmp1_device,JIU,JJU,JKU) -iztmp2_device = MNH_ALLOCATE_ZT3D( ztmp2_device,JIU,JJU,JKU) -iztmp3_device = MNH_ALLOCATE_ZT3D( ztmp3_device,JIU,JJU,JKU) -iztmp4_device = MNH_ALLOCATE_ZT3D( ztmp4_device,JIU,JJU,JKU) +iztmp1_device = MNH_ALLOCATE_FLAT( ztmp1_device, JIU, JJU, JKU ) +iztmp2_device = MNH_ALLOCATE_FLAT( ztmp2_device, JIU, JJU, JKU ) +iztmp3_device = MNH_ALLOCATE_FLAT( ztmp3_device, JIU, JJU, JKU ) +iztmp4_device = MNH_ALLOCATE_FLAT( ztmp4_device, JIU, JJU, JKU ) #endif !$acc data present( ZCOEFF, ZFLX, & @@ -527,8 +527,8 @@ end if #ifndef MNH_OPENACC deallocate( ZCOEFF, ZFLX ) #else -CALL MNH_REL_ZT3D( IZFLX, IZCOEFF, & - IZTMP1_DEVICE, IZTMP2_DEVICE, IZTMP3_DEVICE, IZTMP4_DEVICE ) +CALL MNH_RELEASE_FLAT( IZFLX, IZCOEFF, & + IZTMP1_DEVICE, IZTMP2_DEVICE, IZTMP3_DEVICE, IZTMP4_DEVICE ) #endif !$acc end data diff --git a/src/MNH/turb_hor_uv.f90 b/src/MNH/turb_hor_uv.f90 index a4f3c565d..ad31595c5 100644 --- a/src/MNH/turb_hor_uv.f90 +++ b/src/MNH/turb_hor_uv.f90 @@ -155,7 +155,7 @@ USE MODI_BITREP #endif ! #ifdef MNH_OPENACC -USE MODE_MNH_ZWORK , ONLY : MNH_ALLOCATE_ZT3D , MNH_REL_ZT3D, MNH_ALLOCATE_ZT3DP , MNH_ALLOCATE_ZT2D +USE MODE_MNH_ZWORK, ONLY: MNH_ALLOCATE_FLAT, MNH_RELEASE_FLAT #endif ! IMPLICIT NONE @@ -289,23 +289,23 @@ allocate( zdirsinzw(JIU,JJU ) ) allocate( gy_u_uv_pum(JIU,JJU,JKU ) ) allocate( gx_v_uv_pvm(JIU,JJU,JKU ) ) #else -izflx = MNH_ALLOCATE_ZT3D( zflx ,JIU,JJU,JKU ) -izwork = MNH_ALLOCATE_ZT3D( zwork,JIU,JJU,JKU ) +izflx = MNH_ALLOCATE_FLAT( zflx, JIU, JJU, JKU ) +izwork = MNH_ALLOCATE_FLAT( zwork, JIU, JJU, JKU ) -izdirsinzw = MNH_ALLOCATE_ZT2D( zdirsinzw,JIU,JJU ) +izdirsinzw = MNH_ALLOCATE_FLAT( zdirsinzw, JIU, JJU ) -igy_u_uv_pum = MNH_ALLOCATE_ZT3D( gy_u_uv_pum,JIU,JJU,JKU ) -igx_v_uv_pvm = MNH_ALLOCATE_ZT3D( gx_v_uv_pvm,JIU,JJU,JKU ) +igy_u_uv_pum = MNH_ALLOCATE_FLAT( gy_u_uv_pum, JIU, JJU, JKU ) +igx_v_uv_pvm = MNH_ALLOCATE_FLAT( gx_v_uv_pvm, JIU, JJU, JKU ) #endif #ifdef MNH_OPENACC -iztmp1_device = MNH_ALLOCATE_ZT3D( ztmp1_device,JIU,JJU,JKU ) -iztmp2_device = MNH_ALLOCATE_ZT3D( ztmp2_device,JIU,JJU,JKU ) -iztmp3_device = MNH_ALLOCATE_ZT3D( ztmp3_device,JIU,JJU,JKU ) -iztmp4_device = MNH_ALLOCATE_ZT3D( ztmp4_device,JIU,JJU,JKU ) -iztmp5_device = MNH_ALLOCATE_ZT3D( ztmp5_device,JIU,JJU,JKU ) -iztmp6_device = MNH_ALLOCATE_ZT3D( ztmp6_device,JIU,JJU,JKU ) -iztmp7_device = MNH_ALLOCATE_ZT3D( ztmp7_device,JIU,JJU,JKU ) +iztmp1_device = MNH_ALLOCATE_FLAT( ztmp1_device, JIU, JJU, JKU ) +iztmp2_device = MNH_ALLOCATE_FLAT( ztmp2_device, JIU, JJU, JKU ) +iztmp3_device = MNH_ALLOCATE_FLAT( ztmp3_device, JIU, JJU, JKU ) +iztmp4_device = MNH_ALLOCATE_FLAT( ztmp4_device, JIU, JJU, JKU ) +iztmp5_device = MNH_ALLOCATE_FLAT( ztmp5_device, JIU, JJU, JKU ) +iztmp6_device = MNH_ALLOCATE_FLAT( ztmp6_device, JIU, JJU, JKU ) +iztmp7_device = MNH_ALLOCATE_FLAT( ztmp7_device, JIU, JJU, JKU ) #endif !$acc data present( ZFLX, ZWORK, ZDIRSINZW, GY_U_UV_PUM, GX_V_UV_PVM, & @@ -835,9 +835,9 @@ end if #ifndef MNH_OPENACC deallocate ( ZFLX, ZWORK, ZDIRSINZW, GY_U_UV_PUM, GX_V_UV_PVM ) #else -CALL MNH_REL_ZT3D ( IZFLX, IZWORK, IZDIRSINZW, IGY_U_UV_PUM, IGX_V_UV_PVM, & - IZTMP1_DEVICE, IZTMP2_DEVICE, IZTMP3_DEVICE, IZTMP4_DEVICE, & - IZTMP5_DEVICE, IZTMP6_DEVICE, IZTMP7_DEVICE ) +CALL MNH_RELEASE_FLAT( IZFLX, IZWORK, IZDIRSINZW, IGY_U_UV_PUM, IGX_V_UV_PVM, & + IZTMP1_DEVICE, IZTMP2_DEVICE, IZTMP3_DEVICE, IZTMP4_DEVICE, & + IZTMP5_DEVICE, IZTMP6_DEVICE, IZTMP7_DEVICE ) #endif diff --git a/src/MNH/turb_hor_uw.f90 b/src/MNH/turb_hor_uw.f90 index bb57c98c4..dc4bacc2d 100644 --- a/src/MNH/turb_hor_uw.f90 +++ b/src/MNH/turb_hor_uw.f90 @@ -139,7 +139,7 @@ USE MODI_LES_MEAN_SUBGRID USE MODI_SECOND_MNH #ifdef MNH_OPENACC -USE MODE_MNH_ZWORK , ONLY : MNH_ALLOCATE_ZT3D , MNH_REL_ZT3D, MNH_ALLOCATE_ZT3DP , MNH_ALLOCATE_ZT2D +USE MODE_MNH_ZWORK, ONLY: MNH_ALLOCATE_FLAT, MNH_RELEASE_FLAT #endif IMPLICIT NONE @@ -245,17 +245,17 @@ allocate( zwork(JIU,JJU,JKU ) ) allocate( gx_w_uw_pwm(JIU,JJU,JKU ) ) #else -izflx = MNH_ALLOCATE_ZT3D( zflx ,JIU,JJU,JKU) -izwork = MNH_ALLOCATE_ZT3D( zwork,JIU,JJU,JKU) +izflx = MNH_ALLOCATE_FLAT( zflx, JIU, JJU, JKU ) +izwork = MNH_ALLOCATE_FLAT( zwork, JIU, JJU, JKU ) -igx_w_uw_pwm = MNH_ALLOCATE_ZT3D( gx_w_uw_pwm,JIU,JJU,JKU) +igx_w_uw_pwm = MNH_ALLOCATE_FLAT( gx_w_uw_pwm, JIU, JJU, JKU ) #endif #ifdef MNH_OPENACC -iztmp1_device = MNH_ALLOCATE_ZT3D( ztmp1_device,JIU,JJU,JKU) -iztmp2_device = MNH_ALLOCATE_ZT3D( ztmp2_device,JIU,JJU,JKU) -iztmp3_device = MNH_ALLOCATE_ZT3D( ztmp3_device,JIU,JJU,JKU) -iztmp4_device = MNH_ALLOCATE_ZT3D( ztmp4_device,JIU,JJU,JKU) +iztmp1_device = MNH_ALLOCATE_FLAT( ztmp1_device, JIU, JJU, JKU ) +iztmp2_device = MNH_ALLOCATE_FLAT( ztmp2_device, JIU, JJU, JKU ) +iztmp3_device = MNH_ALLOCATE_FLAT( ztmp3_device, JIU, JJU, JKU ) +iztmp4_device = MNH_ALLOCATE_FLAT( ztmp4_device, JIU, JJU, JKU ) #endif !$acc data present( ZFLX, ZWORK, GX_W_UW_PWM, & @@ -594,8 +594,8 @@ end if #ifndef MNH_OPENACC deallocate( ZFLX, ZWORK, GX_W_UW_PWM ) #else -CALL MNH_REL_ZT3D ( IZFLX, IZWORK, IGX_W_UW_PWM, & - IZTMP1_DEVICE, IZTMP2_DEVICE, IZTMP3_DEVICE, IZTMP4_DEVICE ) +CALL MNH_RELEASE_FLAT( IZFLX, IZWORK, IGX_W_UW_PWM, & + IZTMP1_DEVICE, IZTMP2_DEVICE, IZTMP3_DEVICE, IZTMP4_DEVICE ) #endif !$acc end data diff --git a/src/MNH/turb_hor_vw.f90 b/src/MNH/turb_hor_vw.f90 index 2e03a3586..a3340a9a0 100644 --- a/src/MNH/turb_hor_vw.f90 +++ b/src/MNH/turb_hor_vw.f90 @@ -138,7 +138,7 @@ USE MODI_LES_MEAN_SUBGRID USE MODI_SECOND_MNH #ifdef MNH_OPENACC -USE MODE_MNH_ZWORK , ONLY : MNH_ALLOCATE_ZT3D , MNH_REL_ZT3D, MNH_ALLOCATE_ZT3DP , MNH_ALLOCATE_ZT2D +USE MODE_MNH_ZWORK, ONLY: MNH_ALLOCATE_FLAT, MNH_RELEASE_FLAT #endif IMPLICIT NONE @@ -242,17 +242,17 @@ allocate( zwork(JIU,JJU,JKU ) ) allocate( gy_w_vw_pwm(JIU,JJU,JKU ) ) #else -izflx = MNH_ALLOCATE_ZT3D( zflx ,JIU,JJU,JKU) -izwork = MNH_ALLOCATE_ZT3D( zwork,JIU,JJU,JKU) +izflx = MNH_ALLOCATE_FLAT( zflx, JIU, JJU, JKU ) +izwork = MNH_ALLOCATE_FLAT( zwork, JIU, JJU, JKU ) -igy_w_vw_pwm = MNH_ALLOCATE_ZT3D( gy_w_vw_pwm,JIU,JJU,JKU) +igy_w_vw_pwm = MNH_ALLOCATE_FLAT( gy_w_vw_pwm, JIU, JJU, JKU ) #endif #ifdef MNH_OPENACC -iztmp1_device = MNH_ALLOCATE_ZT3D( ztmp1_device,JIU,JJU,JKU) -iztmp2_device = MNH_ALLOCATE_ZT3D( ztmp2_device,JIU,JJU,JKU) -iztmp3_device = MNH_ALLOCATE_ZT3D( ztmp3_device,JIU,JJU,JKU) -iztmp4_device = MNH_ALLOCATE_ZT3D( ztmp4_device,JIU,JJU,JKU) +iztmp1_device = MNH_ALLOCATE_FLAT( ztmp1_device, JIU, JJU, JKU ) +iztmp2_device = MNH_ALLOCATE_FLAT( ztmp2_device, JIU, JJU, JKU ) +iztmp3_device = MNH_ALLOCATE_FLAT( ztmp3_device, JIU, JJU, JKU ) +iztmp4_device = MNH_ALLOCATE_FLAT( ztmp4_device, JIU, JJU, JKU ) #endif !$acc data present( ZFLX, ZWORK, GY_W_VW_PWM, & @@ -623,8 +623,8 @@ end if #ifndef MNH_OPENACC deallocate( ZFLX, ZWORK, GY_W_VW_PWM ) #else -CALL MNH_REL_ZT3D ( IZFLX, IZWORK, IGY_W_VW_PWM, & - IZTMP1_DEVICE, IZTMP2_DEVICE, IZTMP3_DEVICE, IZTMP4_DEVICE ) +CALL MNH_RELEASE_FLAT( IZFLX, IZWORK, IGY_W_VW_PWM, & + IZTMP1_DEVICE, IZTMP2_DEVICE, IZTMP3_DEVICE, IZTMP4_DEVICE ) #endif !$acc end data diff --git a/src/MNH/turb_ver.f90 b/src/MNH/turb_ver.f90 index 6ed71c529..ebc1dc40b 100644 --- a/src/MNH/turb_ver.f90 +++ b/src/MNH/turb_ver.f90 @@ -343,7 +343,7 @@ USE MODE_PRANDTL USE MODI_SECOND_MNH ! #ifdef MNH_OPENACC -USE MODE_MNH_ZWORK, ONLY : MNH_ALLOCATE_ZT3D , MNH_REL_ZT3D, MNH_ALLOCATE_ZT4D , MNH_REL_ZT4D +USE MODE_MNH_ZWORK, ONLY: MNH_ALLOCATE_FLAT, MNH_RELEASE_FLAT #endif ! IMPLICIT NONE @@ -584,26 +584,26 @@ allocate( zwv (JIU,JJU,JKU) ) allocate( zthlp (JIU,JJU,JKU) ) allocate( zrp (JIU,JJU,JKU) ) #else -izbeta = MNH_ALLOCATE_ZT3D( zbeta ,JIU,JJU,JKU ) -izsqrt_tke = MNH_ALLOCATE_ZT3D( zsqrt_tke,JIU,JJU,JKU ) -izdth_dz = MNH_ALLOCATE_ZT3D( zdth_dz ,JIU,JJU,JKU ) -izdr_dz = MNH_ALLOCATE_ZT3D( zdr_dz ,JIU,JJU,JKU ) -izred2th3 = MNH_ALLOCATE_ZT3D( zred2th3 ,JIU,JJU,JKU ) -izred2r3 = MNH_ALLOCATE_ZT3D( zred2r3 ,JIU,JJU,JKU ) -izred2thr3 = MNH_ALLOCATE_ZT3D( zred2thr3,JIU,JJU,JKU ) -izbll_o_e = MNH_ALLOCATE_ZT3D( zbll_o_e ,JIU,JJU,JKU ) -izetheta = MNH_ALLOCATE_ZT3D( zetheta ,JIU,JJU,JKU ) -izemoist = MNH_ALLOCATE_ZT3D( zemoist ,JIU,JJU,JKU ) -izredth1 = MNH_ALLOCATE_ZT3D( zredth1 ,JIU,JJU,JKU ) -izredr1 = MNH_ALLOCATE_ZT3D( zredr1 ,JIU,JJU,JKU ) -izphi3 = MNH_ALLOCATE_ZT3D( zphi3 ,JIU,JJU,JKU ) -izpsi3 = MNH_ALLOCATE_ZT3D( zpsi3 ,JIU,JJU,JKU ) -izd = MNH_ALLOCATE_ZT3D( zd ,JIU,JJU,JKU ) -izwthv = MNH_ALLOCATE_ZT3D( zwthv ,JIU,JJU,JKU ) -izwu = MNH_ALLOCATE_ZT3D( zwu ,JIU,JJU,JKU ) -izwv = MNH_ALLOCATE_ZT3D( zwv ,JIU,JJU,JKU ) -izthlp = MNH_ALLOCATE_ZT3D( zthlp ,JIU,JJU,JKU ) -izrp = MNH_ALLOCATE_ZT3D( zrp ,JIU,JJU,JKU ) +izbeta = MNH_ALLOCATE_FLAT( zbeta, JIU, JJU, JKU ) +izsqrt_tke = MNH_ALLOCATE_FLAT( zsqrt_tke, JIU, JJU, JKU ) +izdth_dz = MNH_ALLOCATE_FLAT( zdth_dz, JIU, JJU, JKU ) +izdr_dz = MNH_ALLOCATE_FLAT( zdr_dz, JIU, JJU, JKU ) +izred2th3 = MNH_ALLOCATE_FLAT( zred2th3, JIU, JJU, JKU ) +izred2r3 = MNH_ALLOCATE_FLAT( zred2r3, JIU, JJU, JKU ) +izred2thr3 = MNH_ALLOCATE_FLAT( zred2thr3, JIU, JJU, JKU ) +izbll_o_e = MNH_ALLOCATE_FLAT( zbll_o_e, JIU, JJU, JKU ) +izetheta = MNH_ALLOCATE_FLAT( zetheta, JIU, JJU, JKU ) +izemoist = MNH_ALLOCATE_FLAT( zemoist, JIU, JJU, JKU ) +izredth1 = MNH_ALLOCATE_FLAT( zredth1, JIU, JJU, JKU ) +izredr1 = MNH_ALLOCATE_FLAT( zredr1, JIU, JJU, JKU ) +izphi3 = MNH_ALLOCATE_FLAT( zphi3, JIU, JJU, JKU ) +izpsi3 = MNH_ALLOCATE_FLAT( zpsi3, JIU, JJU, JKU ) +izd = MNH_ALLOCATE_FLAT( zd, JIU, JJU, JKU ) +izwthv = MNH_ALLOCATE_FLAT( zwthv, JIU, JJU, JKU ) +izwu = MNH_ALLOCATE_FLAT( zwu, JIU, JJU, JKU ) +izwv = MNH_ALLOCATE_FLAT( zwv, JIU, JJU, JKU ) +izthlp = MNH_ALLOCATE_FLAT( zthlp, JIU, JJU, JKU ) +izrp = MNH_ALLOCATE_FLAT( zrp, JIU, JJU, JKU ) #endif #ifndef MNH_OPENACC @@ -612,10 +612,10 @@ allocate( zreds1 (JIU,JJU,JKU, nsv ) ) allocate( zred2ths(JIU,JJU,JKU, nsv ) ) allocate( zred2rs (JIU,JJU,JKU, nsv ) ) #else -izpsi_sv = MNH_ALLOCATE_ZT4D( zpsi_sv ,JIU,JJU,JKU, nsv ) -izreds1 = MNH_ALLOCATE_ZT4D( zreds1 ,JIU,JJU,JKU, nsv ) -izred2ths = MNH_ALLOCATE_ZT4D( zred2ths,JIU,JJU,JKU, nsv ) -izred2rs = MNH_ALLOCATE_ZT4D( zred2rs ,JIU,JJU,JKU, nsv ) +izpsi_sv = MNH_ALLOCATE_FLAT( zpsi_sv, JIU, JJU, JKU, nsv ) +izreds1 = MNH_ALLOCATE_FLAT( zreds1, JIU, JJU, JKU, nsv ) +izred2ths = MNH_ALLOCATE_FLAT( zred2ths, JIU, JJU, JKU, nsv ) +izred2rs = MNH_ALLOCATE_FLAT( zred2rs, JIU, JJU, JKU, nsv ) #endif !$acc data present (ZBETA, ZSQRT_TKE, ZDTH_DZ, ZDR_DZ, ZRED2TH3, ZRED2R3, ZRED2THR3,& @@ -920,20 +920,14 @@ end if DEALLOCATE(zbeta,zsqrt_tke,zdth_dz,zdr_dz,zred2th3,zred2r3,zred2thr3, & zbll_o_e,zetheta,zemoist,zredth1,zredr1,zphi3,zpsi3, & zd,zwthv,zwu,zwv,zthlp,zrp) -#else -CALL MNH_REL_ZT3D(izbeta,izsqrt_tke,izdth_dz,izdr_dz,izred2th3,izred2r3,izred2thr3, & - izbll_o_e,izetheta,izemoist,izredth1,izredr1,izphi3,izpsi3, & - izd,izwthv,izwu,izwv,izthlp,izrp) -#endif - -#ifndef MNH_OPENACC DEALLOCATE(zpsi_sv,zreds1,zred2ths,zred2rs) #else -CALL MNH_REL_ZT4D (nsv , izred2rs ) -CALL MNH_REL_ZT4D (nsv , izred2ths ) -CALL MNH_REL_ZT4D (nsv , izreds1 ) -CALL MNH_REL_ZT4D (nsv , izpsi_sv ) +CALL MNH_RELEASE_FLAT( izpsi_sv, izreds1, izred2ths, izred2rs ) +CALL MNH_RELEASE_FLAT( izbeta, izsqrt_tke, izdth_dz, izdr_dz, izred2th3, izred2r3, izred2thr3, & + izbll_o_e, izetheta, izemoist, izredth1, izredr1, izphi3, izpsi3, & + izd, izwthv, izwu, izwv, izthlp, izrp ) #endif + !$acc end data !---------------------------------------------------------------------------- diff --git a/src/MNH/turb_ver_dyn_flux.f90 b/src/MNH/turb_ver_dyn_flux.f90 index 15df973c6..18d9a481b 100644 --- a/src/MNH/turb_ver_dyn_flux.f90 +++ b/src/MNH/turb_ver_dyn_flux.f90 @@ -321,7 +321,7 @@ USE MODE_MSG #endif ! #ifdef MNH_OPENACC -USE MODE_MNH_ZWORK , ONLY : MNH_ALLOCATE_ZT3D , MNH_REL_ZT3D, MNH_ALLOCATE_ZT3DP , MNH_ALLOCATE_ZT2D +USE MODE_MNH_ZWORK, ONLY: MNH_ALLOCATE_FLAT, MNH_RELEASE_FLAT #endif IMPLICIT NONE @@ -488,27 +488,27 @@ allocate( zcoefflxv(JIU,JJU, 1 ) ) allocate( zuslopem (JIU,JJU, 1 ) ) allocate( zvslopem (JIU,JJU, 1 ) ) #else -izdirsinzw = MNH_ALLOCATE_ZT2D( zdirsinzw,JIU,JJU ) +izdirsinzw = MNH_ALLOCATE_FLAT( zdirsinzw, JIU, JJU ) -izcoefs = MNH_ALLOCATE_ZT3DP( zcoefs ,JIU,JJU, 1 , 1 ) +izcoefs = MNH_ALLOCATE_FLAT( zcoefs, 1, JIU, 1, JJU, 1, 1 ) -iza = MNH_ALLOCATE_ZT3D( za ,JIU,JJU,JKU ) -izres = MNH_ALLOCATE_ZT3D( zres ,JIU,JJU,JKU ) -izflxz = MNH_ALLOCATE_ZT3D( zflxz ,JIU,JJU,JKU ) -izsource = MNH_ALLOCATE_ZT3D( zsource ,JIU,JJU,JKU ) -izkeff = MNH_ALLOCATE_ZT3D( zkeff ,JIU,JJU,JKU ) +iza = MNH_ALLOCATE_FLAT( za, JIU, JJU, JKU ) +izres = MNH_ALLOCATE_FLAT( zres, JIU, JJU, JKU ) +izflxz = MNH_ALLOCATE_FLAT( zflxz, JIU, JJU, JKU ) +izsource = MNH_ALLOCATE_FLAT( zsource, JIU, JJU, JKU ) +izkeff = MNH_ALLOCATE_FLAT( zkeff, JIU, JJU, JKU ) -izcoefflxu = MNH_ALLOCATE_ZT3DP( zcoefflxu,JIU,JJU, 1 , 1 ) -izcoefflxv = MNH_ALLOCATE_ZT3DP( zcoefflxv,JIU,JJU, 1 , 1 ) -izuslopem = MNH_ALLOCATE_ZT3DP( zuslopem ,JIU,JJU, 1 , 1 ) -izvslopem = MNH_ALLOCATE_ZT3DP( zvslopem ,JIU,JJU, 1 , 1 ) +izcoefflxu = MNH_ALLOCATE_FLAT( zcoefflxu, 1, JIU, 1, JJU, 1 , 1 ) +izcoefflxv = MNH_ALLOCATE_FLAT( zcoefflxv, 1, JIU, 1, JJU, 1 , 1 ) +izuslopem = MNH_ALLOCATE_FLAT( zuslopem, 1, JIU, 1, JJU, 1 , 1 ) +izvslopem = MNH_ALLOCATE_FLAT( zvslopem, 1, JIU, 1, JJU, 1 , 1 ) #endif #ifdef MNH_OPENACC -iztmp1_device = MNH_ALLOCATE_ZT3D( ztmp1_device,JIU,JJU,JKU ) -iztmp2_device = MNH_ALLOCATE_ZT3D( ztmp2_device,JIU,JJU,JKU ) -iztmp3_device = MNH_ALLOCATE_ZT3D( ztmp3_device,JIU,JJU,JKU ) -iztmp4_device = MNH_ALLOCATE_ZT3D( ztmp4_device,JIU,JJU,JKU ) +iztmp1_device = MNH_ALLOCATE_FLAT( ztmp1_device, JIU, JJU, JKU ) +iztmp2_device = MNH_ALLOCATE_FLAT( ztmp2_device, JIU, JJU, JKU ) +iztmp3_device = MNH_ALLOCATE_FLAT( ztmp3_device, JIU, JJU, JKU ) +iztmp4_device = MNH_ALLOCATE_FLAT( ztmp4_device, JIU, JJU, JKU ) #endif !$acc data present( zdirsinzw, zcoefs, za, zres, zflxz, zsource, zkeff, zcoefflxu, zcoefflxv, zuslopem, zvslopem, & @@ -1700,8 +1700,9 @@ end if #ifndef MNH_OPENACC deallocate (zdirsinzw,zcoefs,za,zres,zflxz,zsource,zkeff,zcoefflxu,zcoefflxv,zuslopem,zvslopem) #else -CALL MNH_REL_ZT3D(izdirsinzw,izcoefs,iza,izres,izflxz,izsource,izkeff,izcoefflxu,izcoefflxv,izuslopem,izvslopem,& - iztmp1_device,iztmp2_device,iztmp3_device,iztmp4_device) +CALL MNH_RELEASE_FLAT( izdirsinzw, izcoefs, iza, izres, izflxz, izsource, izkeff, & + izcoefflxu, izcoefflxv, izuslopem, izvslopem, & + iztmp1_device, iztmp2_device, iztmp3_device, iztmp4_device ) #endif !$acc end data diff --git a/src/MNH/turb_ver_thermo_corr.f90 b/src/MNH/turb_ver_thermo_corr.f90 index e94a0cbb2..6e1170f5e 100644 --- a/src/MNH/turb_ver_thermo_corr.f90 +++ b/src/MNH/turb_ver_thermo_corr.f90 @@ -318,7 +318,7 @@ USE MODI_BITREP #endif ! #ifdef MNH_OPENACC -USE MODE_MNH_ZWORK , ONLY : MNH_ALLOCATE_ZT3D , MNH_REL_ZT3D, MNH_ALLOCATE_GT3D , MNH_REL_GT3D , MNH_ALLOCATE_ZT3DP +USE MODE_MNH_ZWORK, ONLY: MNH_ALLOCATE_FLAT, MNH_RELEASE_FLAT #endif IMPLICIT NONE @@ -490,25 +490,25 @@ allocate( zdfddrdz (JIU,JJU,JKU) ) allocate( zcoeff(JIU,JJU, i1 : i2 ) ) #else -izflxz = MNH_ALLOCATE_ZT3D( zflxz ,JIU,JJU,JKU ) -izkeff = MNH_ALLOCATE_ZT3D( zkeff ,JIU,JJU,JKU ) -izf = MNH_ALLOCATE_ZT3D( zf ,JIU,JJU,JKU ) -izdfddtdz = MNH_ALLOCATE_ZT3D( zdfddtdz ,JIU,JJU,JKU ) -izdfddrdz = MNH_ALLOCATE_ZT3D( zdfddrdz ,JIU,JJU,JKU ) +izflxz = MNH_ALLOCATE_FLAT( zflxz, JIU, JJU, JKU ) +izkeff = MNH_ALLOCATE_FLAT( zkeff, JIU, JJU, JKU ) +izf = MNH_ALLOCATE_FLAT( zf, JIU, JJU, JKU ) +izdfddtdz = MNH_ALLOCATE_FLAT( zdfddtdz, JIU, JJU, JKU ) +izdfddrdz = MNH_ALLOCATE_FLAT( zdfddrdz, JIU, JJU, JKU ) -izcoeff = MNH_ALLOCATE_ZT3DP( zcoeff,JIU,JJU, i1 , i2 ) +izcoeff = MNH_ALLOCATE_FLAT( zcoeff, 1, JIU, 1, JJU, i1, i2 ) #endif #ifdef MNH_OPENACC -iztmp1_device = MNH_ALLOCATE_ZT3D( ztmp1_device,JIU,JJU,JKU ) -iztmp2_device = MNH_ALLOCATE_ZT3D( ztmp2_device,JIU,JJU,JKU ) -iztmp3_device = MNH_ALLOCATE_ZT3D( ztmp3_device,JIU,JJU,JKU ) -iztmp4_device = MNH_ALLOCATE_ZT3D( ztmp4_device,JIU,JJU,JKU ) -iztmp5_device = MNH_ALLOCATE_ZT3D( ztmp5_device,JIU,JJU,JKU ) -iztmp6_device = MNH_ALLOCATE_ZT3D( ztmp6_device,JIU,JJU,JKU ) -iztmp7_device = MNH_ALLOCATE_ZT3D( ztmp7_device,JIU,JJU,JKU ) -iztmp8_device = MNH_ALLOCATE_ZT3D( ztmp8_device,JIU,JJU,JKU ) +iztmp1_device = MNH_ALLOCATE_FLAT( ztmp1_device, JIU, JJU, JKU ) +iztmp2_device = MNH_ALLOCATE_FLAT( ztmp2_device, JIU, JJU, JKU ) +iztmp3_device = MNH_ALLOCATE_FLAT( ztmp3_device, JIU, JJU, JKU ) +iztmp4_device = MNH_ALLOCATE_FLAT( ztmp4_device, JIU, JJU, JKU ) +iztmp5_device = MNH_ALLOCATE_FLAT( ztmp5_device, JIU, JJU, JKU ) +iztmp6_device = MNH_ALLOCATE_FLAT( ztmp6_device, JIU, JJU, JKU ) +iztmp7_device = MNH_ALLOCATE_FLAT( ztmp7_device, JIU, JJU, JKU ) +iztmp8_device = MNH_ALLOCATE_FLAT( ztmp8_device, JIU, JJU, JKU ) #endif !$acc data present( zflxz, zkeff, zf, zdfddtdz, zdfddrdz, zcoeff, & @@ -1540,9 +1540,9 @@ end if #ifndef MNH_OPENACC deallocate( zflxz, zkeff, zf , zdfddtdz , zdfddrdz , zcoeff ) #else -CALL MNH_REL_ZT3D(IZFLXZ,IZKEFF,IZF,IZDFDDTDZ,IZDFDDRDZ,IZCOEFF,& - IZTMP1_DEVICE,IZTMP2_DEVICE,IZTMP3_DEVICE,IZTMP4_DEVICE,& - IZTMP5_DEVICE,IZTMP6_DEVICE,IZTMP7_DEVICE,IZTMP8_DEVICE ) +CALL MNH_RELEASE_FLAT( IZFLXZ, IZKEFF, IZF, IZDFDDTDZ, IZDFDDRDZ, IZCOEFF, & + IZTMP1_DEVICE, IZTMP2_DEVICE, IZTMP3_DEVICE, IZTMP4_DEVICE, & + IZTMP5_DEVICE, IZTMP6_DEVICE, IZTMP7_DEVICE, IZTMP8_DEVICE ) #endif !$acc end data diff --git a/src/MNH/turb_ver_thermo_flux.f90 b/src/MNH/turb_ver_thermo_flux.f90 index 9b924f0ac..1b0bfcf93 100644 --- a/src/MNH/turb_ver_thermo_flux.f90 +++ b/src/MNH/turb_ver_thermo_flux.f90 @@ -376,7 +376,7 @@ USE MODE_PRANDTL USE MODI_SECOND_MNH ! #ifdef MNH_OPENACC -USE MODE_MNH_ZWORK , ONLY : MNH_ALLOCATE_ZT3D , MNH_REL_ZT3D, MNH_ALLOCATE_GT3D , MNH_REL_GT3D +USE MODE_MNH_ZWORK, ONLY: MNH_ALLOCATE_FLAT, MNH_RELEASE_FLAT #endif IMPLICIT NONE @@ -617,26 +617,26 @@ allocate( zrwrnp (JIU,JJU,JKU ) ) allocate( zcld_thold(JIU,JJU,JKU ) ) allocate( zalt (JIU,JJU,JKU ) ) #else -iza = MNH_ALLOCATE_ZT3D( za ,JIU,JJU,JKU ) -izflxz = MNH_ALLOCATE_ZT3D( zflxz ,JIU,JJU,JKU ) -izsource = MNH_ALLOCATE_ZT3D( zsource ,JIU,JJU,JKU ) -izkeff = MNH_ALLOCATE_ZT3D( zkeff ,JIU,JJU,JKU ) -izf = MNH_ALLOCATE_ZT3D( zf ,JIU,JJU,JKU ) -izdfddtdz = MNH_ALLOCATE_ZT3D( zdfddtdz ,JIU,JJU,JKU ) -izdfddrdz = MNH_ALLOCATE_ZT3D( zdfddrdz ,JIU,JJU,JKU ) -iz3rdmoment = MNH_ALLOCATE_ZT3D( z3rdmoment,JIU,JJU,JKU ) -izf_new = MNH_ALLOCATE_ZT3D( zf_new ,JIU,JJU,JKU ) -izrwthl = MNH_ALLOCATE_ZT3D( zrwthl ,JIU,JJU,JKU ) -izrwrnp = MNH_ALLOCATE_ZT3D( zrwrnp ,JIU,JJU,JKU ) -izcld_thold = MNH_ALLOCATE_ZT3D( zcld_thold,JIU,JJU,JKU ) -izalt = MNH_ALLOCATE_ZT3D( zalt ,JIU,JJU,JKU ) +iza = MNH_ALLOCATE_FLAT( za, JIU,JJU,JKU ) +izflxz = MNH_ALLOCATE_FLAT( zflxz, JIU,JJU,JKU ) +izsource = MNH_ALLOCATE_FLAT( zsource, JIU,JJU,JKU ) +izkeff = MNH_ALLOCATE_FLAT( zkeff, JIU,JJU,JKU ) +izf = MNH_ALLOCATE_FLAT( zf, JIU,JJU,JKU ) +izdfddtdz = MNH_ALLOCATE_FLAT( zdfddtdz, JIU,JJU,JKU ) +izdfddrdz = MNH_ALLOCATE_FLAT( zdfddrdz, JIU,JJU,JKU ) +iz3rdmoment = MNH_ALLOCATE_FLAT( z3rdmoment, JIU,JJU,JKU ) +izf_new = MNH_ALLOCATE_FLAT( zf_new, JIU,JJU,JKU ) +izrwthl = MNH_ALLOCATE_FLAT( zrwthl, JIU,JJU,JKU ) +izrwrnp = MNH_ALLOCATE_FLAT( zrwrnp, JIU,JJU,JKU ) +izcld_thold = MNH_ALLOCATE_FLAT( zcld_thold, JIU,JJU,JKU ) +izalt = MNH_ALLOCATE_FLAT( zalt, JIU,JJU,JKU ) #endif #ifdef MNH_OPENACC -iztmp1_device = MNH_ALLOCATE_ZT3D( ztmp1_device,JIU,JJU,JKU ) -iztmp2_device = MNH_ALLOCATE_ZT3D( ztmp2_device,JIU,JJU,JKU ) -iztmp3_device = MNH_ALLOCATE_ZT3D( ztmp3_device,JIU,JJU,JKU ) -iztmp4_device = MNH_ALLOCATE_ZT3D( ztmp4_device,JIU,JJU,JKU ) +iztmp1_device = MNH_ALLOCATE_FLAT( ztmp1_device, JIU, JJU, JKU ) +iztmp2_device = MNH_ALLOCATE_FLAT( ztmp2_device, JIU, JJU, JKU ) +iztmp3_device = MNH_ALLOCATE_FLAT( ztmp3_device, JIU, JJU, JKU ) +iztmp4_device = MNH_ALLOCATE_FLAT( ztmp4_device, JIU, JJU, JKU ) #endif !$acc data present( ZA, ZFLXZ, ZSOURCE, ZKEFF, ZF, ZDFDDTDZ, ZDFDDRDZ, Z3RDMOMENT, & @@ -1802,9 +1802,9 @@ end if #ifndef MNH_OPENACC Deallocate( za, zflxz, zsource, zkeff, zf, zdfddtdz, zdfddrdz, z3rdmoment, zf_new, zrwthl, zrwrnp, zcld_thold, zalt ) #else -CALL MNH_REL_ZT3D( IZA, IZFLXZ, IZSOURCE, IZKEFF, IZF, IZDFDDTDZ, IZDFDDRDZ, IZ3RDMOMENT, & - IZF_NEW, IZRWTHL, IZRWRNP, IZCLD_THOLD, IZALT, & - IZTMP1_DEVICE, IZTMP2_DEVICE, IZTMP3_DEVICE, IZTMP4_DEVICE ) +CALL MNH_RELEASE_FLAT( IZA, IZFLXZ, IZSOURCE, IZKEFF, IZF, IZDFDDTDZ, IZDFDDRDZ, IZ3RDMOMENT, & + IZF_NEW, IZRWTHL, IZRWRNP, IZCLD_THOLD, IZALT, & + IZTMP1_DEVICE, IZTMP2_DEVICE, IZTMP3_DEVICE, IZTMP4_DEVICE ) #endif !$acc end data diff --git a/src/ZSOLVER/advection_metsv.f90 b/src/ZSOLVER/advection_metsv.f90 index bda429f84..3f0444f7f 100644 --- a/src/ZSOLVER/advection_metsv.f90 +++ b/src/ZSOLVER/advection_metsv.f90 @@ -175,8 +175,8 @@ use mode_argslist_ll, only: ADD3DFIELD_ll, ADD4DFIELD_ll, CLEANLIST_ll, LIST_ use mode_budget, only: Budget_store_init, Budget_store_end #ifdef MNH_OPENACC USE MODE_DEVICE -USE MODE_MNH_ZWORK, ONLY: MNH_ALLOCATE_ZT3D, MNH_ALLOCATE_ZT4D, MNH_CHECK_IN_ZT3D, MNH_CHECK_OUT_ZT3D, & - MNH_GET_ZT3D, MNH_REL_ZT3D, MNH_REL_ZT4D, ZT3D +USE MODE_MNH_ZWORK, ONLY: MNH_ALLOCATE_FLAT, MNH_CHECK_IN_ZT3D, MNH_CHECK_OUT_ZT3D, & + MNH_GET_ZT3D, MNH_RELEASE_FLAT, MNH_REL_ZT3D, ZT3D #endif use mode_exchange_ll, only: UPDATE_HALO_ll USE MODE_IO_FIELD_WRITE, only: IO_Field_write @@ -402,41 +402,41 @@ allocate( ZLS ( JIU,JJU,JKU ) ) allocate( ZCPH ( JIU,JJU,JKU ) ) #else CALL MNH_CHECK_IN_ZT3D("ADVECTION_METSV") -IZRUCPPM = MNH_ALLOCATE_ZT3D( ZRUCPPM , JIU,JJU,JKU ) -IZRVCPPM = MNH_ALLOCATE_ZT3D( ZRVCPPM , JIU,JJU,JKU ) -IZRWCPPM = MNH_ALLOCATE_ZT3D( ZRWCPPM , JIU,JJU,JKU ) -IZCFLU = MNH_ALLOCATE_ZT3D( ZCFLU , JIU,JJU,JKU ) -IZCFLV = MNH_ALLOCATE_ZT3D( ZCFLV , JIU,JJU,JKU ) -IZCFLW = MNH_ALLOCATE_ZT3D( ZCFLW , JIU,JJU,JKU ) -IZCFL = MNH_ALLOCATE_ZT3D( ZCFL , JIU,JJU,JKU ) -IZTH = MNH_ALLOCATE_ZT3D( ZTH , JIU,JJU,JKU ) -IZTKE = MNH_ALLOCATE_ZT3D( ZTKE , JIU,JJU,SIZE(PTKET,3) ) -IZRTHS_OTHER = MNH_ALLOCATE_ZT3D( ZRTHS_OTHER , JIU,JJU,JKU ) -IZRTKES_OTHER = MNH_ALLOCATE_ZT3D( ZRTKES_OTHER , JIU,JJU,SIZE(PTKET,3) ) -IZRTHS_PPM = MNH_ALLOCATE_ZT3D( ZRTHS_PPM , JIU,JJU,JKU ) -IZRTKES_PPM = MNH_ALLOCATE_ZT3D( ZRTKES_PPM , JIU,JJU,SIZE(PTKET,3) ) -IZR = MNH_ALLOCATE_ZT4D( ZR , JIU,JJU,JKU, SIZE(PRT, 4) ) -IZSV = MNH_ALLOCATE_ZT4D( ZSV , JIU,JJU,JKU, SIZE(PSVT,4) ) -IZSNWC = MNH_ALLOCATE_ZT4D( ZSNWC , JIU,JJU,JKU, NBLOWSNOW_2D ) -IZSNWC_INIT = MNH_ALLOCATE_ZT4D( ZSNWC_INIT , JIU,JJU,JKU, NBLOWSNOW_2D ) -IZRSNWCS = MNH_ALLOCATE_ZT4D( ZRSNWCS , JIU,JJU,JKU, NBLOWSNOW_2D ) -IZRRS_OTHER = MNH_ALLOCATE_ZT4D( ZRRS_OTHER , JIU,JJU,JKU, SIZE(PRT, 4) ) -IZRSVS_OTHER = MNH_ALLOCATE_ZT4D( ZRSVS_OTHER , JIU,JJU,JKU, SIZE(PSVT,4) ) -IZRSNWCS_OTHER = MNH_ALLOCATE_ZT4D( ZRSNWCS_OTHER, JIU,JJU,JKU, NBLOWSNOW_2D ) -IZRRS_PPM = MNH_ALLOCATE_ZT4D( ZRRS_PPM , JIU,JJU,JKU, SIZE(PRT, 4) ) -IZRSVS_PPM = MNH_ALLOCATE_ZT4D( ZRSVS_PPM , JIU,JJU,JKU, SIZE(PSVT,4) ) -IZRSNWCS_PPM = MNH_ALLOCATE_ZT4D( ZRSNWCS_PPM , JIU,JJU,JKU, NBLOWSNOW_2D ) -IZRHOX1 = MNH_ALLOCATE_ZT3D( ZRHOX1 , JIU,JJU,JKU ) -IZRHOX2 = MNH_ALLOCATE_ZT3D( ZRHOX2 , JIU,JJU,JKU ) -IZRHOY1 = MNH_ALLOCATE_ZT3D( ZRHOY1 , JIU,JJU,JKU ) -IZRHOY2 = MNH_ALLOCATE_ZT3D( ZRHOY2 , JIU,JJU,JKU ) -IZRHOZ1 = MNH_ALLOCATE_ZT3D( ZRHOZ1 , JIU,JJU,JKU ) -IZRHOZ2 = MNH_ALLOCATE_ZT3D( ZRHOZ2 , JIU,JJU,JKU ) -IZT = MNH_ALLOCATE_ZT3D( ZT , JIU,JJU,JKU ) -IZEXN = MNH_ALLOCATE_ZT3D( ZEXN , JIU,JJU,JKU ) -IZLV = MNH_ALLOCATE_ZT3D( ZLV , JIU,JJU,JKU ) -IZLS = MNH_ALLOCATE_ZT3D( ZLS , JIU,JJU,JKU ) -IZCPH = MNH_ALLOCATE_ZT3D( ZCPH , JIU,JJU,JKU ) +IZRUCPPM = MNH_ALLOCATE_FLAT( ZRUCPPM , JIU, JJU, JKU ) +IZRVCPPM = MNH_ALLOCATE_FLAT( ZRVCPPM , JIU, JJU, JKU ) +IZRWCPPM = MNH_ALLOCATE_FLAT( ZRWCPPM , JIU, JJU, JKU ) +IZCFLU = MNH_ALLOCATE_FLAT( ZCFLU , JIU, JJU, JKU ) +IZCFLV = MNH_ALLOCATE_FLAT( ZCFLV , JIU, JJU, JKU ) +IZCFLW = MNH_ALLOCATE_FLAT( ZCFLW , JIU, JJU, JKU ) +IZCFL = MNH_ALLOCATE_FLAT( ZCFL , JIU, JJU, JKU ) +IZTH = MNH_ALLOCATE_FLAT( ZTH , JIU, JJU, JKU ) +IZTKE = MNH_ALLOCATE_FLAT( ZTKE , JIU, JJU, SIZE(PTKET,3) ) +IZRTHS_OTHER = MNH_ALLOCATE_FLAT( ZRTHS_OTHER , JIU, JJU, JKU ) +IZRTKES_OTHER = MNH_ALLOCATE_FLAT( ZRTKES_OTHER , JIU, JJU, SIZE(PTKET,3) ) +IZRTHS_PPM = MNH_ALLOCATE_FLAT( ZRTHS_PPM , JIU, JJU, JKU ) +IZRTKES_PPM = MNH_ALLOCATE_FLAT( ZRTKES_PPM , JIU, JJU, SIZE(PTKET,3) ) +IZR = MNH_ALLOCATE_FLAT( ZR , JIU, JJU, JKU, SIZE(PRT, 4) ) +IZSV = MNH_ALLOCATE_FLAT( ZSV , JIU, JJU, JKU, SIZE(PSVT,4) ) +IZSNWC = MNH_ALLOCATE_FLAT( ZSNWC , JIU, JJU, JKU, NBLOWSNOW_2D ) +IZSNWC_INIT = MNH_ALLOCATE_FLAT( ZSNWC_INIT , JIU, JJU, JKU, NBLOWSNOW_2D ) +IZRSNWCS = MNH_ALLOCATE_FLAT( ZRSNWCS , JIU, JJU, JKU, NBLOWSNOW_2D ) +IZRRS_OTHER = MNH_ALLOCATE_FLAT( ZRRS_OTHER , JIU, JJU, JKU, SIZE(PRT, 4) ) +IZRSVS_OTHER = MNH_ALLOCATE_FLAT( ZRSVS_OTHER , JIU, JJU, JKU, SIZE(PSVT,4) ) +IZRSNWCS_OTHER = MNH_ALLOCATE_FLAT( ZRSNWCS_OTHER, JIU, JJU, JKU, NBLOWSNOW_2D ) +IZRRS_PPM = MNH_ALLOCATE_FLAT( ZRRS_PPM , JIU, JJU, JKU, SIZE(PRT, 4) ) +IZRSVS_PPM = MNH_ALLOCATE_FLAT( ZRSVS_PPM , JIU, JJU, JKU, SIZE(PSVT,4) ) +IZRSNWCS_PPM = MNH_ALLOCATE_FLAT( ZRSNWCS_PPM , JIU, JJU, JKU, NBLOWSNOW_2D ) +IZRHOX1 = MNH_ALLOCATE_FLAT( ZRHOX1 , JIU, JJU, JKU ) +IZRHOX2 = MNH_ALLOCATE_FLAT( ZRHOX2 , JIU, JJU, JKU ) +IZRHOY1 = MNH_ALLOCATE_FLAT( ZRHOY1 , JIU, JJU, JKU ) +IZRHOY2 = MNH_ALLOCATE_FLAT( ZRHOY2 , JIU, JJU, JKU ) +IZRHOZ1 = MNH_ALLOCATE_FLAT( ZRHOZ1 , JIU, JJU, JKU ) +IZRHOZ2 = MNH_ALLOCATE_FLAT( ZRHOZ2 , JIU, JJU, JKU ) +IZT = MNH_ALLOCATE_FLAT( ZT , JIU, JJU, JKU ) +IZEXN = MNH_ALLOCATE_FLAT( ZEXN , JIU, JJU, JKU ) +IZLV = MNH_ALLOCATE_FLAT( ZLV , JIU, JJU, JKU ) +IZLS = MNH_ALLOCATE_FLAT( ZLS , JIU, JJU, JKU ) +IZCPH = MNH_ALLOCATE_FLAT( ZCPH , JIU, JJU, JKU ) #endif !$acc data present( ZRUCPPM, ZRVCPPM, ZRWCPPM, ZCFLU, ZCFLV, ZCFLW, ZCFL, ZTH, & @@ -1115,23 +1115,15 @@ deallocate ( ZRUCPPM, ZRVCPPM, ZRWCPPM, ZCFLU, ZCFLV, ZCFLW, ZCFL, ZTH, ZRRS_PPM, ZRSVS_PPM, ZRSNWCS_PPM, ZRHOX1, ZRHOX2, ZRHOY1, ZRHOY2, ZRHOZ1, ZRHOZ2, & ZT, ZEXN, ZLV, ZLS, ZCPH ) #else -CALL MNH_REL_ZT3D ( IZRHOX1, IZRHOX2, IZRHOY1, IZRHOY2, IZRHOZ1, IZRHOZ2, & - IZT, IZEXN, IZLV, IZLS, IZCPH ) +CALL MNH_RELEASE_FLAT ( IZRHOX1, IZRHOX2, IZRHOY1, IZRHOY2, IZRHOZ1, IZRHOZ2, & + IZT, IZEXN, IZLV, IZLS, IZCPH ) -CALL MNH_REL_ZT4D ( NBLOWSNOW_2D , IZRSNWCS_PPM ) -CALL MNH_REL_ZT4D ( SIZE(PSVT,4) , IZRSVS_PPM ) -CALL MNH_REL_ZT4D ( SIZE(PRT, 4) , IZRRS_PPM ) -CALL MNH_REL_ZT4D ( NBLOWSNOW_2D , IZRSNWCS_OTHER ) -CALL MNH_REL_ZT4D ( SIZE(PSVT,4) , IZRSVS_OTHER ) -CALL MNH_REL_ZT4D ( SIZE(PRT, 4) , IZRRS_OTHER ) -CALL MNH_REL_ZT4D ( NBLOWSNOW_2D , IZRSNWCS ) -CALL MNH_REL_ZT4D ( NBLOWSNOW_2D , IZSNWC_INIT ) -CALL MNH_REL_ZT4D ( NBLOWSNOW_2D , IZSNWC ) -CALL MNH_REL_ZT4D ( SIZE(PSVT,4) , IZSV ) -CALL MNH_REL_ZT4D ( SIZE(PRT, 4) , IZR ) +CALL MNH_RELEASE_FLAT ( IZR, IZSV, IZSNWC, IZSNWC_INIT, IZRSNWCS, IZRRS_OTHER, IZRSVS_OTHER, & + IZRSNWCS_OTHER, IZRRS_PPM, IZRSVS_PPM, IZRSNWCS_PPM) + +CALL MNH_RELEASE_FLAT ( IZRUCPPM, IZRVCPPM, IZRWCPPM, IZCFLU, IZCFLV, IZCFLW, IZCFL, IZTH, & + IZTKE, IZRTHS_OTHER, IZRTKES_OTHER, IZRTHS_PPM, IZRTKES_PPM ) -CALL MNH_REL_ZT3D ( IZRUCPPM, IZRVCPPM, IZRWCPPM, IZCFLU, IZCFLV, IZCFLW, IZCFL, IZTH, & - IZTKE, IZRTHS_OTHER, IZRTKES_OTHER, IZRTHS_PPM, IZRTKES_PPM ) CALL MNH_CHECK_OUT_ZT3D("ADVECTION_METSV") #endif diff --git a/src/ZSOLVER/advection_uvw.f90 b/src/ZSOLVER/advection_uvw.f90 index 6782a74d2..999dff33a 100644 --- a/src/ZSOLVER/advection_uvw.f90 +++ b/src/ZSOLVER/advection_uvw.f90 @@ -1,4 +1,4 @@ -!MNH_LIC Copyright 1994-2021 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 1994-2022 CNRS, Meteo-France and Universite Paul Sabatier !MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence !MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt !MNH_LIC for details. version 1. @@ -108,7 +108,7 @@ use mode_budget, only: Budget_store_init, Budget_store_end USE MODE_ll #ifdef MNH_OPENACC USE MODE_DEVICE -USE MODE_MNH_ZWORK, ONLY : ZT3D, MNH_ALLOCATE_ZT3D, MNH_GET_ZT3D , MNH_REL_ZT3D, MNH_GET_ZT4D , MNH_REL_ZT4D +USE MODE_MNH_ZWORK, ONLY: MNH_ALLOCATE_FLAT, MNH_RELEASE_FLAT, ZT3D, MNH_GET_ZT3D, MNH_REL_ZT3D, MNH_GET_ZT4D, MNH_REL_ZT4D #endif use mode_mppdb @@ -270,24 +270,24 @@ ALLOCATE( ZMXM_RHODJ( IIU,IJU,IKU ) ) ALLOCATE( ZMYM_RHODJ( IIU,IJU,IKU ) ) ALLOCATE( ZMZM_RHODJ( IIU,IJU,IKU ) ) #else -IZRUT = MNH_ALLOCATE_ZT3D( ZRUT ,IIU,IJU,IKU ) -IZRVT = MNH_ALLOCATE_ZT3D( ZRVT ,IIU,IJU,IKU ) -IZRWT = MNH_ALLOCATE_ZT3D( ZRWT ,IIU,IJU,IKU ) -IZRUCT = MNH_ALLOCATE_ZT3D( ZRUCT ,IIU,IJU,IKU ) -IZRVCT = MNH_ALLOCATE_ZT3D( ZRVCT ,IIU,IJU,IKU ) -IZRWCT = MNH_ALLOCATE_ZT3D( ZRWCT ,IIU,IJU,IKU ) -IZU = MNH_ALLOCATE_ZT3D( ZU ,IIU,IJU,IKU ) -IZV = MNH_ALLOCATE_ZT3D( ZV ,IIU,IJU,IKU ) -IZW = MNH_ALLOCATE_ZT3D( ZW ,IIU,IJU,IKU ) -IZRUS_OTHER = MNH_ALLOCATE_ZT3D( ZRUS_OTHER,IIU,IJU,IKU ) -IZRVS_OTHER = MNH_ALLOCATE_ZT3D( ZRVS_OTHER,IIU,IJU,IKU ) -IZRWS_OTHER = MNH_ALLOCATE_ZT3D( ZRWS_OTHER,IIU,IJU,IKU ) -IZRUS_ADV = MNH_ALLOCATE_ZT3D( ZRUS_ADV ,IIU,IJU,IKU ) -IZRVS_ADV = MNH_ALLOCATE_ZT3D( ZRVS_ADV ,IIU,IJU,IKU ) -IZRWS_ADV = MNH_ALLOCATE_ZT3D( ZRWS_ADV ,IIU,IJU,IKU ) -IZMXM_RHODJ = MNH_ALLOCATE_ZT3D( ZMXM_RHODJ,IIU,IJU,IKU ) -IZMYM_RHODJ = MNH_ALLOCATE_ZT3D( ZMYM_RHODJ,IIU,IJU,IKU ) -IZMZM_RHODJ = MNH_ALLOCATE_ZT3D( ZMZM_RHODJ,IIU,IJU,IKU ) +IZRUT = MNH_ALLOCATE_FLAT( ZRUT, IIU, IJU, IKU ) +IZRVT = MNH_ALLOCATE_FLAT( ZRVT, IIU, IJU, IKU ) +IZRWT = MNH_ALLOCATE_FLAT( ZRWT, IIU, IJU, IKU ) +IZRUCT = MNH_ALLOCATE_FLAT( ZRUCT, IIU, IJU, IKU ) +IZRVCT = MNH_ALLOCATE_FLAT( ZRVCT, IIU, IJU, IKU ) +IZRWCT = MNH_ALLOCATE_FLAT( ZRWCT, IIU, IJU, IKU ) +IZU = MNH_ALLOCATE_FLAT( ZU, IIU, IJU, IKU ) +IZV = MNH_ALLOCATE_FLAT( ZV, IIU, IJU, IKU ) +IZW = MNH_ALLOCATE_FLAT( ZW, IIU, IJU, IKU ) +IZRUS_OTHER = MNH_ALLOCATE_FLAT( ZRUS_OTHER, IIU, IJU, IKU ) +IZRVS_OTHER = MNH_ALLOCATE_FLAT( ZRVS_OTHER, IIU, IJU, IKU ) +IZRWS_OTHER = MNH_ALLOCATE_FLAT( ZRWS_OTHER, IIU, IJU, IKU ) +IZRUS_ADV = MNH_ALLOCATE_FLAT( ZRUS_ADV, IIU, IJU, IKU ) +IZRVS_ADV = MNH_ALLOCATE_FLAT( ZRVS_ADV, IIU, IJU, IKU ) +IZRWS_ADV = MNH_ALLOCATE_FLAT( ZRWS_ADV, IIU, IJU, IKU ) +IZMXM_RHODJ = MNH_ALLOCATE_FLAT( ZMXM_RHODJ, IIU, IJU, IKU ) +IZMYM_RHODJ = MNH_ALLOCATE_FLAT( ZMYM_RHODJ, IIU, IJU, IKU ) +IZMZM_RHODJ = MNH_ALLOCATE_FLAT( ZMZM_RHODJ, IIU, IJU, IKU ) #endif !$acc data present( zrut, zrvt, zrwt, zruct, zrvct, zrwct, zu, zv, zw, & @@ -585,9 +585,9 @@ DEALLOCATE(zrut, zrvt, zrwt, zruct, zrvct, zrwct, zu, zv, zw, & zrus_other, zrvs_other, zrws_other, zrus_adv, zrvs_adv, zrws_adv, & zmxm_rhodj, zmym_rhodj, zmzm_rhodj ) #else -CALL MNH_REL_ZT3D(izmxm_rhodj, izmym_rhodj, izmzm_rhodj ) -CALL MNH_REL_ZT3D(izrus_other, izrvs_other, izrws_other, izrus_adv, izrvs_adv, izrws_adv ) -CALL MNH_REL_ZT3D(izrut, izrvt, izrwt, izruct, izrvct, izrwct, izu, izv, izw) +CALL MNH_RELEASE_FLAT( izmxm_rhodj, izmym_rhodj, izmzm_rhodj ) +CALL MNH_RELEASE_FLAT( izrus_other, izrvs_other, izrws_other, izrus_adv, izrvs_adv, izrws_adv ) +CALL MNH_RELEASE_FLAT( izrut, izrvt, izrwt, izruct, izrvct, izrwct, izu, izv, izw) #endif !$acc end data diff --git a/src/ZSOLVER/gdiv.f90 b/src/ZSOLVER/gdiv.f90 index 567912df0..c13e3aaa9 100644 --- a/src/ZSOLVER/gdiv.f90 +++ b/src/ZSOLVER/gdiv.f90 @@ -107,7 +107,7 @@ USE MODI_CONTRAV USE MODE_ll ! #ifdef MNH_OPENACC -USE MODE_MNH_ZWORK , ONLY : MNH_ALLOCATE_ZT3D , MNH_REL_ZT3D +USE MODE_MNH_ZWORK, ONLY: MNH_ALLOCATE_FLAT, MNH_RELEASE_FLAT #endif ! IMPLICIT NONE @@ -178,15 +178,15 @@ IKU=SIZE(PU,3) ALLOCATE(ZUC(IIU,IJU,IKU),ZVC(IIU,IJU,IKU),ZWC(IIU,IJU,IKU)) ALLOCATE(Z1(IIU,IJU,IKU),Z2(IIU,IJU,IKU),Z3(IIU,IJU,IKU)) #else -IZUC = MNH_ALLOCATE_ZT3D(ZUC,IIU,IJU,IKU ) -IZVC = MNH_ALLOCATE_ZT3D(ZVC,IIU,IJU,IKU ) -IZWC = MNH_ALLOCATE_ZT3D(ZWC,IIU,IJU,IKU ) -IZ1 = MNH_ALLOCATE_ZT3D(Z1,IIU,IJU,IKU ) -IZ2 = MNH_ALLOCATE_ZT3D(Z2,IIU,IJU,IKU ) -IZ3 = MNH_ALLOCATE_ZT3D(Z3,IIU,IJU,IKU ) -! -IZTMP1 = MNH_ALLOCATE_ZT3D( ZTMP1,IIU,IJU,IKU ) -IZTMP2 = MNH_ALLOCATE_ZT3D( ZTMP2,IIU,IJU,IKU ) +IZUC = MNH_ALLOCATE_FLAT( ZUC, IIU, IJU, IKU ) +IZVC = MNH_ALLOCATE_FLAT( ZVC, IIU, IJU, IKU ) +IZWC = MNH_ALLOCATE_FLAT( ZWC, IIU, IJU, IKU ) +IZ1 = MNH_ALLOCATE_FLAT( Z1, IIU, IJU, IKU ) +IZ2 = MNH_ALLOCATE_FLAT( Z2, IIU, IJU, IKU ) +IZ3 = MNH_ALLOCATE_FLAT( Z3, IIU, IJU, IKU ) +! +IZTMP1 = MNH_ALLOCATE_FLAT( ZTMP1, IIU, IJU, IKU ) +IZTMP2 = MNH_ALLOCATE_FLAT( ZTMP2, IIU, IJU, IKU ) #endif ! GWEST = ( HLBCX(1) /= 'CYCL' .AND. LWEST_ll() ) @@ -347,7 +347,7 @@ END IF #ifndef MNH_OPENACC DEALLOCATE( ZUC, ZVC, ZWC, Z1, Z2, Z3 ) #else -CALL MNH_REL_ZT3D (IZUC,IZVC,IZWC,IZ1,IZ2,IZ3,IZTMP1,IZTMP2) +CALL MNH_RELEASE_FLAT( IZUC, IZVC, IZWC, IZ1, IZ2, IZ3, IZTMP1, IZTMP2 ) #endif ! !------------------------------------------------------------------------------- diff --git a/src/ZSOLVER/modeln.f90 b/src/ZSOLVER/modeln.f90 index 4b03ed13b..14685ecbf 100644 --- a/src/ZSOLVER/modeln.f90 +++ b/src/ZSOLVER/modeln.f90 @@ -579,8 +579,8 @@ allocate( ZRVS (SIZE(XTHT,1),SIZE(XTHT,2),SIZE(XTHT,3)) ) allocate( ZRWS (SIZE(XTHT,1),SIZE(XTHT,2),SIZE(XTHT,3)) ) allocate( ZPABST(SIZE(XTHT,1),SIZE(XTHT,2),SIZE(XTHT,3)) ) #else -IZRWS = MNH_ALLOCATE_FLAT( ZRWS, 1, SIZE( XTHT, 1 ), 1, SIZE( XTHT, 2 ), 1, SIZE( XTHT, 3 ) ) -IZPABST = MNH_ALLOCATE_FLAT( ZPABST, 1, SIZE( XTHT, 1 ), 1, SIZE( XTHT, 2 ), 1, SIZE( XTHT, 3 ) ) +IZRWS = MNH_ALLOCATE_FLAT( ZRWS, SIZE( XTHT, 1 ), SIZE( XTHT, 2 ), SIZE( XTHT, 3 ) ) +IZPABST = MNH_ALLOCATE_FLAT( ZPABST, SIZE( XTHT, 1 ), SIZE( XTHT, 2 ), SIZE( XTHT, 3 ) ) IZSEA = -1 !Set to -1 because not (yet) allocated IZTOWN = -1 !Set to -1 because not (yet) allocated #endif @@ -1937,8 +1937,8 @@ IF (CCLOUD /= 'NONE' .AND. CELEC == 'NONE') THEN ALLOCATE (ZSEA(SIZE(XRHODJ,1),SIZE(XRHODJ,2))) ALLOCATE (ZTOWN(SIZE(XRHODJ,1),SIZE(XRHODJ,2))) #else - IZSEA = MNH_ALLOCATE_FLAT( ZSEA, 1, SIZE( XRHODJ, 1 ), 1, SIZE( XRHODJ, 2 ) ) - IZTOWN = MNH_ALLOCATE_FLAT( ZTOWN, 1, SIZE( XRHODJ, 1 ), 1, SIZE( XRHODJ, 2 ) ) + IZSEA = MNH_ALLOCATE_FLAT( ZSEA, SIZE( XRHODJ, 1 ), SIZE( XRHODJ, 2 ) ) + IZTOWN = MNH_ALLOCATE_FLAT( ZTOWN, SIZE( XRHODJ, 1 ), SIZE( XRHODJ, 2 ) ) #endif CALL MNHGET_SURF_PARAM_n (PSEA=ZSEA(:,:),PTOWN=ZTOWN(:,:)) !$acc update device( ZSEA, ZTOWN ) @@ -2052,8 +2052,8 @@ IF (CELEC /= 'NONE' .AND. (CCLOUD(1:3) == 'ICE')) THEN ALLOCATE (ZSEA(SIZE(XRHODJ,1),SIZE(XRHODJ,2))) ALLOCATE (ZTOWN(SIZE(XRHODJ,1),SIZE(XRHODJ,2))) #else - IZSEA = MNH_ALLOCATE_FLAT( ZSEA, 1, SIZE( XRHODJ, 1 ), 1, SIZE( XRHODJ, 2 ) ) - IZTOWN = MNH_ALLOCATE_FLAT( ZTOWN, 1, SIZE( XRHODJ, 1 ), 1, SIZE( XRHODJ, 2 ) ) + IZSEA = MNH_ALLOCATE_FLAT( ZSEA, SIZE( XRHODJ, 1 ), SIZE( XRHODJ, 2 ) ) + IZTOWN = MNH_ALLOCATE_FLAT( ZTOWN, SIZE( XRHODJ, 1 ), SIZE( XRHODJ, 2 ) ) #endif CALL MNHGET_SURF_PARAM_n (PSEA=ZSEA(:,:),PTOWN=ZTOWN(:,:)) CALL RESOLVED_ELEC_n (CCLOUD, CSCONV, CMF_CLOUD, & diff --git a/src/ZSOLVER/p_abs.f90 b/src/ZSOLVER/p_abs.f90 index cd9786888..e2c098887 100644 --- a/src/ZSOLVER/p_abs.f90 +++ b/src/ZSOLVER/p_abs.f90 @@ -1,4 +1,4 @@ -!MNH_LIC Copyright 1994-2021 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 1994-2022 CNRS, Meteo-France and Universite Paul Sabatier !MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence !MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt !MNH_LIC for details. version 1. @@ -124,7 +124,7 @@ USE MODE_REPRO_SUM USE MODI_BITREP #endif #ifdef MNH_OPENACC -USE MODE_MNH_ZWORK , ONLY : MNH_ALLOCATE_ZT3D , MNH_REL_ZT3D +USE MODE_MNH_ZWORK, ONLY: MNH_ALLOCATE_FLAT, MNH_RELEASE_FLAT #endif ! IMPLICIT NONE @@ -227,9 +227,9 @@ ZCVD_O_RD = (XCPD - XRD) / XRD #ifndef MNH_OPENACC ALLOCATE (ZRTOT(IIU,IJU,IKU), ZRHOREF(IIU,IJU,IKU), ZWORK(IIU,IJU,IKU)) #else -IZRTOT = MNH_ALLOCATE_ZT3D(ZRTOT,IIU,IJU,IKU ) -IZRHOREF = MNH_ALLOCATE_ZT3D(ZRHOREF,IIU,IJU,IKU ) -IZWORK = MNH_ALLOCATE_ZT3D(ZWORK,IIU,IJU,IKU ) +IZRTOT = MNH_ALLOCATE_FLAT( ZRTOT, IIU, IJU, IKU ) +IZRHOREF = MNH_ALLOCATE_FLAT( ZRHOREF, IIU, IJU, IKU ) +IZWORK = MNH_ALLOCATE_FLAT( ZWORK, IIU, IJU, IKU ) #endif !------------------------------------------------------------------------------- @@ -445,7 +445,7 @@ END IF #ifndef MNH_OPENACC DEALLOCATE (ZRTOT, ZRHOREF, ZWORK) #else -CALL MNH_REL_ZT3D ( IZRTOT, IZRHOREF, IZWORK ) +CALL MNH_RELEASE_FLAT( IZRTOT, IZRHOREF, IZWORK ) #endif !------------------------------------------------------------------------------- ! diff --git a/src/ZSOLVER/pressurez.f90 b/src/ZSOLVER/pressurez.f90 index 2d9b879ea..dd59a8483 100644 --- a/src/ZSOLVER/pressurez.f90 +++ b/src/ZSOLVER/pressurez.f90 @@ -257,7 +257,7 @@ USE MODD_VAR_ll, ONLY: NMNH_COMM_WORLD , NPROC use mode_budget, only: Budget_store_end USE MODE_ll #ifdef MNH_OPENACC -USE MODE_MNH_ZWORK, ONLY: MNH_ALLOCATE_ZT3D, MNH_REL_ZT3D +USE MODE_MNH_ZWORK, ONLY: MNH_ALLOCATE_FLAT, MNH_RELEASE_FLAT #endif USE MODE_MPPDB USE MODE_MSG @@ -498,15 +498,15 @@ ALLOCATE( ZDV_SOURCE(IIU, IJU, IKU) ) ALLOCATE( ZTHETAV (IIU, IJU, IKU) ) ALLOCATE( ZPHIT (IIU, IJU, IKU) ) #else -IZDV_SOURCE = MNH_ALLOCATE_ZT3D(ZDV_SOURCE ,IIU,IJU,IKU ) -IZTHETAV = MNH_ALLOCATE_ZT3D(ZTHETAV ,IIU,IJU,IKU ) -IZPHIT = MNH_ALLOCATE_ZT3D(ZPHIT ,IIU,IJU,IKU ) -! -IZPRHODJ = MNH_ALLOCATE_ZT3D( ZPRHODJ,IIU,IJU,IKU ) -IZMXM_PRHODJ = MNH_ALLOCATE_ZT3D( ZMXM_PRHODJ,IIU,IJU,IKU ) -IZMZM_PRHODJ = MNH_ALLOCATE_ZT3D( ZMZM_PRHODJ,IIU,IJU,IKU ) -IZGZ_M_W = MNH_ALLOCATE_ZT3D( ZGZ_M_W,IIU,IJU,IKU ) -IZMYM_PRHODJ = MNH_ALLOCATE_ZT3D( ZMYM_PRHODJ,IIU,IJU,IKU ) +IZDV_SOURCE = MNH_ALLOCATE_FLAT( ZDV_SOURCE, IIU, IJU, IKU ) +IZTHETAV = MNH_ALLOCATE_FLAT( ZTHETAV, IIU, IJU, IKU ) +IZPHIT = MNH_ALLOCATE_FLAT( ZPHIT, IIU, IJU, IKU ) +! +IZPRHODJ = MNH_ALLOCATE_FLAT( ZPRHODJ, IIU, IJU, IKU ) +IZMXM_PRHODJ = MNH_ALLOCATE_FLAT( ZMXM_PRHODJ, IIU, IJU, IKU ) +IZMZM_PRHODJ = MNH_ALLOCATE_FLAT( ZMZM_PRHODJ, IIU, IJU, IKU ) +IZGZ_M_W = MNH_ALLOCATE_FLAT( ZGZ_M_W, IIU, IJU, IKU ) +IZMYM_PRHODJ = MNH_ALLOCATE_FLAT( ZMYM_PRHODJ, IIU, IJU, IKU ) #endif ! IF (GFIRST_CALL_PRESSUREZ) THEN @@ -1123,8 +1123,8 @@ deallocate( ZDV_SOURCE ) deallocate( ZTHETAV ) deallocate( ZPHIT ) #else -CALL MNH_REL_ZT3D ( IZPRHODJ,IZMXM_PRHODJ,IZMZM_PRHODJ,IZGZ_M_W,IZMYM_PRHODJ ) -CALL MNH_REL_ZT3D ( IZDV_SOURCE,IZTHETAV,IZPHIT) +CALL MNH_RELEASE_FLAT( IZPRHODJ, IZMXM_PRHODJ, IZMZM_PRHODJ, IZGZ_M_W, IZMYM_PRHODJ ) +CALL MNH_RELEASE_FLAT( IZDV_SOURCE, IZTHETAV, IZPHIT ) #endif !------------------------------------------------------------------------------- ! diff --git a/src/ZSOLVER/qlap.f90 b/src/ZSOLVER/qlap.f90 index a92963b96..288ab841f 100644 --- a/src/ZSOLVER/qlap.f90 +++ b/src/ZSOLVER/qlap.f90 @@ -1,4 +1,4 @@ -!MNH_LIC Copyright 1994-2021 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 1994-2022 CNRS, Meteo-France and Universite Paul Sabatier !MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence !MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt !MNH_LIC for details. version 1. @@ -154,7 +154,7 @@ USE MODI_SHUMAN ! USE MODE_MPPDB #ifdef MNH_OPENACC -USE MODE_MNH_ZWORK , ONLY : MNH_ALLOCATE_ZT3D , MNH_REL_ZT3D +USE MODE_MNH_ZWORK , ONLY : MNH_ALLOCATE_FLAT , MNH_RELEASE_FLAT #endif ! USE MODD_IBM_PARAM_n, ONLY: XIBM_LS, LIBM, XIBM_SU @@ -218,9 +218,9 @@ IKE = IKU - JPVEXT IKB = 1 + JPVEXT ! #ifdef MNH_OPENACC -IZU = MNH_ALLOCATE_ZT3D( ZU,IIU,IJU,IKU ) -IZV = MNH_ALLOCATE_ZT3D( ZV,IIU,IJU,IKU ) -IZW = MNH_ALLOCATE_ZT3D( ZW,IIU,IJU,IKU ) +IZU = MNH_ALLOCATE_FLAT( ZU,IIU,IJU,IKU ) +IZV = MNH_ALLOCATE_FLAT( ZV,IIU,IJU,IKU ) +IZW = MNH_ALLOCATE_FLAT( ZW,IIU,IJU,IKU ) #endif ! ZU = GX_M_U(1,IKU,1,PY,PDXX,PDZZ,PDZX) @@ -331,7 +331,7 @@ IF (LIBM) THEN ENDIF ! #ifdef MNH_OPENACC -CALL MNH_REL_ZT3D ( IZU,IZV,IZW ) +CALL MNH_RELEASE_FLAT ( IZU,IZV,IZW ) #endif !------------------------------------------------------------------------------- ! @@ -426,7 +426,7 @@ USE MODI_SHUMAN_DEVICE ! USE MODE_MPPDB ! -USE MODE_MNH_ZWORK , ONLY : MNH_ALLOCATE_ZT3D , MNH_REL_ZT3D +USE MODE_MNH_ZWORK, ONLY: MNH_ALLOCATE_FLAT, MNH_RELEASE_FLAT ! USE MODI_GET_HALO USE MODD_IBM_PARAM_n, ONLY: XIBM_LS, LIBM, XIBM_SU @@ -491,15 +491,15 @@ GEAST = ( HLBCX(2) /= 'CYCL' .AND. LEAST_ll() ) GSOUTH = ( HLBCY(1) /= 'CYCL' .AND. LSOUTH_ll() ) GNORTH = ( HLBCY(2) /= 'CYCL' .AND. LNORTH_ll() ) ! -IZU = MNH_ALLOCATE_ZT3D( ZU,IIU,IJU,IKU ) -IZV = MNH_ALLOCATE_ZT3D( ZV,IIU,IJU,IKU ) -IZW = MNH_ALLOCATE_ZT3D( ZW,IIU,IJU,IKU ) +IZU = MNH_ALLOCATE_FLAT( ZU, IIU, IJU, IKU ) +IZV = MNH_ALLOCATE_FLAT( ZV, IIU, IJU, IKU ) +IZW = MNH_ALLOCATE_FLAT( ZW, IIU, IJU, IKU ) ! -IZMXM = MNH_ALLOCATE_ZT3D( ZMXM,IIU,IJU,IKU ) -IZMYM = MNH_ALLOCATE_ZT3D( ZMYM,IIU,IJU,IKU ) -IZMZM = MNH_ALLOCATE_ZT3D( ZMZM,IIU,IJU,IKU ) -IZRHODJ = MNH_ALLOCATE_ZT3D( ZRHODJ ,IIU,IJU,IKU ) -IZGZMW = MNH_ALLOCATE_ZT3D( ZGZMW ,IIU,IJU,IKU ) +IZMXM = MNH_ALLOCATE_FLAT( ZMXM, IIU, IJU, IKU ) +IZMYM = MNH_ALLOCATE_FLAT( ZMYM, IIU, IJU, IKU ) +IZMZM = MNH_ALLOCATE_FLAT( ZMZM, IIU, IJU, IKU ) +IZRHODJ = MNH_ALLOCATE_FLAT( ZRHODJ, IIU, IJU, IKU ) +IZGZMW = MNH_ALLOCATE_FLAT( ZGZMW, IIU, IJU, IKU ) ! CALL GX_M_U_DEVICE(1,IKU,1,PY,PDXX,PDZZ,PDZX,ZU) CALL MPPDB_CHECK3D(ZU,'QLAP::ZU',PRECISION) @@ -632,7 +632,7 @@ IF (LIBM) THEN ! ENDIF ! -CALL MNH_REL_ZT3D ( IZU,IZV,IZW, IZMXM,IZMYM,IZMZM,IZRHODJ,IZGZMW ) +CALL MNH_RELEASE_FLAT( IZU, IZV, IZW, IZMXM, IZMYM, IZMZM, IZRHODJ, IZGZMW ) !------------------------------------------------------------------------------- ! END SUBROUTINE QLAP_DEVICE diff --git a/src/ZSOLVER/tridiag_thermo.f90 b/src/ZSOLVER/tridiag_thermo.f90 index 0e6f21de9..333047bf3 100644 --- a/src/ZSOLVER/tridiag_thermo.f90 +++ b/src/ZSOLVER/tridiag_thermo.f90 @@ -158,8 +158,7 @@ USE MODI_BITREP #endif ! #ifdef MNH_OPENACC -USE MODE_MNH_ZWORK , ONLY : MNH_ALLOCATE_ZT3D , MNH_REL_ZT3D , MNH_ALLOCATE_ZT2D, & - MNH_CHECK_IN_ZT3D,MNH_CHECK_OUT_ZT3D +USE MODE_MNH_ZWORK , ONLY : MNH_ALLOCATE_FLAT , MNH_RELEASE_FLAT #endif ! IMPLICIT NONE @@ -235,19 +234,18 @@ allocate( zy (JIU,JJU,JKU ) ) allocate( zgam (JIU,JJU,JKU ) ) allocate( zbet (JIU,JJU ) ) #else -CALL MNH_CHECK_IN_ZT3D("TRIDIAG_THERMO") -izrhodj_dfddtdz_o_dz2 = MNH_ALLOCATE_ZT3D( zrhodj_dfddtdz_o_dz2,JIU,JJU,JKU ) -izmzm_rhodj = MNH_ALLOCATE_ZT3D( zmzm_rhodj ,JIU,JJU,JKU ) -iza = MNH_ALLOCATE_ZT3D( za ,JIU,JJU,JKU ) -izb = MNH_ALLOCATE_ZT3D( zb ,JIU,JJU,JKU ) -izc = MNH_ALLOCATE_ZT3D( zc ,JIU,JJU,JKU ) -izy = MNH_ALLOCATE_ZT3D( zy ,JIU,JJU,JKU ) -izgam = MNH_ALLOCATE_ZT3D( zgam ,JIU,JJU,JKU ) -izbet = MNH_ALLOCATE_ZT2D( zbet ,JIU,JJU ) +izrhodj_dfddtdz_o_dz2 = MNH_ALLOCATE_FLAT( zrhodj_dfddtdz_o_dz2, JIU, JJU, JKU ) +izmzm_rhodj = MNH_ALLOCATE_FLAT( zmzm_rhodj , JIU, JJU, JKU ) +iza = MNH_ALLOCATE_FLAT( za , JIU, JJU, JKU ) +izb = MNH_ALLOCATE_FLAT( zb , JIU, JJU, JKU ) +izc = MNH_ALLOCATE_FLAT( zc , JIU, JJU, JKU ) +izy = MNH_ALLOCATE_FLAT( zy , JIU, JJU, JKU ) +izgam = MNH_ALLOCATE_FLAT( zgam , JIU, JJU, JKU ) +izbet = MNH_ALLOCATE_FLAT( zbet , JIU, JJU ) #endif #ifdef MNH_OPENACC -iztmp1_device = MNH_ALLOCATE_ZT3D( ztmp1_device,JIU,JJU,JKU ) +iztmp1_device = MNH_ALLOCATE_FLAT( ztmp1_device, JIU, JJU, JKU ) #endif !$acc data present( zrhodj_dfddtdz_o_dz2, zmzm_rhodj, za, zb, zc, zy, zgam, zbet, ztmp1_device ) @@ -480,9 +478,8 @@ end if #ifndef MNH_OPENACC deallocate (zrhodj_dfddtdz_o_dz2,zmzm_rhodj,za,zb,zc,zy,zgam,zbet) #else -CALL MNH_REL_ZT3D(IZRHODJ_DFDDTDZ_O_DZ2,IZMZM_RHODJ,IZA,IZB,IZC,IZY,IZGAM,& - IZBET,iztmp1_device) -CALL MNH_CHECK_OUT_ZT3D("TRIDIAG_THERMO") +CALL MNH_RELEASE_FLAT( IZRHODJ_DFDDTDZ_O_DZ2, IZMZM_RHODJ, IZA, IZB, IZC, IZY, IZGAM, & + IZBET, iztmp1_device ) #endif !$acc end data diff --git a/src/ZSOLVER/turb.f90 b/src/ZSOLVER/turb.f90 index 66b8ae380..450f91cc1 100644 --- a/src/ZSOLVER/turb.f90 +++ b/src/ZSOLVER/turb.f90 @@ -9,9 +9,7 @@ module mode_turb #ifdef MNH_OPENACC use mode_msg - USE MODE_MNH_ZWORK , ONLY : MNH_ALLOCATE_ZT3D , MNH_REL_ZT3D, MNH_ALLOCATE_ZT3DP , MNH_ALLOCATE_ZT2D, & - MNH_ALLOCATE_ZT4D , MNH_REL_ZT4D , & - MNH_CHECK_IN_ZT3D,MNH_CHECK_OUT_ZT3D + USE MODE_MNH_ZWORK, ONLY: MNH_ALLOCATE_FLAT, MNH_RELEASE_FLAT #endif #ifdef MNH_BITREP @@ -617,75 +615,74 @@ allocate( zdudz (JIU,JJU, JKU_TURB ) ) allocate( zdvdz (JIU,JJU, JKU_TURB ) ) #else -CALL MNH_CHECK_IN_ZT3D("TURB") -IZCP = MNH_ALLOCATE_ZT3D (ZCP ,JIU,JJU,JKU ) -IZEXN = MNH_ALLOCATE_ZT3D (ZEXN ,JIU,JJU,JKU ) -IZT = MNH_ALLOCATE_ZT3D (ZT ,JIU,JJU,JKU ) -IZLOCPEXNM = MNH_ALLOCATE_ZT3D (ZLOCPEXNM ,JIU,JJU,JKU ) -IZLEPS = MNH_ALLOCATE_ZT3D (ZLEPS ,JIU,JJU,JKU ) -IZTRH = MNH_ALLOCATE_ZT3D (ZTRH ,JIU,JJU,JKU ) -IZATHETA = MNH_ALLOCATE_ZT3D (ZATHETA ,JIU,JJU,JKU ) -IZAMOIST = MNH_ALLOCATE_ZT3D (ZAMOIST ,JIU,JJU,JKU ) -IZCOEF_DISS = MNH_ALLOCATE_ZT3D (ZCOEF_DISS,JIU,JJU,JKU ) -IZFRAC_ICE = MNH_ALLOCATE_ZT3D (ZFRAC_ICE ,JIU,JJU,JKU ) - -IZMWTH = MNH_ALLOCATE_ZT3D (ZMWTH ,JIU,JJU,JKU ) -IZMWR = MNH_ALLOCATE_ZT3D (ZMWR ,JIU,JJU,JKU ) -IZMTH2 = MNH_ALLOCATE_ZT3D (ZMTH2 ,JIU,JJU,JKU ) -IZMR2 = MNH_ALLOCATE_ZT3D (ZMR2 ,JIU,JJU,JKU ) -IZMTHR = MNH_ALLOCATE_ZT3D (ZMTHR ,JIU,JJU,JKU ) - -IZFWTH = MNH_ALLOCATE_ZT3D (ZFWTH ,JIU,JJU,JKU ) -IZFWR = MNH_ALLOCATE_ZT3D (ZFWR ,JIU,JJU,JKU ) -IZFTH2 = MNH_ALLOCATE_ZT3D (ZFTH2 ,JIU,JJU,JKU ) -IZFR2 = MNH_ALLOCATE_ZT3D (ZFR2 ,JIU,JJU,JKU ) -IZFTHR = MNH_ALLOCATE_ZT3D (ZFTHR ,JIU,JJU,JKU ) -IZTHLM = MNH_ALLOCATE_ZT3D (ZTHLM ,JIU,JJU,JKU ) +IZCP = MNH_ALLOCATE_FLAT( ZCP, JIU, JJU, JKU ) +IZEXN = MNH_ALLOCATE_FLAT( ZEXN, JIU, JJU, JKU ) +IZT = MNH_ALLOCATE_FLAT( ZT, JIU, JJU, JKU ) +IZLOCPEXNM = MNH_ALLOCATE_FLAT( ZLOCPEXNM, JIU, JJU, JKU ) +IZLEPS = MNH_ALLOCATE_FLAT( ZLEPS, JIU, JJU, JKU ) +IZTRH = MNH_ALLOCATE_FLAT( ZTRH, JIU, JJU, JKU ) +IZATHETA = MNH_ALLOCATE_FLAT( ZATHETA, JIU, JJU, JKU ) +IZAMOIST = MNH_ALLOCATE_FLAT( ZAMOIST, JIU, JJU, JKU ) +IZCOEF_DISS = MNH_ALLOCATE_FLAT( ZCOEF_DISS, JIU, JJU, JKU ) +IZFRAC_ICE = MNH_ALLOCATE_FLAT( ZFRAC_ICE, JIU, JJU, JKU ) + +IZMWTH = MNH_ALLOCATE_FLAT( ZMWTH, JIU, JJU, JKU ) +IZMWR = MNH_ALLOCATE_FLAT( ZMWR, JIU, JJU, JKU ) +IZMTH2 = MNH_ALLOCATE_FLAT( ZMTH2, JIU, JJU, JKU ) +IZMR2 = MNH_ALLOCATE_FLAT( ZMR2, JIU, JJU, JKU ) +IZMTHR = MNH_ALLOCATE_FLAT( ZMTHR, JIU, JJU, JKU ) + +IZFWTH = MNH_ALLOCATE_FLAT( ZFWTH, JIU, JJU, JKU ) +IZFWR = MNH_ALLOCATE_FLAT( ZFWR, JIU, JJU, JKU ) +IZFTH2 = MNH_ALLOCATE_FLAT( ZFTH2, JIU, JJU, JKU ) +IZFR2 = MNH_ALLOCATE_FLAT( ZFR2, JIU, JJU, JKU ) +IZFTHR = MNH_ALLOCATE_FLAT( ZFTHR, JIU, JJU, JKU ) +IZTHLM = MNH_ALLOCATE_FLAT( ZTHLM, JIU, JJU, JKU ) JLU_ZRM = 0 IF ( HTURBLEN == 'BL89' .OR. HTURBLEN == 'RM17' .OR. ORMC01 ) JLU_ZRM = SIZE(PRT,4) -IZRM = MNH_ALLOCATE_ZT4D ( ZRM,JIU,JJU,JKU, JLU_ZRM ) +IZRM = MNH_ALLOCATE_FLAT( ZRM, JIU, JJU, JKU, JLU_ZRM ) -IZTAU11M = MNH_ALLOCATE_ZT2D ( ZTAU11M,JIU,JJU ) -IZTAU12M = MNH_ALLOCATE_ZT2D ( ZTAU12M,JIU,JJU ) -IZTAU22M = MNH_ALLOCATE_ZT2D ( ZTAU22M,JIU,JJU ) -IZTAU33M = MNH_ALLOCATE_ZT2D ( ZTAU33M,JIU,JJU ) -IZUSLOPE = MNH_ALLOCATE_ZT2D ( ZUSLOPE,JIU,JJU ) -IZVSLOPE = MNH_ALLOCATE_ZT2D ( ZVSLOPE,JIU,JJU ) -IZCDUEFF = MNH_ALLOCATE_ZT2D ( ZCDUEFF,JIU,JJU ) -IZLMO = MNH_ALLOCATE_ZT2D ( ZLMO ,JIU,JJU ) +IZTAU11M = MNH_ALLOCATE_FLAT( ZTAU11M, JIU, JJU ) +IZTAU12M = MNH_ALLOCATE_FLAT( ZTAU12M, JIU, JJU ) +IZTAU22M = MNH_ALLOCATE_FLAT( ZTAU22M, JIU, JJU ) +IZTAU33M = MNH_ALLOCATE_FLAT( ZTAU33M, JIU, JJU ) +IZUSLOPE = MNH_ALLOCATE_FLAT( ZUSLOPE, JIU, JJU ) +IZVSLOPE = MNH_ALLOCATE_FLAT( ZVSLOPE, JIU, JJU ) +IZCDUEFF = MNH_ALLOCATE_FLAT( ZCDUEFF, JIU, JJU ) +IZLMO = MNH_ALLOCATE_FLAT( ZLMO, JIU, JJU ) JJU_ORMC01 = 0 IF (ORMC01) JJU_ORMC01 = SIZE(PTHLT,2) -IZUSTAR = MNH_ALLOCATE_ZT2D ( ZUSTAR ,JIU,JJU_ORMC01 ) -IZRVM = MNH_ALLOCATE_ZT2D ( ZRVM ,JIU,JJU_ORMC01 ) -IZSFRV = MNH_ALLOCATE_ZT2D ( ZSFRV ,JIU,JJU_ORMC01 ) +IZUSTAR = MNH_ALLOCATE_FLAT( ZUSTAR, JIU, JJU_ORMC01 ) +IZRVM = MNH_ALLOCATE_FLAT( ZRVM, JIU, JJU_ORMC01 ) +IZSFRV = MNH_ALLOCATE_FLAT( ZSFRV, JIU, JJU_ORMC01 ) JKU_CLOUD = 0 IF ( HCLOUD == 'KHKO' .OR. HCLOUD == 'C2R2' ) JKU_CLOUD = size( put, 3 ) -iztt = MNH_ALLOCATE_ZT3D( ztt ,JIU,JJU,JKU_CLOUD ) -izexne = MNH_ALLOCATE_ZT3D( zexne ,JIU,JJU,JKU_CLOUD ) -izlv = MNH_ALLOCATE_ZT3D( zlv ,JIU,JJU,JKU_CLOUD ) -izcph = MNH_ALLOCATE_ZT3D( zcph ,JIU,JJU,JKU_CLOUD ) +iztt = MNH_ALLOCATE_FLAT( ztt, JIU, JJU, JKU_CLOUD ) +izexne = MNH_ALLOCATE_FLAT( zexne, JIU, JJU, JKU_CLOUD ) +izlv = MNH_ALLOCATE_FLAT( zlv, JIU, JJU, JKU_CLOUD ) +izcph = MNH_ALLOCATE_FLAT( zcph, JIU, JJU, JKU_CLOUD ) JKU_TURB = 0 IF ( HTURBLEN == 'BL89' .OR. HTURBLEN == 'RM17' ) JKU_TURB = size( put, 3 ) -izshear = MNH_ALLOCATE_ZT3D( zshear,JIU,JJU, JKU_TURB ) +izshear = MNH_ALLOCATE_FLAT( zshear, JIU, JJU, JKU_TURB ) JKU_TURB = 0 IF ( HTURBLEN == 'RM17' ) JKU_TURB = size( put, 3 ) -izdudz = MNH_ALLOCATE_ZT3D( zdudz ,JIU,JJU, JKU_TURB ) -izdvdz = MNH_ALLOCATE_ZT3D( zdvdz ,JIU,JJU, JKU_TURB ) +izdudz = MNH_ALLOCATE_FLAT( zdudz, JIU, JJU, JKU_TURB ) +izdvdz = MNH_ALLOCATE_FLAT( zdvdz, JIU, JJU, JKU_TURB ) #endif #ifdef MNH_OPENACC -iztmp1_device = MNH_ALLOCATE_ZT3D( ztmp1_device,JIU,JJU,JKU ) +iztmp1_device = MNH_ALLOCATE_FLAT( ztmp1_device, JIU, JJU, JKU ) JKU_TURB = 0 IF (HTURBDIM=="1DIM") JKU_TURB = size( pthlt, 3 ) -iztmp2_device = MNH_ALLOCATE_ZT3D( ztmp2_device,JIU,JJU, JKU_TURB ) -iztmp3_device = MNH_ALLOCATE_ZT3D( ztmp3_device,JIU,JJU, JKU_TURB ) +iztmp2_device = MNH_ALLOCATE_FLAT( ztmp2_device, JIU, JJU, JKU_TURB ) +iztmp3_device = MNH_ALLOCATE_FLAT( ztmp3_device, JIU, JJU, JKU_TURB ) #endif @@ -1609,22 +1606,20 @@ deallocate( zcp, zexn, zt, zlocpexnm, zleps, ztrh, & ztt, zexne, zlv, zcph, zshear, zdudz, zdvdz ) #else -CALL MNH_REL_ZT3D ( iztt, izexne, izlv, izcph, izshear, izdudz, izdvdz, & - iztmp1_device, iztmp2_device, iztmp3_device ) +CALL MNH_RELEASE_FLAT( iztt, izexne, izlv, izcph, izshear, izdudz, izdvdz, & + iztmp1_device, iztmp2_device, iztmp3_device ) -CALL MNH_REL_ZT3D ( iztau11m, iztau12m, iztau22m, iztau33m, & - izuslope, izvslope, izcdueff, izlmo, & - izustar, izrvm, izsfrv ) +CALL MNH_RELEASE_FLAT( iztau11m, iztau12m, iztau22m, iztau33m, & + izuslope, izvslope, izcdueff, izlmo, & + izustar, izrvm, izsfrv ) -CALL MNH_REL_ZT3D ( izrm) +CALL MNH_RELEASE_FLAT( izrm) -CALL MNH_REL_ZT3D ( izmwth, izmwr, izmth2, izmr2, izmthr, & - izfwth, izfwr, izfth2, izfr2, izfthr, izthlm ) +CALL MNH_RELEASE_FLAT( izmwth, izmwr, izmth2, izmr2, izmthr, & + izfwth, izfwr, izfth2, izfr2, izfthr, izthlm ) -CALL MNH_REL_ZT3D ( izcp, izexn, izt, izlocpexnm, izleps, iztrh, & - izatheta, izamoist, izcoef_diss, izfrac_ice ) - -CALL MNH_CHECK_OUT_ZT3D("TURB") +CALL MNH_RELEASE_FLAT( izcp, izexn, izt, izlocpexnm, izleps, iztrh, & + izatheta, izamoist, izcoef_diss, izfrac_ice ) #endif !$acc end data @@ -1799,8 +1794,8 @@ INTEGER :: izrvsat, izdrvsatdt allocate( zrvsat ( size( pexn, 1 ), size( pexn, 2 ), size( pexn, 3 ) ) ) allocate( zdrvsatdt( size( pexn, 1 ), size( pexn, 2 ), size( pexn, 3 ) ) ) #else -izrvsat = MNH_ALLOCATE_ZT3D( zrvsat , size( pexn, 1 ), size( pexn, 2 ), size( pexn, 3 ) ) -izdrvsatdt = MNH_ALLOCATE_ZT3D( zdrvsatdt, size( pexn, 1 ), size( pexn, 2 ), size( pexn, 3 ) ) +izrvsat = MNH_ALLOCATE_FLAT( zrvsat , size( pexn, 1 ), size( pexn, 2 ), size( pexn, 3 ) ) +izdrvsatdt = MNH_ALLOCATE_FLAT( zdrvsatdt, size( pexn, 1 ), size( pexn, 2 ), size( pexn, 3 ) ) #endif !$acc data present( zrvsat, zdrvsatdt ) @@ -1875,7 +1870,7 @@ izdrvsatdt = MNH_ALLOCATE_ZT3D( zdrvsatdt, size( pexn, 1 ), size( pexn, 2 ), siz #ifndef MNH_OPENACC deallocate( zrvsat, zdrvsatdt ) #else - CALL MNH_REL_ZT3D(izrvsat, izdrvsatdt ) + CALL MNH_RELEASE_FLAT( izrvsat, izdrvsatdt ) #endif !$acc end data @@ -2411,16 +2406,16 @@ allocate( ZDRTDZ (JIU,JJU,JKU) ) allocate( ZETHETA(JIU,JJU,JKU) ) allocate( ZEMOIST(JIU,JJU,JKU) ) #else -IZWORK2D = MNH_ALLOCATE_ZT2D( ZWORK2D,JIU,JJU) -IZDTHLDZ = MNH_ALLOCATE_ZT3D( ZDTHLDZ,JIU,JJU,JKU) -IZDRTDZ = MNH_ALLOCATE_ZT3D( ZDRTDZ ,JIU,JJU,JKU) -IZETHETA = MNH_ALLOCATE_ZT3D( ZETHETA,JIU,JJU,JKU) -IZEMOIST = MNH_ALLOCATE_ZT3D( ZEMOIST,JIU,JJU,JKU) +IZWORK2D = MNH_ALLOCATE_FLAT( ZWORK2D, JIU, JJU ) +IZDTHLDZ = MNH_ALLOCATE_FLAT( ZDTHLDZ, JIU, JJU, JKU ) +IZDRTDZ = MNH_ALLOCATE_FLAT( ZDRTDZ, JIU, JJU, JKU ) +IZETHETA = MNH_ALLOCATE_FLAT( ZETHETA, JIU, JJU, JKU ) +IZEMOIST = MNH_ALLOCATE_FLAT( ZEMOIST, JIU, JJU, JKU ) #endif #ifdef MNH_OPENACC -IZTMP1_DEVICE = MNH_ALLOCATE_ZT3D( ZTMP1_DEVICE,JIU,JJU,JKU) -IZTMP2_DEVICE = MNH_ALLOCATE_ZT3D( ZTMP2_DEVICE,JIU,JJU,JKU) +IZTMP1_DEVICE = MNH_ALLOCATE_FLAT( ZTMP1_DEVICE, JIU, JJU, JKU ) +IZTMP2_DEVICE = MNH_ALLOCATE_FLAT( ZTMP2_DEVICE, JIU, JJU, JKU ) #endif !$acc data present(zwork2d, zdthldz, zdrtdz, zetheta, zemoist, & @@ -2635,8 +2630,8 @@ end if #ifndef MNH_OPENACC deallocate(zwork2d, zdthldz, zdrtdz, zetheta, zemoist ) #else -CALL MNH_REL_ZT3D(izwork2d, izdthldz, izdrtdz, izetheta, izemoist, & - iztmp1_device, iztmp2_device ) +CALL MNH_RELEASE_FLAT( izwork2d, izdthldz, izdrtdz, izetheta, izemoist, & + iztmp1_device, iztmp2_device ) #endif !$acc end data diff --git a/src/ZSOLVER/turb_hor_dyn_corr.f90 b/src/ZSOLVER/turb_hor_dyn_corr.f90 index 55c14bce6..6b74f21fd 100644 --- a/src/ZSOLVER/turb_hor_dyn_corr.f90 +++ b/src/ZSOLVER/turb_hor_dyn_corr.f90 @@ -153,7 +153,7 @@ USE MODD_NSV USE MODE_IO_FIELD_WRITE, only: IO_Field_write USE MODE_ll #ifdef MNH_OPENACC -USE MODE_MNH_ZWORK , ONLY : MNH_ALLOCATE_ZT3D , MNH_REL_ZT3D, MNH_ALLOCATE_ZT3DP , MNH_ALLOCATE_ZT2D +USE MODE_MNH_ZWORK, ONLY: MNH_ALLOCATE_FLAT, MNH_RELEASE_FLAT #endif use mode_mppdb ! @@ -359,34 +359,34 @@ allocate( zdw_dz (JIU,JJU, 1 ) ) allocate( zcoeff(JIU,JJU, 1 + jpvext : 3 + jpvext ) ) allocate( zdzz (JIU,JJU, 1 + jpvext : 3 + jpvext ) ) #else -izflx = MNH_ALLOCATE_ZT3D( zflx ,JIU,JJU,JKU ) -izwork = MNH_ALLOCATE_ZT3D( zwork,JIU,JJU,JKU ) +izflx = MNH_ALLOCATE_FLAT( zflx, JIU, JJU, JKU ) +izwork = MNH_ALLOCATE_FLAT( zwork, JIU, JJU, JKU ) -izdirsinzw = MNH_ALLOCATE_ZT2D( zdirsinzw,JIU,JJU ) +izdirsinzw = MNH_ALLOCATE_FLAT( zdirsinzw,JIU,JJU ) -igx_u_m_pum = MNH_ALLOCATE_ZT3D( gx_u_m_pum,JIU,JJU,JKU ) -igy_v_m_pvm = MNH_ALLOCATE_ZT3D( gy_v_m_pvm,JIU,JJU,JKU ) -igz_w_m_pwm = MNH_ALLOCATE_ZT3D( gz_w_m_pwm,JIU,JJU,JKU ) -igz_w_m_zwp = MNH_ALLOCATE_ZT3D( gz_w_m_zwp,JIU,JJU,JKU ) -izmzf_dzz = MNH_ALLOCATE_ZT3D( zmzf_dzz ,JIU,JJU,JKU ) -izdfddwdz = MNH_ALLOCATE_ZT3D( zdfddwdz ,JIU,JJU,JKU ) -izwp = MNH_ALLOCATE_ZT3D( zwp ,JIU,JJU,JKU ) +igx_u_m_pum = MNH_ALLOCATE_FLAT( gx_u_m_pum, JIU, JJU, JKU ) +igy_v_m_pvm = MNH_ALLOCATE_FLAT( gy_v_m_pvm, JIU, JJU, JKU ) +igz_w_m_pwm = MNH_ALLOCATE_FLAT( gz_w_m_pwm, JIU, JJU, JKU ) +igz_w_m_zwp = MNH_ALLOCATE_FLAT( gz_w_m_zwp, JIU, JJU, JKU ) +izmzf_dzz = MNH_ALLOCATE_FLAT( zmzf_dzz, JIU, JJU, JKU ) +izdfddwdz = MNH_ALLOCATE_FLAT( zdfddwdz, JIU, JJU, JKU ) +izwp = MNH_ALLOCATE_FLAT( zwp, JIU, JJU, JKU ) -izdu_dz_dzs_dx = MNH_ALLOCATE_ZT3DP( zdu_dz_dzs_dx,JIU,JJU, 1 , 1 ) -izdv_dz_dzs_dy = MNH_ALLOCATE_ZT3DP( zdv_dz_dzs_dy,JIU,JJU, 1 , 1 ) -izdu_dx = MNH_ALLOCATE_ZT3DP( zdu_dx ,JIU,JJU, 1 , 1 ) -izdv_dy = MNH_ALLOCATE_ZT3DP( zdv_dy ,JIU,JJU, 1 , 1 ) -izdw_dz = MNH_ALLOCATE_ZT3DP( zdw_dz ,JIU,JJU, 1 , 1 ) +izdu_dz_dzs_dx = MNH_ALLOCATE_FLAT( zdu_dz_dzs_dx,1, JIU, 1, JJU, 1 , 1 ) +izdv_dz_dzs_dy = MNH_ALLOCATE_FLAT( zdv_dz_dzs_dy,1, JIU, 1, JJU, 1 , 1 ) +izdu_dx = MNH_ALLOCATE_FLAT( zdu_dx, 1, JIU, 1, JJU, 1 , 1 ) +izdv_dy = MNH_ALLOCATE_FLAT( zdv_dy, 1, JIU, 1, JJU, 1 , 1 ) +izdw_dz = MNH_ALLOCATE_FLAT( zdw_dz, 1, JIU, 1, JJU, 1 , 1 ) -izcoeff = MNH_ALLOCATE_ZT3DP( zcoeff,JIU,JJU, 1 + jpvext , 3 + jpvext ) -izdzz = MNH_ALLOCATE_ZT3DP( zdzz ,JIU,JJU, 1 + jpvext , 3 + jpvext ) +izcoeff = MNH_ALLOCATE_FLAT( zcoeff,1, JIU, 1, JJU, 1 + jpvext, 3 + jpvext ) +izdzz = MNH_ALLOCATE_FLAT( zdzz, 1, JIU, 1, JJU, 1 + jpvext, 3 + jpvext ) #endif #ifdef MNH_OPENACC -iztmp1_device = MNH_ALLOCATE_ZT3D( ztmp1_device,JIU,JJU,JKU ) -iztmp2_device = MNH_ALLOCATE_ZT3D( ztmp2_device,JIU,JJU,JKU ) -iztmp3_device = MNH_ALLOCATE_ZT3D( ztmp3_device,JIU,JJU,JKU ) -iztmp4_device = MNH_ALLOCATE_ZT3D( ztmp4_device,JIU,JJU,JKU ) +iztmp1_device = MNH_ALLOCATE_FLAT( ztmp1_device, JIU, JJU, JKU ) +iztmp2_device = MNH_ALLOCATE_FLAT( ztmp2_device, JIU, JJU, JKU ) +iztmp3_device = MNH_ALLOCATE_FLAT( ztmp3_device, JIU, JJU, JKU ) +iztmp4_device = MNH_ALLOCATE_FLAT( ztmp4_device, JIU, JJU, JKU ) #endif !$acc data present(ZFLX, ZWORK, ZDIRSINZW, ZCOEFF, ZDZZ, & @@ -1337,12 +1337,12 @@ DEALLOCATE (ZFLX, ZWORK, ZDIRSINZW, ZCOEFF, ZDZZ, & ZMZF_DZZ, ZDFDDWDZ, ZWP, & ZDU_DZ_DZS_DX, ZDV_DZ_DZS_DY, ZDU_DX, ZDV_DY, ZDW_DZ ) #else -CALL MNH_REL_ZT3D(IZTMP1_DEVICE, IZTMP2_DEVICE, IZTMP3_DEVICE, IZTMP4_DEVICE ) -CALL MNH_REL_ZT3D(IZFLX, IZWORK, IZDIRSINZW, & - IGX_U_M_PUM, IGY_V_M_PVM, IGZ_W_M_PWM, IGZ_W_M_ZWP, & - IZMZF_DZZ, IZDFDDWDZ, IZWP, & - IZDU_DZ_DZS_DX, IZDV_DZ_DZS_DY, IZDU_DX, IZDV_DY, IZDW_DZ, & - IZCOEFF, IZDZZ ) +CALL MNH_RELEASE_FLAT( IZTMP1_DEVICE, IZTMP2_DEVICE, IZTMP3_DEVICE, IZTMP4_DEVICE ) +CALL MNH_RELEASE_FLAT( IZFLX, IZWORK, IZDIRSINZW, & + IGX_U_M_PUM, IGY_V_M_PVM, IGZ_W_M_PWM, IGZ_W_M_ZWP, & + IZMZF_DZZ, IZDFDDWDZ, IZWP, & + IZDU_DZ_DZS_DX, IZDV_DZ_DZS_DY, IZDU_DX, IZDV_DY, IZDW_DZ, & + IZCOEFF, IZDZZ ) #endif diff --git a/src/ZSOLVER/turb_hor_thermo_flux.f90 b/src/ZSOLVER/turb_hor_thermo_flux.f90 index 2a7724466..a6b56908f 100644 --- a/src/ZSOLVER/turb_hor_thermo_flux.f90 +++ b/src/ZSOLVER/turb_hor_thermo_flux.f90 @@ -152,9 +152,7 @@ USE MODI_LES_MEAN_SUBGRID USE MODI_SECOND_MNH ! #ifdef MNH_OPENACC -USE MODE_MNH_ZWORK , ONLY : MNH_ALLOCATE_ZT3D , MNH_REL_ZT3D, MNH_ALLOCATE_ZT3DP , MNH_ALLOCATE_ZT2D, & - MNH_ALLOCATE_ZT4D , MNH_REL_ZT4D, & - MNH_CHECK_IN_ZT3D,MNH_CHECK_OUT_ZT3D +USE MODE_MNH_ZWORK, ONLY: MNH_ALLOCATE_FLAT, MNH_RELEASE_FLAT #endif ! IMPLICIT NONE @@ -285,24 +283,23 @@ allocate( zflxc(JIU,JJU,JKU) ) allocate( zcoeff(JIU,JJU, 1 + jpvext : 3 + jpvext ) ) #else -CALL MNH_CHECK_IN_ZT3D("TURB_HOR_THERMO_FLUX") -izflx = MNH_ALLOCATE_ZT3D( zflx ,JIU,JJU,JKU ) -izflxc = MNH_ALLOCATE_ZT3D( zflxc,JIU,JJU,JKU ) -! izvptv= MNH_ALLOCATE_ZT3D( zvptv,JIU,JJU,JKU ) +izflx = MNH_ALLOCATE_FLAT( zflx, JIU, JJU, JKU ) +izflxc = MNH_ALLOCATE_FLAT( zflxc, JIU, JJU, JKU ) +! izvptv= MNH_ALLOCATE_FLAT( zvptv, JIU, JJU, JKU ) -izcoeff= MNH_ALLOCATE_ZT3DP( zcoeff,JIU,JJU, 1 + jpvext , 3 + jpvext ) +izcoeff= MNH_ALLOCATE_FLAT( zcoeff, 1, JIU, 1, JJU, 1 + jpvext, 3 + jpvext ) #endif #ifdef MNH_OPENACC -iztmp1_device= MNH_ALLOCATE_ZT3D( ztmp1_device,JIU,JJU,JKU ) -iztmp2_device= MNH_ALLOCATE_ZT3D( ztmp2_device,JIU,JJU,JKU ) -iztmp3_device= MNH_ALLOCATE_ZT3D( ztmp3_device,JIU,JJU,JKU ) -iztmp4_device= MNH_ALLOCATE_ZT3D( ztmp4_device,JIU,JJU,JKU ) -iztmp5_device= MNH_ALLOCATE_ZT3D( ztmp5_device,JIU,JJU,JKU ) -iztmp6_device= MNH_ALLOCATE_ZT3D( ztmp6_device,JIU,JJU,JKU ) -iztmp7_device= MNH_ALLOCATE_ZT3D( ztmp7_device,JIU,JJU,JKU ) -iztmp8_device= MNH_ALLOCATE_ZT3D( ztmp8_device,JIU,JJU,JKU ) +iztmp1_device = MNH_ALLOCATE_FLAT( ztmp1_device, JIU, JJU, JKU ) +iztmp2_device = MNH_ALLOCATE_FLAT( ztmp2_device, JIU, JJU, JKU ) +iztmp3_device = MNH_ALLOCATE_FLAT( ztmp3_device, JIU, JJU, JKU ) +iztmp4_device = MNH_ALLOCATE_FLAT( ztmp4_device, JIU, JJU, JKU ) +iztmp5_device = MNH_ALLOCATE_FLAT( ztmp5_device, JIU, JJU, JKU ) +iztmp6_device = MNH_ALLOCATE_FLAT( ztmp6_device, JIU, JJU, JKU ) +iztmp7_device = MNH_ALLOCATE_FLAT( ztmp7_device, JIU, JJU, JKU ) +iztmp8_device = MNH_ALLOCATE_FLAT( ztmp8_device, JIU, JJU, JKU ) #endif !$acc data present( ZFLX, ZFLXC, ZCOEFF, & @@ -1847,10 +1844,9 @@ end if #ifndef MNH_OPENACC deallocate (zflx,zflxc,zcoeff) #else -CALL MNH_REL_ZT3D ( IZFLX, IZFLXC, IZCOEFF, & - IZTMP1_DEVICE, IZTMP2_DEVICE, IZTMP3_DEVICE, IZTMP4_DEVICE, & - IZTMP5_DEVICE, IZTMP6_DEVICE, IZTMP7_DEVICE, IZTMP8_DEVICE ) -CALL MNH_CHECK_OUT_ZT3D("TURB_HOR_THERMO_FLUX") +CALL MNH_RELEASE_FLAT( IZFLX, IZFLXC, IZCOEFF, & + IZTMP1_DEVICE, IZTMP2_DEVICE, IZTMP3_DEVICE, IZTMP4_DEVICE, & + IZTMP5_DEVICE, IZTMP6_DEVICE, IZTMP7_DEVICE, IZTMP8_DEVICE ) #endif !$acc end data diff --git a/src/ZSOLVER/zsolver.f90 b/src/ZSOLVER/zsolver.f90 index edc63f40b..ab198f36e 100644 --- a/src/ZSOLVER/zsolver.f90 +++ b/src/ZSOLVER/zsolver.f90 @@ -154,7 +154,7 @@ USE MODI_ZSOLVER_INV USE MODI_DOTPROD ! #ifdef MNH_OPENACC -USE MODE_MNH_ZWORK , ONLY : MNH_ALLOCATE_ZT3D , MNH_REL_ZT3D +USE MODE_MNH_ZWORK, ONLY: MNH_ALLOCATE_FLAT, MNH_RELEASE_FLAT #endif ! ! @@ -240,11 +240,11 @@ JKU = size(PPHI, 3 ) #ifndef MNH_OPENACC ALLOCATE(ZDELTA(JIU,JJU,JKU),ZKSI(JIU,JJU,JKU),ZP(JIU,JJU,JKU),ZQ(JIU,JJU,JKU),ZRESIDUE(JIU,JJU,JKU)) #else -IZDELTA = MNH_ALLOCATE_ZT3D(ZDELTA ,JIU,JJU,JKU ) -IZKSI = MNH_ALLOCATE_ZT3D(ZKSI ,JIU,JJU,JKU ) -IZP = MNH_ALLOCATE_ZT3D(ZP ,JIU,JJU,JKU ) -IZQ = MNH_ALLOCATE_ZT3D(ZQ ,JIU,JJU,JKU ) -IZRESIDUE = MNH_ALLOCATE_ZT3D(ZRESIDUE ,JIU,JJU,JKU ) +IZDELTA = MNH_ALLOCATE_FLAT( ZDELTA , JIU, JJU, JKU ) +IZKSI = MNH_ALLOCATE_FLAT( ZKSI , JIU, JJU, JKU ) +IZP = MNH_ALLOCATE_FLAT( ZP , JIU, JJU, JKU ) +IZQ = MNH_ALLOCATE_FLAT( ZQ , JIU, JJU, JKU ) +IZRESIDUE = MNH_ALLOCATE_FLAT( ZRESIDUE , JIU, JJU, JKU ) #endif !* 1.1 compute the vector: r^(0) = Q(PHI) - Y @@ -333,7 +333,7 @@ END DO ! end of the loop for the iterative solver #ifndef MNH_OPENACC DEALLOCATE(ZDELTA,ZKSI,ZP,ZQ,ZRESIDUE) #else -CALL MNH_REL_ZT3D(IZDELTA,IZKSI,IZP,IZQ,IZRESIDUE) +CALL MNH_RELEASE_FLAT( IZDELTA, IZKSI, IZP, IZQ, IZRESIDUE ) #endif !------------------------------------------------------------------------------- ! diff --git a/src/ZSOLVER/zsolver_inv.f90 b/src/ZSOLVER/zsolver_inv.f90 index ceaa670be..cc4d32025 100644 --- a/src/ZSOLVER/zsolver_inv.f90 +++ b/src/ZSOLVER/zsolver_inv.f90 @@ -146,7 +146,7 @@ SUBROUTINE ZSOLVER_INV(HLBCX,HLBCY,PDXHATM,PDYHATM,PRHOM,PAF,PBF,PCF, & ! USE mode_mg_main_mnh #ifdef MNH_OPENACC - USE MODE_MNH_ZWORK , ONLY : MNH_ALLOCATE_ZT3D , MNH_REL_ZT3D + USE MODE_MNH_ZWORK, ONLY: MNH_ALLOCATE_FLAT, MNH_RELEASE_FLAT #endif ! IMPLICIT NONE @@ -219,7 +219,7 @@ SUBROUTINE ZSOLVER_INV(HLBCX,HLBCY,PDXHATM,PDYHATM,PRHOM,PAF,PBF,PCF, & #ifndef MNH_OPENACC ALLOCATE(ZY(IIU,IJU,IKU)) #else - IZY = MNH_ALLOCATE_ZT3D(ZY ,IIU,IJU,IKU ) + IZY = MNH_ALLOCATE_FLAT( ZY, IIU, IJU, IKU ) #endif ! !------------------------------------------------------------------------------- @@ -318,7 +318,7 @@ SUBROUTINE ZSOLVER_INV(HLBCX,HLBCY,PDXHATM,PDYHATM,PRHOM,PAF,PBF,PCF, & #ifndef MNH_OPENACC DEALLOCATE(ZY) #else - CALL MNH_REL_ZT3D(IZY) + CALL MNH_RELEASE_FLAT( IZY ) #endif ! CONTAINS -- GitLab