Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 17 additions & 1 deletion bin.rams/RAMSIN.arctictest
Original file line number Diff line number Diff line change
Expand Up @@ -214,10 +214,26 @@
!-----------------------------------------------------------------------
FRQLITE = 0., ! Frequency for "lite" files
! = 0 : no lite files
NLITE_VARS=0,
NLITE_VARS=21,

LITE_VARS= 'GLAT','GLON','TOPT','PATCH_AREA', !Keep these always
'UP','VP','WP', !This would be useful for hi-frequency trajectories
'THETA','PI','RV','RTP','RCP','RRP','RDP',
'CCP','CRP','CDP',
'SWUP','SWDN','LWUP','LWDN',

! Accuracy of the lite vars if using ZFP/lossy compression
! Use 0 for lossless compression
! Using nonzero values requires compiling with -DENABLE_ZFP_COMPRESSION
! on the C compiler.

ACC_LT_VAR=
0.0, 0.0, 0.1,0.01, ! 'GLAT','GLON','TOPT','PATCH_AREA',
0.001, 0.001, 0.001, !'UP','VP','WP',
0.001,0.001,0.00001,0.00001,0.000001,0.000001,0.000001, ! 'THETA','PI','RV','RTP','RCP','RRP','RDP',
0.00001,0.00001,0.000001,0.000001,0.000001, ! 'CCP','CRP','CDP',
0.001, 0.001, 0.001,0.001, ! 'SWUP','SWDN','LWUP','LWDN',


!-----------------------------------------------------------------------
AVGTIM = 0., ! Averaging time for analysis variables
Expand Down
10 changes: 6 additions & 4 deletions include.mk
Original file line number Diff line number Diff line change
Expand Up @@ -29,8 +29,9 @@ RAMS_VERSION=6.3.04
# Typically can use "parallel" for either, but some supercomputers require
# use of the serial executable.
#############################################################################
HDF5_ROOT=
#/share/apps/hdf5-1.10.1/intel
HDF5_ROOT=#/share/apps/hdf5-1.10.1/intel
#ZFP Compression requites ZFP
HDZ_ZFP_ROOT=

#############################################################################
# Set root locations for parallel processing MPI software.
Expand Down Expand Up @@ -65,8 +66,8 @@ UTILS_INCS=-I$(MODEL)/include
#HDF5_LIBS=-L$(HDF5_ROOT)/lib -lhdf5_hl -lhdf5
#HDF5_INCS=-I$(HDF5_ROOT)/include
#HDF5_DEFS=
HDF5_LIBS= -lhdf5_hl -lhdf5
HDF5_INCS=
HDF5_LIBS= -lhdf5_hl -lhdf5 #
HDF5_INCS=-I$(HDF5_ROOT)/include #-I$(H5Z_ZFP_ROOT)/include
HDF5_DEFS=

#############################################################################
Expand Down Expand Up @@ -175,6 +176,7 @@ LIBS=-L/usr/lib/x86_64-linux-gnu -lrt -lpthread -lz -lsz
#C_COMP=gcc
C_COMP=/home/smsaleeb/software/mpich-3.3.2/bin/mpicc
C_OPTS=-O3 -DUNDERSCORE -DLITTLE -std=gnu99 -DENABLE_PARALLEL_COMPRESSION -w
#-DENABLE_ZFP_COMPRESSION
#C_OPTS=-O3 -DUNDERSCORE -DLITTLE -std=gnu99 -DRAMS_DOUBLE_PREC \
# -DENABLE_PARALLEL_COMPRESSION -w

