Skip to content
Merged
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
Original file line number Diff line number Diff line change
Expand Up @@ -20,4 +20,4 @@
| cswat | 4.218E3 | \( J \cdot kg^{-1} \cdot K^{-1} \) | Specific heat for water at \( 0^{\circ}C \) |
| density_liq | 1000.0 | \( kg \cdot m^{-3} \) | Density of liquid water |
| density_ice | 921.0 | \( kg \cdot m^{-3} \) | Density of ice |
| c_molar_mass | 1.201E-5 | \( \mu g / mol \) | Molar mass of carbon |
| c_molar_mass | 1.201E-5 | \( g / \mu mol \) | Molar mass of carbon |
25 changes: 23 additions & 2 deletions src/offline/cable_define_types.F90
Original file line number Diff line number Diff line change
Expand Up @@ -261,6 +261,7 @@ MODULE cable_def_types_mod
qssrf, & ! sublimation
snage, & ! snow age
snowd, & ! snow depth (liquid water)
totsdepth, & ! total snow depth (m)
smelt, & ! snow melt
ssdnn, & ! average snow density
tss, & ! surface temperature (weighted soil, snow)
Expand Down Expand Up @@ -450,12 +451,14 @@ MODULE cable_def_types_mod
frpw, & ! plant respiration (woody component) (g C m-2 s-1)
frpr, & ! plant respiration (root component) (g C m-2 s-1)
frs, & ! soil respiration (g C m-2 s-1)
fra, & ! autotrophic respiration (g C m-2 s-1)
fnee, & ! net carbon flux (g C m-2 s-1)
frday, & ! daytime leaf resp
fnv, & ! net rad. avail. to canopy (W/m2)
fev, & ! latent hf from canopy (W/m2)
epot, & ! total potential evaporation
fnpp, & ! npp flux
fnpp, & ! npp flux (g C m-2 s-1)
fgpp, & ! gpp flux (g C m-2 s-1)
fevw_pot,& ! potential lat heat from canopy
gswx_T, & ! ! stom cond for water
cdtq, & ! drag coefficient for momentum
Expand All @@ -471,6 +474,7 @@ MODULE cable_def_types_mod
ghflux, & ! ground heat flux (W/m2) ???
precis, & ! throughfall to soil, after snow (mm)
qscrn, & ! specific humudity at screen height (g/g)
qmom, & ! surface momentum flux (kg/m/s2)
rnet, & ! net radiation absorbed by surface (W/m2)
rniso, & !isothermal net radiation absorbed by surface (W/m2)
segg, & ! latent heatfl from soil mm
Expand Down Expand Up @@ -549,8 +553,11 @@ MODULE cable_def_types_mod
latitude,& ! latitude
lwabv, & ! long wave absorbed by vegetation
qssabs, & ! absorbed short-wave radiation for soil
swnet, & ! net shortwave radiation absorbed by surface (W/m^2)
lwnet, & ! net longwave radiation absorbed by surface (W/m^2)
rnet, & ! net radiation absorbed by surface (W/m^2)
transd, & ! frac SW diffuse transmitted through canopy
trad, & ! radiative temperature (soil and veg)
trad, & ! radiative temperature (soil and veg) (K)
otrad ! radiative temperature on previous timestep (ACCESS)

