Skip to content

Commit

Permalink
Dealocate memory via cvmix_shear_end and changed some var names to sn…
Browse files Browse the repository at this point in the history
…ake_case convention
  • Loading branch information
gustavo-marques committed Mar 13, 2018
1 parent a209b7a commit f12702c
Show file tree
Hide file tree
Showing 3 changed files with 21 additions and 6 deletions.
14 changes: 12 additions & 2 deletions src/parameterizations/vertical/MOM_cvmix_shear.F90
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ module MOM_cvmix_shear

#include <MOM_memory.h>

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
Expand All @@ -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

Expand Down Expand Up @@ -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
6 changes: 3 additions & 3 deletions src/parameterizations/vertical/MOM_diabatic_driver.F90
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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
Expand Down Expand Up @@ -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"//&
Expand Down
7 changes: 6 additions & 1 deletion src/parameterizations/vertical/MOM_set_diffusivity.F90
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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
Expand Down

0 comments on commit f12702c

Please sign in to comment.