Expand Down
16 changes: 16 additions & 0 deletions src/bc/rbnd_nonscalar.f90
Original file line number Diff line number Diff line change
Expand Up @@ -892,6 +892,9 @@ Subroutine rad_bcond (m1,m2,m3,radiate,ibcon)
do j = 1,m3
do k = 1,m1
radiate%fthrd(k,1,j) = radiate%fthrd(k,2,j)
! GRL 2024-03-22 added lw and sw heating rates
radiate%fthrdlw(k,1,j) = radiate%fthrdlw(k,2,j)
radiate%fthrdsw(k,1,j) = radiate%fthrdsw(k,2,j)
if(ilwrtyp >= 3 .or. iswrtyp >= 3) then
radiate%bext(k,1,j) = radiate%bext(k,2,j)
endif
Expand All @@ -912,6 +915,9 @@ Subroutine rad_bcond (m1,m2,m3,radiate,ibcon)
do j = 1,m3
do k = 1,m1
radiate%fthrd(k,m2,j) = radiate%fthrd(k,m2-1,j)
! GRL 2024-03-22 added lw and sw heating rates
radiate%fthrdlw(k,m2,j) = radiate%fthrdlw(k,m2-1,j)
radiate%fthrdsw(k,m2,j) = radiate%fthrdsw(k,m2-1,j)
if(ilwrtyp >= 3 .or. iswrtyp >= 3) then
radiate%bext(k,m2,j) = radiate%bext(k,m2-1,j)
endif
Expand All @@ -932,6 +938,9 @@ Subroutine rad_bcond (m1,m2,m3,radiate,ibcon)
do i = 1,m2
do k = 1,m1
radiate%fthrd(k,i,1) = radiate%fthrd(k,i,2)
! GRL 2024-03-22 added lw and sw heating rates
radiate%fthrdlw(k,i,1) = radiate%fthrdlw(k,i,2)
radiate%fthrdsw(k,i,1) = radiate%fthrdsw(k,i,2)
if(ilwrtyp >= 3 .or. iswrtyp >= 3) then
radiate%bext(k,i,1) = radiate%bext(k,i,2)
endif
Expand All @@ -952,6 +961,9 @@ Subroutine rad_bcond (m1,m2,m3,radiate,ibcon)
do i = 1,m2
do k = 1,m1
radiate%fthrd(k,i,m3) = radiate%fthrd(k,i,m3-1)
! GRL 2024-03-22 added lw and sw heating rates
radiate%fthrdlw(k,i,m3) = radiate%fthrdlw(k,i,m3-1)
radiate%fthrdsw(k,i,m3) = radiate%fthrdsw(k,i,m3-1)
if(ilwrtyp >= 3 .or. iswrtyp >= 3) then
radiate%bext(k,i,m3) = radiate%bext(k,i,m3-1)
endif
Expand Down Expand Up @@ -1047,6 +1059,7 @@ Subroutine sfcrad_bcond (m2,m3,radiate,ibcon)
radiate%rshort(1,j) = radiate%rshort(2,j)
radiate%rlong(1,j) = radiate%rlong(2,j)
radiate%rlongup(1,j) = radiate%rlongup(2,j)
radiate%rlontop(1,j) = radiate%rlontop(2,j)
radiate%albedt(1,j) = radiate%albedt(2,j)
radiate%cosz(1,j) = radiate%cosz(2,j)
radiate%aodt(1,j) = radiate%aodt(2,j)
Expand All @@ -1059,6 +1072,7 @@ Subroutine sfcrad_bcond (m2,m3,radiate,ibcon)
radiate%rshort(m2,j) = radiate%rshort(m2-1,j)
radiate%rlong(m2,j) = radiate%rlong(m2-1,j)
radiate%rlongup(m2,j) = radiate%rlongup(m2-1,j)
radiate%rlontop(m2,j) = radiate%rlontop(m2-1,j)
radiate%albedt(m2,j) = radiate%albedt(m2-1,j)
radiate%cosz(m2,j) = radiate%cosz(m2-1,j)
radiate%aodt(m2,j) = radiate%aodt(m2-1,j)
Expand All @@ -1071,6 +1085,7 @@ Subroutine sfcrad_bcond (m2,m3,radiate,ibcon)
radiate%rshort(i,1) = radiate%rshort(i,2)
radiate%rlong(i,1) = radiate%rlong(i,2)
radiate%rlongup(i,1) = radiate%rlongup(i,2)
radiate%rlontop(i,1) = radiate%rlontop(i,2)
radiate%albedt(i,1) = radiate%albedt(i,2)
radiate%cosz(i,1) = radiate%cosz(i,2)
radiate%aodt(i,1) = radiate%aodt(i,2)
Expand All @@ -1083,6 +1098,7 @@ Subroutine sfcrad_bcond (m2,m3,radiate,ibcon)
radiate%rshort(i,m3) = radiate%rshort(i,m3-1)
radiate%rlong(i,m3) = radiate%rlong(i,m3-1)
radiate%rlongup(i,m3) = radiate%rlongup(i,m3-1)
radiate%rlontop(i,m3) = radiate%rlontop(i,m3-1)
radiate%albedt(i,m3) = radiate%albedt(i,m3-1)
radiate%cosz(i,m3) = radiate%cosz(i,m3-1)
radiate%aodt(i,m3) = radiate%aodt(i,m3-1)
Expand Down
3 changes: 3 additions & 0 deletions src/bc/rbnd_trsetsns.f90
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,9 @@ Subroutine trsets_ns ()

