Vertical Mixing parameterization

Hi, I'm a new CESM user and would like to play around with the vertical mixing parameterizations.

I have no problem running the model on the default (KPP) settings but would like to run it on the 'const' parameterization and change diffusion coefficients. Can someone advise how to do this? Do I only need to make changes to the vmix_choice in /Buildconf/pop2.buildnml.csh or do I also have to make changes to other .F90 or .csh files and put these in /SourceMods/src.pop2/?

Many thanks,

Lester
 

mlevy

Michael Levy
CSEG and Liaisons
Staff member
Hi Lester,It sounds like you are running CESM 1.0.5? There's a handful of namelist variables you should change:
  • vmix_choice = 'const'
  • ltidal_mixing = .false.
  • lhoriz_varying_bckgrnd = .false.
  • overflows_on = .false.
  • overflows_interactive = .false.
There is also a source mod that needs to be put in diagnostics.F90. The block of code at line 1375:
Code:
<code>
        !$OMP PARALLEL DO PRIVATE(iblock)
        do iblock=1,nblocks_clinic
          call accumulate_tavg_field(HMXL(:,:,iblock), tavg_HMXL,   iblock, 1)
        end do
        !$OMP END PARALLEL DO

        !$OMP PARALLEL DO PRIVATE(iblock)
        do iblock=1,nblocks_clinic
          call accumulate_tavg_field(HMXL(:,:,iblock), tavg_HMXL_2, iblock, 1)
        end do
        !$OMP END PARALLEL DO

        !$OMP PARALLEL DO PRIVATE(iblock)
        do iblock=1,nblocks_clinic
          call accumulate_tavg_field(HMXL(:,:,iblock), tavg_XMXL,   iblock, 1)
        end do
        !$OMP END PARALLEL DO

        !$OMP PARALLEL DO PRIVATE(iblock)
        do iblock=1,nblocks_clinic
          call accumulate_tavg_field(HMXL(:,:,iblock), tavg_XMXL_2, iblock, 1)
        end do
        !$OMP END PARALLEL DO

        !$OMP PARALLEL DO PRIVATE(iblock)
        do iblock=1,nblocks_clinic
          call accumulate_tavg_field(HMXL(:,:,iblock), tavg_TMXL, iblock, 1)
        end do
        !$OMP END PARALLEL DO
</code>
should be preceded by
Code:
if (allocated(HMXL)) then
And followed by
Code:
end if
Similarly, the next block of code:
Code:
<code>
        !$OMP PARALLEL DO PRIVATE(iblock)
        do iblock=1,nblocks_clinic
          call accumulate_tavg_field(KPP_HBLT(:,:,iblock), tavg_HBLT, iblock, 1)
        end do
        !$OMP END PARALLEL DO

        !$OMP PARALLEL DO PRIVATE(iblock)
        do iblock=1,nblocks_clinic
          call accumulate_tavg_field(KPP_HBLT(:,:,iblock), tavg_XBLT, iblock, 1)
        end do
        !$OMP END PARALLEL DO

        !$OMP PARALLEL DO PRIVATE(iblock)
        do iblock=1,nblocks_clinic
          call accumulate_tavg_field(KPP_HBLT(:,:,iblock), tavg_TBLT, iblock, 1)
        end do
        !$OMP END PARALLEL DO
</code>
should be preceded by
Code:
if (allocated(KPP_HBLT)) then
And followed by
Code:
end if
Lastly, you'll need to update the list of variables written in the tavg history files (you don't want to output
Code:
QSW_HBL
,
Code:
KVMIX
,
Code:
TPOWER
,
Code:
VDC_T
,
Code:
VDC_S
,
Code:
VVC
,
Code:
VDC_BACK
,
Code:
VVC_BCK
, or
Code:
KVMIX_M
). I'm not familiar with how to do this in the 1.0.5 code base, but I will ask around and let you know as soon as I find out!~Mike
 

njn01

Member
Following up on Mike's instructions: you can learn how to remove variables from cesm1.0-based pop2 tavg output files by reading the cesm1.0-based version of the POP2 FAQ. See http://www.cesm.ucar.edu/models/cesm1.0/pop2/doc/faq/#tavg_reduce3.In your case,  when you remove VDC_BCK and VVC_BCK from the output, you will create an empty tavg output stream, which will cause POP2 to stop during initialization.  The simplest way to eliminate this problem is to reduce the number of streams from 3 to 2.  To do this in CESM1.0-based POP2, edit the $CASE/Buildconf/pop2.buildnml.csh script,  changing n_tavg_streams to 2 before submitting your job.
 
Back
Top