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
19 changes: 18 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,21 @@
# RAMS
[![DOI](https://zenodo.org/badge/307815774.svg)](https://zenodo.org/badge/latestdoi/307815774)

RAMS model source code. To see full documentation, go to the [van den Heever group website](https://vandenheever.atmos.colostate.edu/vdhpage/rams/rams_docs.php).
RAMS model source code. To see full documentation, go to the [van den Heever group website](https://vandenheever.atmos.colostate.edu/vdhpage/rams/rams_docs.php).

In this fork, I have added BUGSRAD radiation as option 4 for ISWRTYP and ILWRTYP. A few notes about this implementation:

o Only cloud droplets, pristine ice and snow are passed to the BUGSRAD radiation routines. This is ok for now as cloud droplets and ice crystals are the two most important hydrometeors for radiation

o Cloud droplet mass and number are both passed. Only the sum of pristine ice and snow mass is passed.

o No aerosol species are coupled to BUGSRAD radiation.

o BUGSRAD contains separate albedo values for direct and diffuse radiation. I've set these to be equal. (see radiate/driver_read.f90, alndr, alndf, alvdr, alvdf)

o BUGSRAD contains separate albedo values for shortwave and near IR. I've set these to be equal. (aln* - near IR, alv* - visible)

o BUGSRAD has its own precision definitions (e.g. dbl_kind). They're still being used and aren't interfaced with the options to compile with double or single precision in the Makefile.

I've also added RTE+RRTMGP radiation (https://agupubs.onlinelibrary.wiley.com/doi/10.1029/2019MS001621) as option 5

74 changes: 74 additions & 0 deletions bin.block/Makefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,74 @@
#Makefile
###############################################################################
# Include definitions
###############################################################################
include ../include.mk
###############################################################################
# Compiler commands
###############################################################################
INCLUDES = $(UTILS_INCS) $(PAR_INCS) $(HDF5_INCS)
F_CD1 = $(F_COMP) -c $(F_OPTS1) $(INCLUDES)
F_CD2 = $(F_COMP) -c $(F_OPTS2) $(INCLUDES)
C_CD = $(C_COMP) -c $(C_OPTS) $(INCLUDES) $(PAR_DEFS) $(HDF5_DEFS)

C_CM =$(C_CD) -D$(CMACH) $< && $(ARCH) $@ $(<F:.c=.o) && rm -f $(<F:.c=.o)
F_CM1=$(F_CD1) $< && $(ARCH) $@ $(<F:.f90=.o) && rm -f $(<F:.f90=.o)
F_CM2=$(F_CD2) $< && $(ARCH) $@ $(<F:.f90=.o) && rm -f $(<F:.f90=.o)
F_CM3=$(F_CD2) -D$(CMACH) $< && $(ARCH) $@ $(<F:.F90=.o) && rm -f $(<F:.F90=.o)

################################################################################
## File extension rules
################################################################################
$(ARC)(%.o): %.f90; $(F_CM2)

$(ARC)(%.o): %.F90; $(F_CM3)

$(ARC)(%.o): %.c; $(C_CM)

################################################################################
# Define objects
################################################################################
OBJ = $(ARC)($(MODEL)/block/hdf5_f2c.o) \
$(ARC)($(MODEL)/block/hdf5_utils.o) \
$(ARC)($(MODEL)/lib/rget.o)

###############################################################################
# Define archive and executable names
###############################################################################
BASE=mk-blkfiles
EXE=$(BASE)-$(RAMS_VERSION)
ARC=$(BASE)-$(RAMS_VERSION).a

# Define main source.
MAIN_OBJ = ./mk_main.o
MAIN = $(MODEL)/block/mk_main.f90

# Define targets.
all: $(EXE)

$(EXE): $(ARC) $(MAIN) FORCE
@echo ""
$(F_COMP) -o $(EXE) $(MAIN_OBJ) $(LOADER_OPTS) $(ARC) \
$(HDF5_LIBS) $(LIBS) $(PAR_LIBS)
rm -f *.o
@echo ""
@echo Finished building === $(EXE)
@echo ""

$(MAIN): FORCE
@echo ""
$(F_CD2) $@

$(ARC): $(OBJ)

FORCE:

check: FORCE
@echo ""
check

clean:
@echo ""
rm -f $(ARC) $(EXE) $(BASE) *.o *.mod *.f
@echo ""

7 changes: 4 additions & 3 deletions bin.dp.grib1/Makefile
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
#Makefile
#Makefile
###############################################################################
# Include definitions
# Include definitions
###############################################################################
include ../include.mk
###############################################################################
Expand Down Expand Up @@ -51,7 +51,8 @@ rams_wgrib:

$(EXE): $(ARC) $(MAIN) FORCE
@echo ""
$(F_COMP) -o $(EXE) $(MAIN_OBJ) $(LOADER_OPTS) $(ARC)
$(F_COMP) -o $(EXE) $(MAIN_OBJ) $(LOADER_OPTS) $(ARC) \
$(HDF5_LIBS) $(LIBS) $(PAR_LIBS)
rm -f *.o
@echo ""
@echo Finished building === $(EXE)
Expand Down
4 changes: 2 additions & 2 deletions bin.dp.grib1/README.txt
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,8 @@
3. Not all Grib reanalysis and forecast gridded datasets are accounted for.

You can view the degribbing code in the files such as:
src/6.2.11/dprep/dgrib1_main.f90 and
src/6.2.11/lib/griber_grb1.c
src/dprep/dgrib1_main.f90 and
src/lib/griber_grb1.c

In these routines are the specfications for adding a new dataset. Grib
names and numbers and labels can vary among datasets and each variation
Expand Down
8 changes: 5 additions & 3 deletions bin.dp.grib2/Makefile
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
#Makefile
#Makefile

###############################################################################
# Include definitions
# Include definitions
###############################################################################
include ../include.mk
###############################################################################
Expand Down Expand Up @@ -52,7 +53,8 @@ wgrib2:

$(EXE): $(ARC) $(MAIN) FORCE
@echo ""
$(F_COMP) -o $(EXE) $(MAIN_OBJ) $(LOADER_OPTS) $(ARC)
$(F_COMP) -o $(EXE) $(MAIN_OBJ) $(LOADER_OPTS) $(ARC) \
$(HDF5_LIBS) $(LIBS) $(PAR_LIBS)
rm -f *.o
@echo ""
@echo Finished building === $(EXE)
Expand Down
11 changes: 9 additions & 2 deletions bin.dp.grib2/README.txt
Original file line number Diff line number Diff line change
@@ -1,3 +1,9 @@
Before compiling, you need a precompiled executable for "wgrib2".
We have used version wgrib2 2.0.3 downloaded September 19, 2019.
You will need to search for this software online and compile for your system.
The executable name should be "wgrib2" and should be placed in this directory
for the Makefile to find.

1. Type "make" to compile after you have setup your ../include.mk file.

2. Run sample executable like "dgrib-6.2.11" to see instructions on how to
Expand All @@ -6,9 +12,10 @@
3. Not all Grib reanalysis and forecast gridded datasets are accounted for.

You can view the degribbing code in the files such as:
src/6.2.11/dprep/dgrib2_main.f90 and
src/6.2.11/lib/griber_grb2.c
src/dprep/dgrib2_main.f90 and
src/lib/griber_grb2.c

In these routines are the specfications for adding a new dataset. Grib
names and numbers and labels can vary among datasets and each variation
has to be customized as a new datatype.

59 changes: 55 additions & 4 deletions bin.rams/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -7,15 +7,22 @@ include ../include.mk
###############################################################################
# Compiler commands
###############################################################################
LIBS += -L$(NETCDF_FORTRAN_ROOT)/lib -lnetcdff
LIBS += -L$(NETCDF_C_ROOT)/lib -lnetcdf

INCLUDES = $(UTILS_INCS) $(PAR_INCS) $(HDF5_INCS)
INCLUDES += -I$(NETCDF_FORTRAN_ROOT)/include

F_CD1 = $(F_COMP) -c $(F_OPTS1) $(INCLUDES)
F_CD2 = $(F_COMP) -c $(F_OPTS2) $(INCLUDES)
F_CD3 = $(F_COMP) -c $(F_OPTS3) $(INCLUDES)
C_CD = $(C_COMP) -c $(C_OPTS) $(INCLUDES) $(PAR_DEFS) $(HDF5_DEFS)

C_CM =$(C_CD) -D$(CMACH) $< && $(ARCH) $@ $(<F:.c=.o) && rm -f $(<F:.c=.o)
F_CM1=$(F_CD1) $< && $(ARCH) $@ $(<F:.f90=.o) && rm -f $(<F:.f90=.o)
F_CM2=$(F_CD2) $< && $(ARCH) $@ $(<F:.f90=.o) && rm -f $(<F:.f90=.o)
F_CM3=$(F_CD2) -D$(CMACH) $< && $(ARCH) $@ $(<F:.F90=.o) && rm -f $(<F:.F90=.o)
F_CM4=$(F_CD3) $< && $(ARCH) $@ $(<F:.F90=.o) && rm -f $(<F:.F90=.o)

################################################################################
## File extension rules
Expand All @@ -28,24 +35,52 @@ $(ARC)(%.o): %.F90; $(F_CM3)

$(ARC)(%.o): %.c; $(C_CM)

$(ARC)($(MODEL)/radiate/rte-rrtmgp/%o): $(MODEL)/radiate/rte-rrtmgp/%F90; $(F_CM4)

################################################################################
# Define objects
################################################################################
OBJ = $(ARC)($(MODEL)/lib/an_header.o) \
OBJ1 =$(ARC)($(MODEL)/lib/an_header.o) \
$(ARC)($(MODEL)/lib/rconstants.o) \
$(ARC)($(MODEL)/memory/grid_dims.o) \
$(ARC)($(MODEL)/micro_bin/micro_prm.o) \
$(ARC)($(MODEL)/micro/micphys.o) \
$(ARC)($(MODEL)/kpp/kpp_params.o) \
$(ARC)($(MODEL)/io/io_params.o) \
$(ARC)($(MODEL)/core/ref_sounding.o) \
$(ARC)($(MODEL)/memory/var_tables.o) \
$(ARC)($(MODEL)/memory/mem_radiate.o) \
$(ARC)($(MODEL)/radiate/rte-rrtmgp/rte/mo_rte_kind.o) \
$(ARC)($(MODEL)/radiate/rte-rrtmgp/rte/mo_rte_util_array.o) \
$(ARC)($(MODEL)/radiate/rte-rrtmgp/rte/kernels/mo_rte_solver_kernels.o) \
$(ARC)($(MODEL)/radiate/rte-rrtmgp/rte/kernels/mo_optical_props_kernels.o) \
$(ARC)($(MODEL)/radiate/rte-rrtmgp/rte/kernels/mo_fluxes_broadband_kernels.o) \
$(ARC)($(MODEL)/radiate/rte-rrtmgp/rte/mo_rte_config.o) \
$(ARC)($(MODEL)/radiate/rte-rrtmgp/rte/mo_optical_props.o) \
$(ARC)($(MODEL)/radiate/rte-rrtmgp/rte/mo_source_functions.o) \
$(ARC)($(MODEL)/radiate/rte-rrtmgp/rte/mo_fluxes.o) \
$(ARC)($(MODEL)/radiate/rte-rrtmgp/rte/mo_rte_lw.o) \
$(ARC)($(MODEL)/radiate/rte-rrtmgp/rte/mo_rte_sw.o) \
$(ARC)($(MODEL)/radiate/rte-rrtmgp/rrtmgp/kernels/mo_gas_optics_kernels.o) \
$(ARC)($(MODEL)/radiate/rte-rrtmgp/rrtmgp/mo_rrtmgp_util_string.o) \
$(ARC)($(MODEL)/radiate/rte-rrtmgp/rrtmgp/mo_rrtmgp_constants.o) \
$(ARC)($(MODEL)/radiate/rte-rrtmgp/rrtmgp/mo_gas_concentrations.o) \
$(ARC)($(MODEL)/radiate/rte-rrtmgp/rrtmgp/mo_gas_optics.o) \
$(ARC)($(MODEL)/radiate/rte-rrtmgp/rrtmgp/mo_gas_optics_rrtmgp.o) \
$(ARC)($(MODEL)/radiate/rte-rrtmgp/interface/mo_simple_netcdf.o) \
$(ARC)($(MODEL)/radiate/rte-rrtmgp/extensions/cloud_optics/mo_cloud_optics.o) \
$(ARC)($(MODEL)/radiate/rte-rrtmgp/extensions/aerosol_optics/mo_aerosol_optics.o) \
$(ARC)($(MODEL)/radiate/rte-rrtmgp/interface/mo_load_coefficients.o) \
$(ARC)($(MODEL)/radiate/rte-rrtmgp/interface/mo_load_cloud_coefficients.o) \
$(ARC)($(MODEL)/radiate/rte-rrtmgp/interface/mo_load_aerosol_coefficients.o) \
$(ARC)($(MODEL)/radiate/rte-rrtmgp/extensions/mo_heating_rates.o) \
$(ARC)($(MODEL)/radiate/rte-rrtmgp/interface/rte_rrtmgp_rams.o) \
$(ARC)($(MODEL)/radiate/rte-rrtmgp/interface/rams_rrtmgp_driver.o) \
$(ARC)($(MODEL)/core/ref_sounding.o) \
$(ARC)($(MODEL)/memory/mem_basic.o) \
$(ARC)($(MODEL)/memory/mem_cuparm.o) \
$(ARC)($(MODEL)/memory/mem_leaf.o) \
$(ARC)($(MODEL)/memory/mem_sib.o) \
$(ARC)($(MODEL)/memory/mem_micro.o) \
$(ARC)($(MODEL)/memory/mem_radiate.o) \
$(ARC)($(MODEL)/memory/mem_tracer.o) \
$(ARC)($(MODEL)/memory/mem_scratch.o) \
$(ARC)($(MODEL)/memory/mem_turb.o) \
Expand Down Expand Up @@ -129,13 +164,27 @@ OBJ = $(ARC)($(MODEL)/lib/an_header.o) \
$(ARC)($(MODEL)/nesting/nest_drivers.o) \
$(ARC)($(MODEL)/nesting/nest_intrp.o) \
$(ARC)($(MODEL)/nesting/nest_feed.o) \
$(ARC)($(MODEL)/radiate/bugsrad/kinds.o) \
$(ARC)($(MODEL)/radiate/rrad3.o) \
$(ARC)($(MODEL)/radiate/rad_driv.o) \
$(ARC)($(MODEL)/radiate/rad_aero.o) \
$(ARC)($(MODEL)/radiate/rad_mclat.o) \
$(ARC)($(MODEL)/radiate/rad_ccmp.o) \
$(ARC)($(MODEL)/radiate/rad_stable.o) \
$(ARC)($(MODEL)/radiate/rrad2.o) \
$(ARC)($(MODEL)/radiate/bugsrad/bugsrad_physconst.o) \
$(ARC)($(MODEL)/radiate/bugsrad/bugsrad_planck.o) \
$(ARC)($(MODEL)/radiate/bugsrad/cloud_correlate.o) \
$(ARC)($(MODEL)/radiate/bugsrad/continuum.o) \
$(ARC)($(MODEL)/radiate/bugsrad/gases_ckd.o) \
$(ARC)($(MODEL)/radiate/bugsrad/newexp.o) \
$(ARC)($(MODEL)/radiate/bugsrad/rayle.o) \
$(ARC)($(MODEL)/radiate/bugsrad/two_rt_lw_ocastrndm.o) \
$(ARC)($(MODEL)/radiate/bugsrad/two_rt_sw_ocastrndm.o) \
$(ARC)($(MODEL)/radiate/bugsrad/bandsolve.o) \
$(ARC)($(MODEL)/radiate/bugsrad/bugs_rad.o) \
$(ARC)($(MODEL)/radiate/bugsrad/bugs_files.o) \
$(ARC)($(MODEL)/radiate/bugsrad/driver_read.o) \
$(ARC)($(MODEL)/init/data_init.o) \
$(ARC)($(MODEL)/micro/mic_aero.o) \
$(ARC)($(MODEL)/micro/mic_chknan.o) \
Expand Down Expand Up @@ -233,7 +282,8 @@ $(MAIN): FORCE
@echo ""
$(F_CD2) $@

$(ARC): $(OBJ)
$(ARC): $(OBJ1)


FORCE:

Expand All @@ -245,3 +295,4 @@ clean:
@echo ""
rm -f $(ARC) $(EXE) $(BASE) *.o *.mod *.f
@echo ""

Loading