if(ilwrtyp+iswrtyp > 0) then
CALL trsetns (mzp,mxp,myp,radiate_g(ngrid)%fthrd,1)
!GRL 2024-03-22 added lw and sw heating rates
CALL trsetns (mzp,mxp,myp,radiate_g(ngrid)%fthrdlw,1)
CALL trsetns (mzp,mxp,myp,radiate_g(ngrid)%fthrdsw,1)
endif

if(ilwrtyp >= 3 .or. iswrtyp >= 3) then
Expand Down
13 changes: 10 additions & 3 deletions src/io/anal_write.f90
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,9 @@ Subroutine anal_write (vtype)
type (hdf5_select_type) :: mem_select,file_select
integer, dimension(HDF5_MAX_DIMS) :: file_chunks
real, dimension(:,:,:,:), allocatable :: temp_var1, temp_var2
! Holding variable for ZFP accuracy. This will be 0 for all but lite files, where
! it is user set. If it is 0, that means to not run ZFP/lossy compression.
real :: zfp_accuracy

type (head_table), allocatable,save :: aw_table(:)

Expand Down Expand Up @@ -139,17 +142,21 @@ Subroutine anal_write (vtype)
iwrite=0
if(vtype == 'INST' .and. vtab_r(nv,ngr)%ianal == 1) then
iwrite=1
zfp_accuracy = 0
v_pointer => vtab_r(nv,ngr)%var_p
elseif(vtype == 'LITE' .and. vtab_r(nv,ngr)%ilite == 1) then
iwrite=1
zfp_accuracy = vtab_r(nv,ngr)%var_acc
v_pointer => vtab_r(nv,ngr)%var_p
elseif(vtype == 'MEAN' .and. vtab_r(nv,ngr)%imean == 1 .and. &
vtab_r(nv,ngr)%ianal == 1) then
iwrite=1
zfp_accuracy = 0
v_pointer => vtab_r(nv,ngr)%var_m
elseif(vtype == 'BOTH' .and. vtab_r(nv,ngr)%ilite == 1 .and. &
vtab_r(nv,ngr)%imean == 1) then
iwrite=1
zfp_accuracy = 0
v_pointer => vtab_r(nv,ngr)%var_m
endif

Expand Down Expand Up @@ -240,9 +247,9 @@ Subroutine anal_write (vtype)

CALL shdf5_set_hs_select (vtab_r(nv,ngr)%idim_type,'W',ngr &
,mem_select,file_select,file_chunks)

CALL shdf5_orec (h5_fid,iphdf5,varn &
,mem_select,file_select,file_chunks,rvara=temp_var1)
,mem_select,file_select,file_chunks,zfp_accuracy,rvara=temp_var1)
!print*,'done all ',vtype,' ',trim(varn)

