From f12702c58a54393473dbb18890b4a03d128efe94 Mon Sep 17 00:00:00 2001 From: Gustavo Marques Date: Tue, 13 Mar 2018 10:40:51 -0600 Subject: [PATCH] Dealocate memory via cvmix_shear_end and changed some var names to snake_case convention --- src/parameterizations/vertical/MOM_cvmix_shear.F90 | 14 ++++++++++++-- .../vertical/MOM_diabatic_driver.F90 | 6 +++--- .../vertical/MOM_set_diffusivity.F90 | 7 ++++++- 3 files changed, 21 insertions(+), 6 deletions(-) diff --git a/src/parameterizations/vertical/MOM_cvmix_shear.F90 b/src/parameterizations/vertical/MOM_cvmix_shear.F90 index 7704069d78..487b1cbf6f 100644 --- a/src/parameterizations/vertical/MOM_cvmix_shear.F90 +++ b/src/parameterizations/vertical/MOM_cvmix_shear.F90 @@ -25,7 +25,7 @@ module MOM_cvmix_shear #include -public calculate_cvmix_shear, cvmix_shear_init, cvmix_shear_is_used +public calculate_cvmix_shear, cvmix_shear_init, cvmix_shear_is_used, cvmix_shear_end !> Control structure including parameters for CVMix interior shear schemes. type, public :: cvmix_shear_cs @@ -38,7 +38,7 @@ module MOM_cvmix_shear character(10) :: Mix_Scheme !< Mixing scheme name (string) end type cvmix_shear_cs -character(len=40) :: mdl = "MOM_CVMix_shear" !< This module's name. +character(len=40) :: mdl = "MOM_cvmix_shear" !< This module's name. contains @@ -213,4 +213,14 @@ logical function cvmix_shear_is_used(param_file) cvmix_shear_is_used = (LMD94 .or. PP81) end function cvmix_shear_is_used +!> Clear pointers and dealocate memory +subroutine cvmix_shear_end(CS) + type(cvmix_shear_cs), pointer :: CS ! Control structure + + deallocate(CS%N2, CS%diag) + deallocate(CS%S2, CS%diag) + deallocate(CS) + +end subroutine cvmix_shear_end + end module MOM_cvmix_shear diff --git a/src/parameterizations/vertical/MOM_diabatic_driver.F90 b/src/parameterizations/vertical/MOM_diabatic_driver.F90 index bba8f657f2..aa4f9f072e 100644 --- a/src/parameterizations/vertical/MOM_diabatic_driver.F90 +++ b/src/parameterizations/vertical/MOM_diabatic_driver.F90 @@ -9,7 +9,7 @@ module MOM_diabatic_driver use MOM_checksum_packages, only : MOM_state_chksum, MOM_state_stats use MOM_cpu_clock, only : cpu_clock_id, cpu_clock_begin, cpu_clock_end use MOM_cpu_clock, only : CLOCK_MODULE_DRIVER, CLOCK_MODULE, CLOCK_ROUTINE -use MOM_CVMix_shear, only : CVMix_shear_is_used +use MOM_CVMix_shear, only : cvmix_shear_is_used use MOM_diabatic_aux, only : diabatic_aux_init, diabatic_aux_end, diabatic_aux_CS use MOM_diabatic_aux, only : make_frazil, adjust_salt, insert_brine, differential_diffuse_T_S, triDiagTS use MOM_diabatic_aux, only : find_uv_at_h, diagnoseMLDbyDensityDifference, applyBoundaryFluxesInOut @@ -522,7 +522,7 @@ subroutine diabatic(u, v, h, tv, Hml, fluxes, visc, ADp, CDp, dt, Time_end, G, G if (CS%debug) then call MOM_state_chksum("before find_uv_at_h", u, v, h, G, GV, haloshift=0) endif - if (CS%use_kappa_shear .or. CS%use_CVMix_shear) then + if (CS%use_kappa_shear .or. CS%use_cvmix_shear) then if ((CS%ML_mix_first > 0.0) .or. CS%use_geothermal) then call find_uv_at_h(u, v, h_orig, u_h, v_h, G, GV, eaml, ebml) if (CS%debug) then @@ -1920,7 +1920,7 @@ subroutine diabatic_driver_init(Time, G, GV, param_file, useALEalgorithm, diag, "If true, apply parameterization of double-diffusion.", & default=.false. ) CS%use_kappa_shear = kappa_shear_is_used(param_file) - CS%use_CVMix_shear = cvmix_shear_is_used(param_file) + CS%use_cvmix_shear = cvmix_shear_is_used(param_file) if (CS%bulkmixedlayer) then call get_param(param_file, mod, "ML_MIX_FIRST", CS%ML_mix_first, & "The fraction of the mixed layer mixing that is applied \n"//& diff --git a/src/parameterizations/vertical/MOM_set_diffusivity.F90 b/src/parameterizations/vertical/MOM_set_diffusivity.F90 index 2af9b8ef79..345f602902 100644 --- a/src/parameterizations/vertical/MOM_set_diffusivity.F90 +++ b/src/parameterizations/vertical/MOM_set_diffusivity.F90 @@ -20,6 +20,7 @@ module MOM_set_diffusivity use MOM_io, only : slasher, vardesc, var_desc, MOM_read_data use MOM_kappa_shear, only : calculate_kappa_shear, kappa_shear_init, Kappa_shear_CS use MOM_cvmix_shear, only : calculate_cvmix_shear, cvmix_shear_init, cvmix_shear_cs +use MOM_cvmix_shear, only : cvmix_shear_end use MOM_string_functions, only : uppercase use MOM_thickness_diffuse, only : vert_fill_TS use MOM_variables, only : thermo_var_ptrs, vertvisc_type, p3d @@ -3148,12 +3149,16 @@ subroutine set_diffusivity_init(Time, G, GV, param_file, diag, CS, diag_to_Z_CSp end subroutine set_diffusivity_init +!> Clear pointers and dealocate memory subroutine set_diffusivity_end(CS) - type(set_diffusivity_CS), pointer :: CS + type(set_diffusivity_CS), pointer :: CS !< Control structure for this module if (CS%user_change_diff) & call user_change_diff_end(CS%user_change_diff_CSp) + if (CS%use_cvmix_shear) & + call cvmix_shear_end(CS%cvmix_shear_csp) + if (associated(CS)) deallocate(CS) end subroutine set_diffusivity_end