subroutine defbparm (ncid,vartyp) c c======================================================================= c === c This routine defines the biological parameters in the output === c netCDF file. This particular version does so for the === c Dusenberry model. === c === c ------ === c Input: === c ------ === c === c NCID Identifier for output netCDF file. (integer) === c VARTYP NetCDF code for real variables. (integer) === c === c======================================================================= c c----------------------------------------------------------------------- c Define global data. c----------------------------------------------------------------------- c #include #include #include #include #include #include c c----------------------------------------------------------------------- c Define local data. c----------------------------------------------------------------------- c integer ncid,sbgn,send,slen,vartyp character*256 wkstr c c======================================================================= c Begin executable code. c======================================================================= c c----------------------------------------------------------------------- c Define light parameters. c----------------------------------------------------------------------- c if (ipmod.ne.ipmbid) then varid = ncvdef (ncid,'attphy',vartyp,0,0,rcode) wkstr = 'phytoplankton light attenuation scale' call length (wkstr,slen,sbgn,send) call ncaptc (ncid,varid,'long_name',ncchar,slen, & wkstr(sbgn:send),rcode) wkstr = 'liter micromole-1 meter-1' call length (wkstr,slen,sbgn,send) call ncaptc (ncid,varid,'units',ncchar,slen, & wkstr(sbgn:send),rcode) endif c varid = ncvdef (ncid,'parfrac',vartyp,0,0,rcode) wkstr = 'fraction of shortwave radiation that is '// & 'photosynthetically active' call length (wkstr,slen,sbgn,send) call ncaptc (ncid,varid,'long_name',ncchar,slen, & wkstr(sbgn:send),rcode) c c----------------------------------------------------------------------- c Define photosynthesis parameters. c----------------------------------------------------------------------- c varid = ncvdef (ncid,'photorm',vartyp,0,0,rcode) wkstr = 'maximum photosynthetic rate' call length (wkstr,slen,sbgn,send) call ncaptc (ncid,varid,'long_name',ncchar,slen, & wkstr(sbgn:send),rcode) wkstr = 'milligramCarbon milligramChlorophyll-1 second-1' call length (wkstr,slen,sbgn,send) call ncaptc (ncid,varid,'units',ncchar,slen, & wkstr(sbgn:send),rcode) c if (ipmod.ne.ipmbid) then varid = ncvdef (ncid,'photor0',vartyp,0,0,rcode) wkstr = 'initial slope of photosynthesis response to light' call length (wkstr,slen,sbgn,send) call ncaptc (ncid,varid,'long_name',ncchar,slen, & wkstr(sbgn:send),rcode) wkstr = 'milligramCarbon meter2 milligramChlorophyll-1 '// & 'micromolePhotons-1' call length (wkstr,slen,sbgn,send) call ncaptc (ncid,varid,'units',ncchar,slen, & wkstr(sbgn:send),rcode) endif c if (ipmod.eq.ipmexp) then varid = ncvdef (ncid,'photoinh',vartyp,0,0,rcode) wkstr = 'photoinhibition parameter' call length (wkstr,slen,sbgn,send) call ncaptc (ncid,varid,'long_name',ncchar,slen, & wkstr(sbgn:send),rcode) wkstr = 'milligramCarbon meter2 milligramChlorophyll-1 '// & 'micromolePhotons-1' call length (wkstr,slen,sbgn,send) call ncaptc (ncid,varid,'units',ncchar,slen, & wkstr(sbgn:send),rcode) endif c if (ipmod.eq.ipmbid) then varid = ncvdef (ncid,'phim',vartyp,0,0,rcode) wkstr = 'maximum quantum yield' call length (wkstr,slen,sbgn,send) call ncaptc (ncid,varid,'long_name',ncchar,slen, & wkstr(sbgn:send),rcode) wkstr = 'moleCarbon molePhotons-1' call length (wkstr,slen,sbgn,send) call ncaptc (ncid,varid,'units',ncchar,slen, & wkstr(sbgn:send),rcode) endif c c----------------------------------------------------------------------- c Define nutrient uptake parameters. c----------------------------------------------------------------------- c varid = ncvdef (ncid,'hsno3',vartyp,0,0,rcode) wkstr = 'half saturation constant for nitrate uptake' call length (wkstr,slen,sbgn,send) call ncaptc (ncid,varid,'long_name',ncchar,slen, & wkstr(sbgn:send),rcode) wkstr = 'micromole liter-1' call length (wkstr,slen,sbgn,send) call ncaptc (ncid,varid,'units',ncchar,slen, & wkstr(sbgn:send),rcode) c varid = ncvdef (ncid,'hsnh4',vartyp,0,0,rcode) wkstr = 'half saturation constant for ammonium uptake' call length (wkstr,slen,sbgn,send) call ncaptc (ncid,varid,'long_name',ncchar,slen, & wkstr(sbgn:send),rcode) wkstr = 'micromole liter-1' call length (wkstr,slen,sbgn,send) call ncaptc (ncid,varid,'units',ncchar,slen, & wkstr(sbgn:send),rcode) c varid = ncvdef (ncid,'no3inh',vartyp,0,0,rcode) wkstr = 'strength of ammonium inhibition of nitrate uptake' call length (wkstr,slen,sbgn,send) call ncaptc (ncid,varid,'long_name',ncchar,slen, & wkstr(sbgn:send),rcode) wkstr = 'liter micromole-1' call length (wkstr,slen,sbgn,send) call ncaptc (ncid,varid,'units',ncchar,slen, & wkstr(sbgn:send),rcode) # ifdef dusDroop c varid = ncvdef (ncid,'nquota',vartyp,0,0,rcode) wkstr = 'minimum nitrogen content for growth' call length (wkstr,slen,sbgn,send) call ncaptc (ncid,varid,'long_name',ncchar,slen, & wkstr(sbgn:send),rcode) wkstr = 'micromoleNitrogen microgramChlorophyll-1' call length (wkstr,slen,sbgn,send) call ncaptc (ncid,varid,'units',ncchar,slen, & wkstr(sbgn:send),rcode) c varid = ncvdef (ncid,'no3urm',vartyp,0,0,rcode) wkstr = 'maximum nitrate uptake rate' call length (wkstr,slen,sbgn,send) call ncaptc (ncid,varid,'long_name',ncchar,slen, & wkstr(sbgn:send),rcode) wkstr = 'micromoleNitrogen microgramChlorophyll-1 day-1' call length (wkstr,slen,sbgn,send) call ncaptc (ncid,varid,'units',ncchar,slen, & wkstr(sbgn:send),rcode) c varid = ncvdef (ncid,'nh4urm',vartyp,0,0,rcode) wkstr = 'maximum ammonia uptake rate' call length (wkstr,slen,sbgn,send) call ncaptc (ncid,varid,'long_name',ncchar,slen, & wkstr(sbgn:send),rcode) wkstr = 'micromoleNitrogen microgramChlorophyll-1 day-1' call length (wkstr,slen,sbgn,send) call ncaptc (ncid,varid,'units',ncchar,slen, & wkstr(sbgn:send),rcode) # endif c c----------------------------------------------------------------------- c Define phytoplankton loss rate parameters. c----------------------------------------------------------------------- c varid = ncvdef (ncid,'phylr1',vartyp,0,0,rcode) wkstr = 'linear phytoplankton mortality rate' call length (wkstr,slen,sbgn,send) call ncaptc (ncid,varid,'long_name',ncchar,slen, & wkstr(sbgn:send),rcode) wkstr = 'day-1' call length (wkstr,slen,sbgn,send) call ncaptc (ncid,varid,'units',ncchar,slen, & wkstr(sbgn:send),rcode) c varid = ncvdef (ncid,'phylr2',vartyp,0,0,rcode) wkstr = 'quadratic phytoplankton mortality rate' call length (wkstr,slen,sbgn,send) call ncaptc (ncid,varid,'long_name',ncchar,slen, & wkstr(sbgn:send),rcode) wkstr = 'liter micromole-1 day-1' call length (wkstr,slen,sbgn,send) call ncaptc (ncid,varid,'units',ncchar,slen, & wkstr(sbgn:send),rcode) c c----------------------------------------------------------------------- c Define zooplankton grazing parameters. c----------------------------------------------------------------------- c varid = ncvdef (ncid,'grazrm',vartyp,0,0,rcode) wkstr = 'maximum phytoplankton grazing rate' call length (wkstr,slen,sbgn,send) call ncaptc (ncid,varid,'long_name',ncchar,slen, & wkstr(sbgn:send),rcode) wkstr = 'day-1' call length (wkstr,slen,sbgn,send) call ncaptc (ncid,varid,'units',ncchar,slen, & wkstr(sbgn:send),rcode) c varid = ncvdef (ncid,'civlev',vartyp,0,0,rcode) wkstr = 'Ivlev constant for zooplankton grazing of phytoplankton' call length (wkstr,slen,sbgn,send) call ncaptc (ncid,varid,'long_name',ncchar,slen, & wkstr(sbgn:send),rcode) wkstr = 'liter micromole-1' call length (wkstr,slen,sbgn,send) call ncaptc (ncid,varid,'units',ncchar,slen, & wkstr(sbgn:send),rcode) c varid = ncvdef (ncid,'zooexcn',vartyp,0,0,rcode) wkstr = 'fraction of zooplankton grazing that is excreted as '// & 'ammonium' call length (wkstr,slen,sbgn,send) call ncaptc (ncid,varid,'long_name',ncchar,slen, & wkstr(sbgn:send),rcode) c varid = ncvdef (ncid,'zooexcd',vartyp,0,0,rcode) wkstr = 'fraction of zooplankton grazing that is excreted as '// & 'detritus' call length (wkstr,slen,sbgn,send) call ncaptc (ncid,varid,'long_name',ncchar,slen, & wkstr(sbgn:send),rcode) c c----------------------------------------------------------------------- c Define zooplankton loss rate parameters. c----------------------------------------------------------------------- c varid = ncvdef (ncid,'zoolr1',vartyp,0,0,rcode) wkstr = 'linear zooplankton loss rate' call length (wkstr,slen,sbgn,send) call ncaptc (ncid,varid,'long_name',ncchar,slen, & wkstr(sbgn:send),rcode) wkstr = 'day-1' call length (wkstr,slen,sbgn,send) call ncaptc (ncid,varid,'units',ncchar,slen, & wkstr(sbgn:send),rcode) c varid = ncvdef (ncid,'zoolr2',vartyp,0,0,rcode) wkstr = 'quadratic zooplankton loss rate' call length (wkstr,slen,sbgn,send) call ncaptc (ncid,varid,'long_name',ncchar,slen, & wkstr(sbgn:send),rcode) wkstr = 'liter micromole-1 day-1' call length (wkstr,slen,sbgn,send) call ncaptc (ncid,varid,'units',ncchar,slen, & wkstr(sbgn:send),rcode) c varid = ncvdef (ncid,'zoolf1',vartyp,0,0,rcode) wkstr = 'fraction of linear zooplankton loss to detritus' call length (wkstr,slen,sbgn,send) call ncaptc (ncid,varid,'long_name',ncchar,slen, & wkstr(sbgn:send),rcode) c varid = ncvdef (ncid,'zoolf2',vartyp,0,0,rcode) wkstr = 'fraction of quadratic zooplankton loss to detritus' call length (wkstr,slen,sbgn,send) call ncaptc (ncid,varid,'long_name',ncchar,slen, & wkstr(sbgn:send),rcode) c c----------------------------------------------------------------------- c Define sinking rate parameters. c----------------------------------------------------------------------- c varid = ncvdef (ncid,'wsnkphy',vartyp,0,0,rcode) wkstr = 'sinking rate for phytoplankton' call length (wkstr,slen,sbgn,send) call ncaptc (ncid,varid,'long_name',ncchar,slen, & wkstr(sbgn:send),rcode) wkstr = 'meter day-1' call length (wkstr,slen,sbgn,send) call ncaptc (ncid,varid,'units',ncchar,slen, & wkstr(sbgn:send),rcode) c varid = ncvdef (ncid,'wsnkdet',vartyp,0,0,rcode) wkstr = 'sinking rate for detritus' call length (wkstr,slen,sbgn,send) call ncaptc (ncid,varid,'long_name',ncchar,slen, & wkstr(sbgn:send),rcode) wkstr = 'meter day-1' call length (wkstr,slen,sbgn,send) call ncaptc (ncid,varid,'units',ncchar,slen, & wkstr(sbgn:send),rcode) c c----------------------------------------------------------------------- c Define remineralization parameters. c----------------------------------------------------------------------- c varid = ncvdef (ncid,'fracrmn',vartyp,0,0,rcode) wkstr = 'fraction of the sinking phytoplankton and detritus '// & 'flux that remineralizes on the seafloor' call length (wkstr,slen,sbgn,send) call ncaptc (ncid,varid,'long_name',ncchar,slen, & wkstr(sbgn:send),rcode) c varid = ncvdef (ncid,'remnnh4',vartyp,0,0,rcode) wkstr = 'ammonium remineralization (nitrification) timescale' call length (wkstr,slen,sbgn,send) call ncaptc (ncid,varid,'long_name',ncchar,slen, & wkstr(sbgn:send),rcode) wkstr = 'day-1' call length (wkstr,slen,sbgn,send) call ncaptc (ncid,varid,'units',ncchar,slen, & wkstr(sbgn:send),rcode) c varid = ncvdef (ncid,'remndet',vartyp,0,0,rcode) wkstr = 'detritus remineralization timescale' call length (wkstr,slen,sbgn,send) call ncaptc (ncid,varid,'long_name',ncchar,slen, & wkstr(sbgn:send),rcode) wkstr = 'day-1' call length (wkstr,slen,sbgn,send) call ncaptc (ncid,varid,'units',ncchar,slen, & wkstr(sbgn:send),rcode) c c----------------------------------------------------------------------- c Define Chlorophyll conversion parameters. c----------------------------------------------------------------------- c varid = ncvdef (ncid,'c2n',vartyp,0,0,rcode) wkstr = 'Nitrogen:Carbon ratio of phytoplankton' call length (wkstr,slen,sbgn,send) call ncaptc (ncid,varid,'long_name',ncchar,slen, & wkstr(sbgn:send),rcode) wkstr = 'moleNitrogen moleCarbon-1' call length (wkstr,slen,sbgn,send) call ncaptc (ncid,varid,'units',ncchar,slen, & wkstr(sbgn:send),rcode) c varid = ncvdef (ncid,'c2chl',vartyp,0,0,rcode) wkstr = 'Chlorophyll:Carbon ratio' call length (wkstr,slen,sbgn,send) call ncaptc (ncid,varid,'long_name',ncchar,slen, & wkstr(sbgn:send),rcode) wkstr = 'milligramChlorophyll milligramC-1' call length (wkstr,slen,sbgn,send) call ncaptc (ncid,varid,'units',ncchar,slen, & wkstr(sbgn:send),rcode) c if (ipmod.eq.ipmbid) then c varid = ncvdef (ncid,'cha2chb',vartyp,0,0,rcode) wkstr = 'Chlorophyll b to Chlorophyll a ratio' call length (wkstr,slen,sbgn,send) call ncaptc (ncid,varid,'long_name',ncchar,slen, & wkstr(sbgn:send),rcode) wkstr = 'milligramChlorophyllB milligramChlorophyllA-1' call length (wkstr,slen,sbgn,send) call ncaptc (ncid,varid,'units',ncchar,slen, & wkstr(sbgn:send),rcode) c varid = ncvdef (ncid,'cha2chc',vartyp,0,0,rcode) wkstr = 'Chlorophyll c to Chlorophyll a ratio' call length (wkstr,slen,sbgn,send) call ncaptc (ncid,varid,'long_name',ncchar,slen, & wkstr(sbgn:send),rcode) wkstr = 'milligramChlorophyllC milligramChlorophyllA-1' call length (wkstr,slen,sbgn,send) call ncaptc (ncid,varid,'units',ncchar,slen, & wkstr(sbgn:send),rcode) c varid = ncvdef (ncid,'cha2psc',vartyp,0,0,rcode) wkstr = 'photosynthetic carotenoids to Chlorophyll a ratio' call length (wkstr,slen,sbgn,send) call ncaptc (ncid,varid,'long_name',ncchar,slen, & wkstr(sbgn:send),rcode) wkstr = 'milligramCarotenoids milligramChlorophyllA-1' call length (wkstr,slen,sbgn,send) call ncaptc (ncid,varid,'units',ncchar,slen, & wkstr(sbgn:send),rcode) c varid = ncvdef (ncid,'cha2ppc',vartyp,0,0,rcode) wkstr = 'photoprotective carotenoids to Chlorophyll a ratio' call length (wkstr,slen,sbgn,send) call ncaptc (ncid,varid,'long_name',ncchar,slen, & wkstr(sbgn:send),rcode) wkstr = 'milligramCarotenoids milligramChlorophyllA-1' call length (wkstr,slen,sbgn,send) call ncaptc (ncid,varid,'units',ncchar,slen, & wkstr(sbgn:send),rcode) endif c c----------------------------------------------------------------------- c Define positive insurance parameters. c----------------------------------------------------------------------- c varid = ncvdef (ncid,'biopos',nclong,0,0,rcode) wkstr = 'switch to enforce positive biological fields' call length (wkstr,slen,sbgn,send) call ncaptc (ncid,varid,'long_name',ncchar,slen, & wkstr(sbgn:send),rcode) wkstr = 'do not enforce' call length (wkstr,slen,sbgn,send) call ncaptc (ncid,varid,'option_0',ncchar,slen, & wkstr(sbgn:send),rcode) wkstr = 'enforce, once per timestep' call length (wkstr,slen,sbgn,send) call ncaptc (ncid,varid,'option_1',ncchar,slen, & wkstr(sbgn:send),rcode) wkstr = 'enforce, during formation of forcing terms' call length (wkstr,slen,sbgn,send) call ncaptc (ncid,varid,'option_2',ncchar,slen, & wkstr(sbgn:send),rcode) wkstr = 'kill run if negative fields found' call length (wkstr,slen,sbgn,send) call ncaptc (ncid,varid,'option_3',ncchar,slen, & wkstr(sbgn:send),rcode) c #if defined codunlim | defined codlim c----------------------------------------------------------------------- c Define cod behavior parameters. c----------------------------------------------------------------------- c varid = ncvdef (ncid,'cdzmin',vartyp,0,0,rcode) wkstr = 'Cod minimum preferred depth' call length (wkstr,slen,sbgn,send) call ncaptc (ncid,varid,'long_name',ncchar,slen, & wkstr(sbgn:send),rcode) wkstr = 'meter' call length (wkstr,slen,sbgn,send) call ncaptc (ncid,varid,'units',ncchar,slen, & wkstr(sbgn:send),rcode) c varid = ncvdef (ncid,'cdzmax',vartyp,0,0,rcode) wkstr = 'Cod maximum preferred depth' call length (wkstr,slen,sbgn,send) call ncaptc (ncid,varid,'long_name',ncchar,slen, & wkstr(sbgn:send),rcode) wkstr = 'meter' call length (wkstr,slen,sbgn,send) call ncaptc (ncid,varid,'units',ncchar,slen, & wkstr(sbgn:send),rcode) c varid = ncvdef (ncid,'cdkz',vartyp,0,0,rcode) wkstr = 'Cod response to depth coefficient' call length (wkstr,slen,sbgn,send) call ncaptc (ncid,varid,'long_name',ncchar,slen, & wkstr(sbgn:send),rcode) # ifdef codunlim wkstr = 'second-1' # else wkstr = 'centimeter-1' # endif call length (wkstr,slen,sbgn,send) call ncaptc (ncid,varid,'units',ncchar,slen, & wkstr(sbgn:send),rcode) c varid = ncvdef (ncid,'cdkp',vartyp,0,0,rcode) wkstr = 'Cod response to prey coefficient' call length (wkstr,slen,sbgn,send) call ncaptc (ncid,varid,'long_name',ncchar,slen, & wkstr(sbgn:send),rcode) # ifdef codunlim wkstr = 'centimeter2 liter second-1 micromole-1' # else wkstr = 'centimeter liter micromole-1' # endif call length (wkstr,slen,sbgn,send) call ncaptc (ncid,varid,'units',ncchar,slen, & wkstr(sbgn:send),rcode) c varid = ncvdef (ncid,'cdtmin',vartyp,0,0,rcode) wkstr = 'Cod minimum preferred temperature' call length (wkstr,slen,sbgn,send) call ncaptc (ncid,varid,'long_name',ncchar,slen, & wkstr(sbgn:send),rcode) wkstr = 'Celsius' call length (wkstr,slen,sbgn,send) call ncaptc (ncid,varid,'units',ncchar,slen, & wkstr(sbgn:send),rcode) c varid = ncvdef (ncid,'cdtmax',vartyp,0,0,rcode) wkstr = 'Cod maximum preferred temperature' call length (wkstr,slen,sbgn,send) call ncaptc (ncid,varid,'long_name',ncchar,slen, & wkstr(sbgn:send),rcode) wkstr = 'Celsius' call length (wkstr,slen,sbgn,send) call ncaptc (ncid,varid,'units',ncchar,slen, & wkstr(sbgn:send),rcode) c varid = ncvdef (ncid,'cdkt',vartyp,0,0,rcode) wkstr = 'Cod response to temperature coefficient' call length (wkstr,slen,sbgn,send) call ncaptc (ncid,varid,'long_name',ncchar,slen, & wkstr(sbgn:send),rcode) # ifdef codunlim wkstr = 'centimeter2 second-1 Celsius-2' # else wkstr = 'centimeter Celsius-2' # endif call length (wkstr,slen,sbgn,send) call ncaptc (ncid,varid,'units',ncchar,slen, & wkstr(sbgn:send),rcode) # ifdef codlim c varid = ncvdef (ncid,'cdspd',vartyp,0,0,rcode) wkstr = 'Cod maximum cruising speed' call length (wkstr,slen,sbgn,send) call ncaptc (ncid,varid,'long_name',ncchar,slen, & wkstr(sbgn:send),rcode) wkstr = 'centimeter second-1' call length (wkstr,slen,sbgn,send) call ncaptc (ncid,varid,'units',ncchar,slen, & wkstr(sbgn:send),rcode) # endif c varid = ncvdef (ncid,'cdwmax',vartyp,0,0,rcode) wkstr = 'Cod maximum vertical swimming speed' call length (wkstr,slen,sbgn,send) call ncaptc (ncid,varid,'long_name',ncchar,slen, & wkstr(sbgn:send),rcode) wkstr = 'centimeter second-1' call length (wkstr,slen,sbgn,send) call ncaptc (ncid,varid,'units',ncchar,slen, & wkstr(sbgn:send),rcode) c #endif return end