Scheduled Downtime
On Tuesday 24 October 2023 @ 5pm MT the forums will be in read only mode in preparation for the downtime. On Wednesday 25 October 2023 @ 5am MT, this website will be down for maintenance and expected to return online later in the morning.
Normal Operations
The forums are back online with normal operations. If you notice any issues or errors related to the forums, please reach out to help@ucar.edu

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.
 
Top