Changing the moist Held-Suarez relaxation temperature profile

The following describes how to modify the relaxation temperature profile used in the moist Held-Suarez configuration (FTJ16 compset)

The relaxation temperature profile is set in the source code

$CESM/components/cam/src/physics/simple/tj2016.F90

where $CESM is the location of the CESM release.

Create an FTJ16 run in the directory $CASE and then copy the tj2016.F90 source code into the src.cam SourceModes directory as follows

cp $CESM/components/cam/src/physics/simple/tj2016.F90 $CASE/SourceMods/src.cam

You can now modify the relaxation temperature profile in $CASE/SourceMods/src.cam. The relaxation temperature profile is set with the following segment of code

   
      !-----------------------------------------------------------------------
      ! Compute idealized radiative heating rates (with modified HS equilibrium temperature)
      ! mimics radiation
      !-----------------------------------------------------------------------
       do k = 1, pver
         if (etamid(k) > sigmab) then                                    ! lower atmosphere
           do i = 1, ncol
             kt = ka + (ks - ka)*cossqsq(i)*(etamid(k) - sigmab)/onemsig ! relaxation coefficent varies in the vertical
             trefc             = T_max - delta_T*sinsq(i)
             trefa             = (trefc - delta_theta*cossq(i)*log((pmid(i,k)/ps0)))*(pmid(i,k)/ps0)**cappa
             trefa             = max(t00,trefa)                          ! relaxation temperature
             dtdt_heating(i,k) = (trefa - T(i,k))*kt                     ! temperature forcing due to relaxation
             T(i,k)            = T(i,k) + dtdt_heating(i,k)*dtime        ! update T
           end do
         else
           do i=1,ncol
             trefc             = T_max - delta_T*sinsq(i)
             trefa             = (trefc - delta_theta*cossq(i)*log((pmid(i,k)/ps0)))*(pmid(i,k)/ps0)**cappa
             trefa             = max(t00,trefa)                          ! relaxation temperature
             dtdt_heating(i,k) = (trefa - T(i,k))*ka                     ! temperature forcing due to relaxation
             T(i,k)            = T(i,k) + dtdt_heating(i,k)*dtime        ! update T
           end do
         end if
       end do


Modify the relaxation temperature profile by modifying this segment of code.

If you would like to instead read in the relaxation temperature profile from a netcdf file, see the example here for the dry Held-Suarez case and adapt it for the moist Held-Suarez case.