REAL, DIMENSION(:,:), POINTER :: &
Expand Down Expand Up @@ -913,6 +920,7 @@ SUBROUTINE alloc_soil_snow_type(var, mp)
ALLOCATE( var% smass(mp,msn) )
ALLOCATE( var% snage(mp) )
ALLOCATE( var% snowd(mp) )
ALLOCATE( var% totsdepth(mp) )
ALLOCATE( var% smelt(mp) )
ALLOCATE( var% ssdn(mp,msn) )
ALLOCATE( var% ssdnn(mp) )
Expand Down Expand Up @@ -1118,6 +1126,7 @@ SUBROUTINE alloc_canopy_type(var, mp)
ALLOCATE( var% frpw(mp) )
ALLOCATE( var% frpr(mp) )
ALLOCATE( var% frs(mp) )
ALLOCATE( var% fra(mp) )
ALLOCATE( var% fnee(mp) )
ALLOCATE( var% frday(mp) )
ALLOCATE( var% fnv(mp) )
Expand All @@ -1131,6 +1140,7 @@ SUBROUTINE alloc_canopy_type(var, mp)
ALLOCATE( var% ghflux(mp) )
ALLOCATE( var% precis(mp) )
ALLOCATE( var% qscrn(mp) )
ALLOCATE( var% qmom(mp) )
ALLOCATE( var% rnet(mp) )
ALLOCATE( var% rniso(mp) )
ALLOCATE( var% segg(mp) )
Expand All @@ -1150,6 +1160,7 @@ SUBROUTINE alloc_canopy_type(var, mp)
ALLOCATE( var% ga_cor(mp) ) !REV_CORR variable
ALLOCATE( var% epot(mp) )
ALLOCATE( var% fnpp(mp) )
ALLOCATE( var% fgpp(mp) )
ALLOCATE( var% fevw_pot(mp) )
ALLOCATE( var% gswx_T(mp) )
ALLOCATE( var% cdtq(mp) )
Expand Down Expand Up @@ -1199,6 +1210,9 @@ SUBROUTINE alloc_radiation_type(var, mp)
ALLOCATE( var% lwabv(mp) )
ALLOCATE( var% qcan(mp,mf,nrb) )
ALLOCATE( var% qssabs(mp) )
ALLOCATE( var% swnet(mp) )
ALLOCATE( var% lwnet(mp) )
ALLOCATE( var% rnet(mp) )
ALLOCATE( var% rhocdf(mp,nrb) )
ALLOCATE( var% rniso(mp,mf) )
ALLOCATE( var% scalex(mp,mf) )
Expand Down Expand Up @@ -1559,6 +1573,7 @@ SUBROUTINE dealloc_soil_snow_type(var)
DEALLOCATE( var% smass )
DEALLOCATE( var% snage )
DEALLOCATE( var% snowd )
DEALLOCATE( var% totsdepth )
DEALLOCATE( var% smelt )
DEALLOCATE( var% ssdn )
DEALLOCATE( var% ssdnn )
Expand Down Expand Up @@ -1750,6 +1765,7 @@ SUBROUTINE dealloc_canopy_type(var)
DEALLOCATE( var% frpw )
DEALLOCATE( var% frpr )
DEALLOCATE( var% frs )
DEALLOCATE( var% fra )
DEALLOCATE( var% fnee )
DEALLOCATE( var% frday )
DEALLOCATE( var% fnv )
Expand All @@ -1763,6 +1779,7 @@ SUBROUTINE dealloc_canopy_type(var)
DEALLOCATE( var% ghflux )
DEALLOCATE( var% precis )
DEALLOCATE( var% qscrn )
DEALLOCATE( var% qmom )
DEALLOCATE( var% rnet )
DEALLOCATE( var% rniso )
DEALLOCATE( var% segg )
Expand All @@ -1782,6 +1799,7 @@ SUBROUTINE dealloc_canopy_type(var)
DEALLOCATE( var% ga_cor ) !REV_CORR variable
DEALLOCATE( var% epot )
DEALLOCATE( var% fnpp )
DEALLOCATE( var% fgpp )
DEALLOCATE( var% fevw_pot )
DEALLOCATE( var% gswx_T )
DEALLOCATE( var% cdtq )
Expand Down Expand Up @@ -1822,6 +1840,9 @@ SUBROUTINE dealloc_radiation_type(var)
DEALLOCATE( var% lwabv )
DEALLOCATE( var% qcan )
DEALLOCATE( var% qssabs )
DEALLOCATE( var% swnet )
DEALLOCATE( var% lwnet )
DEALLOCATE( var% rnet )
DEALLOCATE( var% rhocdf )
DEALLOCATE( var% rniso )
DEALLOCATE( var% scalex )
Expand Down
8 changes: 4 additions & 4 deletions src/offline/cable_mpicommon.F90
Original file line number Diff line number Diff line change
Expand Up @@ -29,15 +29,15 @@ MODULE cable_mpicommon

! base number of input fields: must correspond to CALLS to
! MPI_address (field ) in *_mpimaster/ *_mpiworker
INTEGER, PARAMETER :: nparam = 340
INTEGER, PARAMETER :: nparam = 347

! MPI: extra params sent only if nsoilparmnew is true
INTEGER, PARAMETER :: nsoilnew = 1

! MPI: number of casa parameters sent to workers as
! start up parameters
! MPI: added casapool fields ratioNCsoilnew, ratioNCsoilmin and ratioNCsoilmax
INTEGER, PARAMETER :: ncasaparam = 213 ! YPW to account for 3 aditional woodproduct pools
INTEGER, PARAMETER :: ncasaparam = 219
! MPI: base number of casa_init parameters sent to the workers
INTEGER, PARAMETER :: ncinit = 18