deallocate(temp_var1)
Expand Down Expand Up @@ -368,7 +375,7 @@ Subroutine anal_write (vtype)
CALL shdf5_set_hs_select (idtype,'W',ngr &
,mem_select,file_select,file_chunks)
CALL shdf5_orec (h5_fid,iphdf5,varn &
,mem_select,file_select,file_chunks,rvara=temp_var2)
,mem_select,file_select,file_chunks, zfp_accuracy,rvara=temp_var2)
!print*,'done xtra ',vtype,' ',trim(varn)

endif
Expand Down
2 changes: 2 additions & 0 deletions src/io/io_params.f90
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,8 @@ Module io_params
implicit none

character(len=32) :: lite_vars(maxlite)
! this must be fixed at a 32 bit float because that is what the C library expects
real(kind=4) :: lite_var_acc(maxlite)
character(len=strl1) :: hfilin,afilepref

integer :: ipast_sfc
Expand Down
5 changes: 3 additions & 2 deletions src/io/rname.f90
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ Subroutine nvfillm (group,vr,ii,ff,cc,nv)
real :: ff
integer :: ii,nv
integer :: inrflg
integer, parameter ::nvgrid=38,nvstrt=77,nvindat=152,nvsound=13
integer, parameter ::nvgrid=38,nvstrt=78,nvindat=152,nvsound=13
integer :: igrids(nvgrid),istart(nvstrt),iindat(nvindat),isound(nvsound)
character(len=16) :: grids(nvgrid),start(nvstrt),indat(nvindat),sound(nvsound)
data igrids/nvgrid*0/,istart/nvstrt*0/,iindat/nvindat*0/,isound/nvsound*0/
Expand All @@ -48,7 +48,7 @@ Subroutine nvfillm (group,vr,ii,ff,cc,nv)
,'RODA_UPA0','RODA_HGT','RODA_ZFAC','ODA_SFC_TIL','ODA_SFC_TEL' &
,'ODA_UPA_TIL','ODA_UPA_TEL','HFILIN','IPAST_SFC','ICLOBBER' &
,'IOUTPUT','AFILEPREF','FRQSTATE','FRQST_KEEP','FRQLITE' &
,'NLITE_VARS','LITE_VARS','AVGTIM','FRQMEAN','FRQBOTH','TOPFILES' &
,'NLITE_VARS','LITE_VARS','ACC_LT_VAR','AVGTIM','FRQMEAN','FRQBOTH','TOPFILES' &
,'SFCFILES','SSTFPFX','NDVIFPFX','ITOPTFLG','ISSTFLG','IVEGTFLG' &
,'ISOILFLG','NDVIFLG','IUPDNDVI','IUPDSST','ITOPTFN' &
,'ISSTFN','IVEGTFN','ISOILFN','NDVIFN','ITOPSFLG','TOPTENH' &
Expand Down Expand Up @@ -208,6 +208,7 @@ END SUBROUTINE varseti
IF(VR.EQ.'FRQLITE') CALL varsetf (VR,FRQLITE,NV,1,FF,0.,1.E20)
IF(VR.EQ.'NLITE_VARS') CALL varseti (VR,NLITE_VARS,NV,1,II,0,MAXLITE)
IF(VR.EQ.'LITE_VARS') CALL varsetc (VR,LITE_VARS(NV),NV,MAXLITE,CC,1,32)
IF(VR.EQ.'ACC_LT_VAR') CALL varsetf (VR,LITE_VAR_ACC(NV),NV,MAXLITE,FF,0.,1.e20)
IF(VR.EQ.'AVGTIM') CALL varsetf (VR,AVGTIM,NV,1,FF,-1.E20,1.E20)
IF(VR.EQ.'FRQMEAN') CALL varsetf (VR,FRQMEAN,NV,1,FF,0.,1.E20)
IF(VR.EQ.'FRQBOTH') CALL varsetf (VR,FRQBOTH,NV,1,FF,0.,1.E20)
Expand Down
Loading