module mod_necessary_ecovars use mod_xc implicit none !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! ! * * * I M P O R T A N T * * * ! ! The variables in this module must be defined for ANY biochemical model coupled to HYCOM, ! i.e., same names, and with nbio set to the correct number of compartments in your model ! and eco_tag set to a 5 character tag for your model. ! ! Then, in mxkpp, tsadvc, regrid_tracer, read_write_restart_bio, and hycom ! (+ your specific ecosystem routines), ! make a use statement to the correct version of this module... ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! #ifdef EVA85 integer, PARAMETER :: nbio=3 ! number of biochemical compartments character(len=5) :: eco_tag='EVA85' ! tag for the current ecomodel #endif /* EVA85 */ #ifdef FDM02 integer, PARAMETER :: nbio=11 ! number of biochemical compartments character(len=5) :: eco_tag='FDM02' ! tag for the current ecomodel #endif /* FDM02 */ #ifdef SCH02 integer, PARAMETER :: nbio=15 ! number of biochemical compartments character(len=5) :: eco_tag='SCH02' ! tag for the current ecomodel #endif /* SCH02 */ #if defined (ECOSM) integer, PARAMETER :: nsedx=3 ! number of sediment compartments #if defined (ECOCCO) integer, PARAMETER :: nsed=nsedx+1 ! number of sediment compartments #else integer, PARAMETER :: nsed=nsedx ! number of sediment compartments #endif /* ECOCCO */ integer, PARAMETER :: nbiox=17 ! number of biochemical compartments integer, PARAMETER :: ndbiox=6 ! 3D diagnostics from biology integer, PARAMETER :: ndbiox_2d=1 ! 2D diagnostics from biology character(len=5) :: eco_tag='ECOSM' ! tag for the current ecomodel integer, PARAMETER :: ifla=1,idia=2,imicro=3,imeso=4,idet = 5, inh4= 6, & idom =7,init=8,ipho=9,isil =10,ioxy =11, iopa=12, & ibg=13,ifish=14,ichlf=15,ichld=16,ichlb=17 !field: bio integer, PARAMETER ::ised1=1,ised2=2,ised3=3 !field: bot_layer integer, PARAMETER ::idiap=1,iflap=2, inpp=3,ispp=4, & izsp=5,izlp=6 !field: bio_diagn integer, PARAMETER ::istress=1,iatc=2 !field: 2D bio_diagn #if defined (ECOCCO) integer, PARAMETER :: nbio=nbiox+5 ! number of biochemical compartments+DIC+ALK+cocco+caco3+chl_cocco integer, PARAMETER :: ndbio=ndbiox+3 ! diagnostics from biology+ carbon diagnostics integer, PARAMETER :: ndbio_2d=ndbiox_2d+1 ! 2d diagnostics from biology integer, PARAMETER :: idic=nbiox+1,ialk=nbiox+2 !field: bio integer, PARAMETER :: ipco=ndbiox+1,iph=ndbiox+2,iomc=ndbiox+3 !field: bio_diagn integer, PARAMETER :: icocc=nbiox+3,icaco3=nbiox+4 !field: bio integer, PARAMETER :: ichlc=nbiox+5 !field: bio integer, PARAMETER :: ised4=4 !CaCo3 sedminet group - Field: bot_layer #elif defined (ECO2) integer, PARAMETER :: nbio=nbiox+2 ! number of biochemical compartments+DIC+ALK integer, PARAMETER :: ndbio=ndbiox+2 ! diagnostics from biology+ carbon diagnostics integer, PARAMETER :: ndbio_2d=ndbiox_2d+1 ! 2d diagnostics from biology integer, PARAMETER :: idic=nbiox+1,ialk=nbiox+2 !field: bio integer, PARAMETER :: ipco=ndbiox+1,iph=ndbiox+2 !field: bio_diagn #else integer, PARAMETER :: nbio=nbiox ! number of biochemical compartments+DIC+ALK integer, PARAMETER :: ndbio=ndbiox ! diagnostics from biology+ carbon diagnostics integer, PARAMETER :: ndbio_2d=ndbiox_2d ! 2d diagnostics from biology #endif #endif #if defined (NOR05) integer, PARAMETER :: ndbio=9 ! diagnostics from biology #if defined (ZOOPL) integer, PARAMETER :: nbio=11 ! number of biochemical compartments #elif defined (DETPHO) integer, PARAMETER :: nbio=9 ! number of biochemical compartments #else integer, PARAMETER :: nbio=8 ! number of biochemical compartments #endif /* DETPHO-ZOOPL */ character(len=5) :: eco_tag='NOR05' ! tag for the current ecomodel integer, PARAMETER :: init= 1, ipho = 2, isil = 3, idet = 4, isis= 5, & ifla= 6, idia = 7, ioxy = 8, ised = 12, iyel=13, & idetp=9, imeso=10, imicro=11, icha=14; !AS15062010: !The mortality cc(3) maqybe a bit high when ZOOPL is not defined ! CC(1) : FRACTION OF PHOSPHATE AND NITRATE IN A CELL ! CC(2) : FRACTION OF SILICATE AND NITRATE IN A CELL ! CC(3) : DEATH RATE ! CC(4) : RATE OF DECOMPOSITION OF DETRITUS #if defined (ZOOPL) real, PARAMETER :: CC(1:4)=(/0.138,1.15,4.0E-7,1.52E-7/) #else real, PARAMETER :: cc(1:4)=(/0.138,1.15,1.6E-6,1.52E-7/) #endif /* ZOOPL */ #endif /* NOR05 */ !previously defined in blkdat_eco integer, PARAMETER :: sinkfl=1 integer, PARAMETER :: rivflg=1 !if 1 add river utrients integer, PARAMETER :: sedflg=1 !!! just for debugging integer, PARAMETER :: susp_i=104 integer, PARAMETER :: susp_j=6 integer, PARAMETER :: susp_k=14 integer, PARAMETER :: susp_var=idia ! time step-used for the biochem. sources and sinks: = baclin*nphys_sou: real :: biodt_sou real pp_m2 ! volume of box-area for primp comp. #if defined (NOR05) real :: bot_layer(1-nbdy:idm+nbdy,1-nbdy:jdm+nbdy,2,nbio ) ! Sediment layer real :: grosspp(1-nbdy:idm+nbdy,1-nbdy:jdm+nbdy,kdm) ! gross primary production real :: netpp(1-nbdy:idm+nbdy,1-nbdy:jdm+nbdy,kdm) ! net primary production #endif /* NOR05 */ #if defined (ECOSM) real :: bot_layer(1-nbdy:idm+nbdy,1-nbdy:jdm+nbdy,2,nsed ) ! Sediment layer real :: bio_diagn2d(1-nbdy:idm+nbdy,1-nbdy:jdm+nbdy,ndbio_2d) ! 2D diagnostic biochemical compartments #if defined (ECO2) real, dimension (1-nbdy:idm+nbdy,1-nbdy:jdm+nbdy,kdm) :: codepth real :: carba, bicarb,carb,henry,om_cal,om_arg,TCO2,tcf real TT,SS,DIC,dens,dcf !AS2016: annual cycle fitted to station: icealand, stationM and azores: real seasco(12) data seasco/1.8552,2.7411,3.7847,4.6522,4.2706,1.1206,-4.3468,-8.6286,-7.9663,-3.7896,1.8954,3.0054/ integer ical,iyco2 real, dimension (64) :: pCO2vec real, dimension (1-nbdy:idm+nbdy,1-nbdy:jdm+nbdy) :: pCO2a_2d integer icarb common /carbmod/ icarb,iyco2,pCO2vec, pCO2a_2d #endif /* ECO2 */ #endif /* ECOSM */ real :: bio_diagn(1-nbdy:idm+nbdy,1-nbdy:jdm+nbdy,kdm,ndbio) ! diagnostic biochemical compartments real :: bio(1-nbdy:idm+nbdy,1-nbdy:jdm+nbdy,kdm,2,nbio) ! prognostic biochemical compartments real :: rad(1-nbdy:idm+nbdy,1-nbdy:jdm+nbdy,kdm) ! biochemical compartments real :: rivnit(1-nbdy:idm+nbdy,1-nbdy:jdm+nbdy) ! river nitrogen real :: rivpho(1-nbdy:idm+nbdy,1-nbdy:jdm+nbdy) ! river phosphate real :: rivsil(1-nbdy:idm+nbdy,1-nbdy:jdm+nbdy) ! river silicate real :: riv(1-nbdy:idm+nbdy,1-nbdy:jdm+nbdy) ! river load real :: wvel(1-nbdy:idm+nbdy,1-nbdy:jdm+nbdy,kdm) ! veritcal velocity ! logical pp_area(1-nbdy:idm+nbdy,1-nbdy:jdm+nbdy) ! Area for primp end module mod_necessary_ecovars