Expand Down Expand Up @@ -94,12 +94,12 @@ MODULE cable_mpicommon
! vh sli nvec + 6 162 -> 168
! INTEGER, PARAMETER :: nvec = 172! 168
! INH REV_CORR +3 (SSEB +2 will be needed)
INTEGER, PARAMETER :: nvec = 175
INTEGER, PARAMETER :: nvec = 183

! MPI: number of final casa result matrices and vectors to receive
! by the master for casa_poolout and casa_fluxout
INTEGER, PARAMETER :: ncasa_mat = 37 ! add three more wood product variables
INTEGER, PARAMETER :: ncasa_vec = 66
INTEGER, PARAMETER :: ncasa_vec = 72
! MPI: number of fields included in restart_t type for data
! that is returned only for creating a restart file at the end of the run
! MPI: gol124: canopy%rwater removed when Bernard ported to CABLE_r491
Expand Down
111 changes: 107 additions & 4 deletions src/offline/cable_mpimaster.F90
Original file line number Diff line number Diff line change
Expand Up @@ -1824,6 +1824,10 @@ SUBROUTINE master_cable_params (comm,met,air,ssnow,veg,bgc,soil,canopy,&
CALL MPI_Get_address (ssnow%snowd(off), displs(bidx), ierr)
blen(bidx) = r1len

bidx = bidx + 1
CALL MPI_Get_address (ssnow%totsdepth(off), displs(bidx), ierr)
blen(bidx) = r1len

bidx = bidx + 1
CALL MPI_Get_address (ssnow%smelt(off), displs(bidx), ierr)
blen(bidx) = r1len
Expand Down Expand Up @@ -2372,6 +2376,10 @@ SUBROUTINE master_cable_params (comm,met,air,ssnow,veg,bgc,soil,canopy,&
CALL MPI_Get_address (canopy%frs(off), displs(bidx), ierr)
blen(bidx) = r1len

bidx = bidx + 1
CALL MPI_Get_address (canopy%fra(off), displs(bidx), ierr)
blen(bidx) = r1len

bidx = bidx + 1
CALL MPI_Get_address (canopy%fnee(off), displs(bidx), ierr)
blen(bidx) = r1len
Expand Down Expand Up @@ -2470,6 +2478,10 @@ SUBROUTINE master_cable_params (comm,met,air,ssnow,veg,bgc,soil,canopy,&
CALL MPI_Get_address (canopy%qscrn(off), displs(bidx), ierr)
blen(bidx) = r1len

bidx = bidx + 1
CALL MPI_Get_address (canopy%qmom(off), displs(bidx), ierr)
blen(bidx) = r1len

bidx = bidx + 1
CALL MPI_Get_address (canopy%rnet(off), displs(bidx), ierr)
blen(bidx) = r1len
Expand Down Expand Up @@ -2533,6 +2545,10 @@ SUBROUTINE master_cable_params (comm,met,air,ssnow,veg,bgc,soil,canopy,&
CALL MPI_Get_address (canopy%fnpp(off), displs(bidx), ierr)
blen(bidx) = r1len

bidx = bidx + 1
CALL MPI_Get_address (canopy%fgpp(off), displs(bidx), ierr)
blen(bidx) = r1len

bidx = bidx + 1
CALL MPI_Get_address (canopy%fevw_pot(off), displs(bidx), ierr)
blen(bidx) = r1len
Expand Down Expand Up @@ -2710,6 +2726,18 @@ SUBROUTINE master_cable_params (comm,met,air,ssnow,veg,bgc,soil,canopy,&
CALL MPI_Get_address (rad%qssabs(off), displs(bidx), ierr)
blen(bidx) = r1len

bidx = bidx + 1
CALL MPI_Get_address (rad%swnet(off), displs(bidx), ierr)
blen(bidx) = r1len

bidx = bidx + 1
CALL MPI_Get_address (rad%lwnet(off), displs(bidx), ierr)
blen(bidx) = r1len

bidx = bidx + 1
CALL MPI_Get_address (rad%rnet(off), displs(bidx), ierr)
blen(bidx) = r1len

bidx = bidx + 1
CALL MPI_Get_address (rad%rhocdf(off,1), displs(bidx), ierr)
CALL MPI_Type_create_hvector (nrb, r1len, r1stride, MPI_BYTE, &
Expand Down Expand Up @@ -3530,7 +3558,21 @@ SUBROUTINE master_casa_params (comm,casabiome,casapool,casaflux,casamet,&
CALL MPI_Get_address (casapool%dClabiledt(off), displs(bidx), ierr)
blen(bidx) = r2len

bidx = bidx + 1
CALL MPI_Get_address (casapool%dCdt(off), displs(bidx), ierr)
blen(bidx) = r2len

bidx = bidx + 1
CALL MPI_Get_address (casapool%Cplanttot(off), displs(bidx), ierr)
blen(bidx) = r2len

bidx = bidx + 1
CALL MPI_Get_address (casapool%Clittertot(off), displs(bidx), ierr)
blen(bidx) = r2len

bidx = bidx + 1
CALL MPI_Get_address (casapool%Csoiltot(off), displs(bidx), ierr)
blen(bidx) = r2len

bidx = bidx + 1
CALL MPI_Get_address (casapool%Cplant(off,1), displs(bidx), ierr)
Expand Down Expand Up @@ -3803,6 +3845,10 @@ SUBROUTINE master_casa_params (comm,casabiome,casapool,casaflux,casamet,&
CALL MPI_Get_address (casaflux%Cnpp(off), displs(bidx), ierr)
blen(bidx) = r2len

bidx = bidx + 1
CALL MPI_Get_address (casaflux%Cnbp(off), displs(bidx), ierr)
blen(bidx) = r2len

bidx = bidx + 1
CALL MPI_Get_address (casaflux%Crp(off), displs(bidx), ierr)
blen(bidx) = r2len
Expand Down Expand Up @@ -3990,6 +4036,10 @@ SUBROUTINE master_casa_params (comm,casabiome,casapool,casaflux,casamet,&
CALL MPI_Get_address (casaflux%frac_sapwood(off), displs(bidx), ierr)
blen(bidx) = r2len

bidx = bidx + 1
CALL MPI_Get_address (casaflux%Cplant_turnover_tot(off), displs(bidx), ierr)
blen(bidx) = r2len

bidx = bidx + 1
CALL MPI_Get_address (casaflux%sapwood_area(off), displs(bidx), ierr)
blen(bidx) = r2len
Expand Down Expand Up @@ -5219,6 +5269,10 @@ SUBROUTINE master_outtypes (comm,met,canopy,ssnow,rad,bal,air,soil,veg)
blen(vidx) = cnt * extr1
vidx = vidx + 1
! REAL(r_1)
CALL MPI_Get_address (canopy%fra(off), vaddr(vidx), ierr)
blen(vidx) = cnt * extr1
vidx = vidx + 1
! REAL(r_1)
CALL MPI_Get_address (canopy%fnee(off), vaddr(vidx), ierr) ! 32
blen(vidx) = cnt * extr1
vidx = vidx + 1
Expand Down Expand Up @@ -5301,6 +5355,10 @@ SUBROUTINE master_outtypes (comm,met,canopy,ssnow,rad,bal,air,soil,veg)
blen(vidx) = cnt * extr1
vidx = vidx + 1
! REAL(r_1)
CALL MPI_Get_address (canopy%fgpp(off), vaddr(vidx), ierr) ! 44
blen(vidx) = cnt * extr1
vidx = vidx + 1
! REAL(r_1)
CALL MPI_Get_address (canopy%fevw_pot(off), vaddr(vidx), ierr) ! 44
blen(vidx) = cnt * extr1
vidx = vidx + 1
Expand Down Expand Up @@ -5338,6 +5396,10 @@ SUBROUTINE master_outtypes (comm,met,canopy,ssnow,rad,bal,air,soil,veg)
blen(vidx) = cnt * extr1
vidx = vidx + 1
! REAL(r_1)
CALL MPI_Get_address (canopy%qmom(off), vaddr(vidx), ierr) ! 48
blen(vidx) = cnt * extr1
vidx = vidx + 1
! REAL(r_1)
CALL MPI_Get_address (canopy%rnet(off), vaddr(vidx), ierr) ! 49
blen(vidx) = cnt * extr1
vidx = vidx + 1
Expand Down Expand Up @@ -5504,6 +5566,10 @@ SUBROUTINE master_outtypes (comm,met,canopy,ssnow,rad,bal,air,soil,veg)
blen(vidx) = cnt * extr1
vidx = vidx + 1
! REAL(r_1)
CALL MPI_Get_address (ssnow%totsdepth(off), vaddr(vidx), ierr)
blen(vidx) = cnt * extr1
vidx = vidx + 1
! REAL(r_1)
CALL MPI_Get_address (ssnow%smelt(off), vaddr(vidx), ierr) ! 76
blen(vidx) = cnt * extr1
! MPI: 2D vars moved above
Expand Down Expand Up @@ -5612,10 +5678,18 @@ SUBROUTINE master_outtypes (comm,met,canopy,ssnow,rad,bal,air,soil,veg)
! REAL(r_1)
CALL MPI_Get_address (rad%qssabs(off), vaddr(vidx), ierr) !99
blen(vidx) = cnt * extr1
! MPI: 2D vars moved above
! rhocdf
! rniso
! scalex
vidx = vidx + 1
! REAL(r_1)
CALL MPI_Get_address (rad%swnet(off), vaddr(vidx), ierr)
blen(vidx) = cnt * extr1
vidx = vidx + 1
! REAL(r_1)
CALL MPI_Get_address (rad%lwnet(off), vaddr(vidx), ierr)
blen(vidx) = cnt * extr1
vidx = vidx + 1
! REAL(r_1)
CALL MPI_Get_address (rad%rnet(off), vaddr(vidx), ierr)
blen(vidx) = cnt * extr1
vidx = vidx + 1
! REAL(r_1)
CALL MPI_Get_address (rad%transd(off), vaddr(vidx), ierr) ! 100
Expand All @@ -5630,6 +5704,11 @@ SUBROUTINE master_outtypes (comm,met,canopy,ssnow,rad,bal,air,soil,veg)
CALL MPI_Get_address (rad%transb(off), vaddr(vidx), ierr) ! 101
blen(vidx) = cnt * extr1

vidx = vidx + 1
! REAL(r_1)
CALL MPI_Get_address (rad%albedo_T(off), vaddr(vidx), ierr)
blen(vidx) = cnt * extr1

! MPI: 2D vars moved above
! reffdf
! reffbm
Expand Down Expand Up @@ -6418,6 +6497,22 @@ SUBROUTINE master_casa_types (comm, casapool, casaflux, &
CALL MPI_Get_address (casapool%clabile(off), displs(bidx), ierr)
blocks(bidx) = r2len

bidx = bidx + 1
CALL MPI_Get_address (casapool%dCdt(off), displs(bidx), ierr)
blocks(bidx) = r2len

bidx = bidx + 1
CALL MPI_Get_address (casapool%Cplanttot(off), displs(bidx), ierr)
blocks(bidx) = r2len

bidx = bidx + 1
CALL MPI_Get_address (casapool%Clittertot(off), displs(bidx), ierr)
blocks(bidx) = r2len

bidx = bidx + 1
CALL MPI_Get_address (casapool%Csoiltot(off), displs(bidx), ierr)
blocks(bidx) = r2len

bidx = bidx + 1
CALL MPI_Get_address (casapool%Ctot(off), displs(bidx), ierr)
blocks(bidx) = r2len
Expand Down Expand Up @@ -6552,6 +6647,10 @@ SUBROUTINE master_casa_types (comm, casapool, casaflux, &
CALL MPI_Get_address (casaflux%Cnpp(off), displs(bidx), ierr)
blocks(bidx) = r2len

bidx = bidx + 1
CALL MPI_Get_address (casaflux%Cnbp(off), displs(bidx), ierr)
blocks(bidx) = r2len

bidx = bidx + 1
CALL MPI_Get_address (casaflux%Crp(off), displs(bidx), ierr)
blocks(bidx) = r2len
Expand Down Expand Up @@ -6625,6 +6724,10 @@ SUBROUTINE master_casa_types (comm, casapool, casaflux, &
CALL MPI_Get_address (casaflux%frac_sapwood(off), displs(bidx), ierr)
blocks(bidx) = r2len

bidx = bidx + 1
CALL MPI_Get_address (casaflux%Cplant_turnover_tot(off), displs(bidx), ierr)
blocks(bidx) = r2len

bidx = bidx + 1
CALL MPI_Get_address (casaflux%sapwood_area(off), displs(bidx), ierr)
blocks(bidx) = r2len
Expand Down
Loading