====== Nitrogen and phosphorus in land routines ====== HYPE simulate nitrogen and phosphorus in soil both as immobile soil pools and as fractions dissolved in soil water. The pools are changed by outside sources and internal soil processes. The following fractions are simulated: * **fastN** - immobile pool of organic nitrogen in the soil with rapid turnover (//kg/km2 = mg/m2//) * **fastP** - immobile pool of organic phosphorus in the soil with rapid turnover (//kg/km2 = mg/m2//) * **humusN** - immobile pool of organic nitrogen in the soil with slow turnover (//kg/km2 = mg/m2//) * **humusP** - immobile pool of organic phosphorus in the soil with slow turnover (//kg/km2 = mg/m2//) * **IN** - concentration of inorganic nitrogen in soil water (//mg/L//) * **ON** - the concentration of (dissolved) organic nitrogen in soil water (//mg/L//) * **partP** - immobile pool of inorganic phosphorus adsorded to soil particles (//kg/km2 = mg/m2//) * **PP** - concentration of particulate phosphorus (of organic origin) in soil water (//mg/L//) * **SP** - concentration of soluble (reactive) phosphorus in the soil water (//mg/L//) The figure below give an overview of the nitrogen and phosphorus in soil in HYPE. The internal processes are shown with broad arrows and described in the section [[start:hype_model_description:hype_np_soil#nutrient_soil_processes|Nutrient soil processes]] below. Sources and sinks are shown with arrows and text, and are further described in sections [[start:hype_model_description:hype_np_soil#nutrient_sources|Nutrient sources]] and [[start:hype_model_description:hype_np_soil#vegetation_and_soil_surface_processes|Vegetation and soil surface processes]] | {{:start:hype_model_description:notrogensourcesandsinks.png?400}} | | {{:start:hype_model_description:phosphoroussourcesandsinks.png?400}} | | Figure 1: Sources and sinks of nitrogen and phosphorus in the soil. The humusN and humusP pools are called slowN and slowP in this figure. | ===== Nutrient Sources ===== ==== Fertilizer ==== Fertilization can be specified to be applied up to two times per year for each of the two fertilization forms, (commercial) fertilizer (//fert//) and manure (//man//). For each fertilization event the application date is specified, the amount of N and P (//fert(inut,ife), man(inut,ife)//, where //inut//=N,P and //ife//=1,2 the fertilization event) to be added, and a management indicator (//fdown(ife), mdown(ife)//). The last information indicates how much of the fertiliser is to be added to the second soil layer (the rest is added to the first soil layer). These parameters are given in [[start:hype_file_reference:cropdata.txt|CropData.txt]] and are crop and region dependent. For manure 50% of the nutrients are assumed to be in organic form (//inorgpart// = 0.5). Fertilizer and the inorganic part of the manure are added to the IN and SP pools of the soil water. The total amount is spread out over a specified period (given by the general parameter //fertdays//) after the date of fertilization. An equal amount is applied each day for the specified period. The organic part of the manure is added to the fastN and fastP pools. Each class can have two crops (//icrop//=1,2), the main crop and the secondary crop. The secondary crop do not have to cover (//a//) the whole class, e.g. if only 50% of the spring wheat (main crop) area have catch crop (second crop) (//a//(1)=1, //a//(2)=0.5). The total amount of added nutrients (common_{add}) is calculated as the sum of fertiliser additions from the main and secondary crops. Inorganic nutrients to be added to IN and SP pools: common_{add}(inut,layer=1)= sum {icrop=1} {2} {sum {ife=1} {2} {a(icrop) * ({fert(inut,ife,icrop) * (1 - fdown(ife,icrop))} / fertdays + {man(inut,if,icrop) * (1 - mdown(ife,icrop))*inorgpart} / fertdays)}} common_{add}(inut,layer=2)= sum {icrop=1} {2} {sum {ife=1} {2} {a(icrop) * ({fert(inut,ife,icrop) * fdown(ife,icrop)} / fertdays + {man(inut,ife,icrop) * mdown(ife,icrop)*inorgpart} / fertdays)}} Organic nutrients to be added to fastN and fastP pools: common_{add}(inut,layer=1)= sum {icrop=1} {2} {sum {ife=1} {2} {a(icrop) * {{man(inut,ife,icrop) * (1 - mdown(ife,icrop))*(1-inorgpart)} / fertdays}}} common_{add}(inut,layer=2)= sum {icrop=1} {2} {sum {ife=1} {2} {a(icrop) * {{man(inut,ife,icrop) * mdown(ife,icrop)*(1-inorgpart)} / fertdays}}} Note that the terms for application of fertilizer and manure only are added during the active time, which is from the application date and for //fertdays// number of days thereafter. ==== Plant residues ==== Plant residues are added at a specified date each year. They are added to the immobile soil pools (fastN, fastP, humusN, and humusP) to get a delay of the leakage and an accumulation of humus in the soil. The amount of crop residues (//resamount(inut)//, //inut//=N,P) and the date they are added on depends on crop and region and is given in the [[start:hype_file_reference:cropdata.txt|CropData.txt]] file. Part of the plant residues are added to the fast pool (//resfast//), and part to the humus pool. The plant residues are added to the upper two soil layers with a distribution (//resdown//) also specified in CropData. For each class the plant residues are weighted (common_{res}) for main and secondary crop together every day with the help of share for each crop (//a(icrop)//, where icrop=1,2). common_{res}(fast-inut,layer=1)= sum {icrop=1} {2} {a(icrop) * resfast(icrop) * resamount(inut,icrop) * (1 - resdown(icrop))} common_{res}(fast-inut,layer=2)= sum {icrop=1} {2} {a(icrop) * resfast(icrop) * resamount(inut,icrop) * resdown(icrop)} common_{res}(humus-inut,layer=1)= sum {icrop=1} {2} {a(icrop) * (1-resfast(icrop)) * resamount(inut,icrop) * (1 - resdown(icrop))} common_{res}(humus-inut,layer=2)= sum {icrop=1} {2} {a(icrop) * (1-resfast(icrop)) * resamount(inut,icrop) * resdown(icrop)} All crop residues are transferred into the soil at a given date as determined by the user in [[start:hype_file_reference:cropdata.txt|CropData.txt]]. Note that the terms for application of residues only are added that day. ==== Rural household diffuse source ==== Information on rural household diffuse source (private sewers) is given per subbasin. The source is defined by flow and concentrations of total nitrogen and phosphorus and fraction of IN and SP. The diffuse source may be divided into two parts with separate application point. One part is added directly to the local river, while the other part is added to the soil. The division between the two parts is determined by a general parameter (//locsoil//) or separately for each subbasin (//loc_soil// in GeoData.txt). The default is to add all diffuse source to the local river. The soil part is added to soil water (for IN, ON, and SP) or solid pool (PP to fastP) in the bottom soil layers of all land classes in the subbasin with a distribution proportional to the classes’ area. Additional substance concentration can be used for the diffuse source. An alternative method (model option) for adding a local diffuse source may be used. In this case the source is defined as a load to be added to the third layer of the soil of the land classes that have three soillayers (not including wetlands). Classes simulated with the traveltime soil model are also excluded. The load is dissolved in the soil water of the third layer of the remaining classes. In addition concentration and flow may be given, and is then added to the local river (//locsoil// parameter is not used). ==== Links to file reference ==== ^Section ^Symbol ^Parameter/Data ^File ^ |Fertilizer|//fert//|//fn1, fp1, fn2, fp2//|[[start:hype_file_reference:cropdata.txt|CropData.txt]]| |:::|//man//|//mn1, mp1, mn2, mp2//|:::| |:::|//fdown//|//mdown1, fdown2//|:::| |:::|//mdown//|//mdown1, mdown2//|:::| |:::| |//reg, cropid, fday1, fday2, mday1, mday2//|:::| |:::| |//fertdays//|[[start:hype_file_reference:par.txt|par.txt]]| |:::| |//cropid, cropid2//|[[start:hype_file_reference:geoclass.txt|GeoClass.txt]]| |:::| |//src_nn, slc_nn//|[[start:hype_file_reference:geodata.txt|GeoData.txt]]| |Plant residues|//resamount//|//resn, resp//|[[start:hype_file_reference:cropdata.txt|CropData.txt]]| |:::| |//resday, resfast, resdown//|:::| |Rural household diffuse source| |//modeloption diffusesource//|[[start:hype_file_reference:info.txt|info.txt]]| |:::| |//locsoil//|[[start:hype_file_reference:par.txt|par.txt]]| |:::| |//loc_tp, loc_tn, loc_ts, loc_t1, loc_t2, loc_vol, loc_sp, loc_in, loc_ss, loc_si, loc_ds, loc_oc, loc_soil//|[[start:hype_file_reference:geodata.txt|GeoData.txt]]| |:::| |//locltp, locltn, loclts, loclt1, loclt2, loclsi, locloc, loclsp, loclin, loclss, loclds//|:::| ==== Links to relevant procedures in the code ==== ^Modules (file) ^Procedures ^ Sections^ |[[http://hype.sourceforge.net/doxy-html/namespacenpc__soil__processes.html|npc_soil_processes (npc_soil_proc.f90)]]|crop_sources|fertilizer| |:::|:::|plant residues| |:::|local_diffuse_source|rural household diffuse source| |[[http://hype.sourceforge.net/doxy-html/namespacenpc__surface__processes.html|npc_surfacewater_processes (npc_sw_proc.f90)]]|add_diffuse_source_to_local_river|rural household diffuse source| ===== Vegetation and soil surface processes ===== The CropData.txt file contains information on the various crops that are simulated. Each soil type-land use class (SLC-class) can have a main crop and a secondary crop. To reduce the number of SLC-classes in a simulation the individual crops with similar properties are brought together in a grouped crop (e.g. row crops). In CropData.txt there is information such as the amount of fertilizer, manure and crop residues introduced into the soil for different crops in different regions. The file also provides coefficients for nutrient uptake capabilities. ==== Potential vegetation uptake of nitrogen ==== The potential uptake is used to calculate the absorption of IN and SP from the soil water (see section Vegetation nutrient uptake). The actual uptake will be limited by the nutrients available. Potential uptake of nitrogen by plants is based on a three-parameter equation (logistic growth) from SOILN (Eckersten et al., 1994). Nitrogen uptake (//uptake//) is calculated for the main and secondary crop and added to the common potential absorption function (//common_uptake//, //mg/m2/d//) using the percentage of the area of the main crop (//part// = 1.0) and secondary crop (//part//<1). The potential uptake is divided between the upper soillayer and second soillayer by a crop dependent input variable for the fraction of the upper soil layer. If the crop is growing in a class of only one soil layer, only the upper soil layer fraction of the potential uptake will be used in the calculations. The growing period with simulated nutrient uptake is determined by the sowing date (//bd2//) and continues until harvest (//bd3//). Potential uptake depends on three parameters (//up1, up2// and //up3//) and the number of days after sowing date. The uptake for a specific crop is calculated with the parameter values for that crop as help = (up1-up2)*e^{-up3*(dayno-bd2)} uptake = up1*up2*up3*help/((up2+help)*(up2+help)) for the growing period. Outside the growing period the uptake is assumed to be zero. |{{:start:hype_model_description:uptake.png?400|}}| |Figure 2 Uptake function over a year with growing period bd2=100 to bd3=230. Effect of changing parameters up1-up3.| Autumn-sown crops may take up IN and SP for a while after sowing in autumn. The same potential uptake of nitrogen as the main growing season are used, but uptake is limited by a temperature function. This uptake will run from the autumn sowing date (//bd5//) to the mid winter (31 December or 30 June depending on the autumn sawing date). help = (up1-up2)*e^{-up3*(dayno-(bd5+25))} uptake = tmpfcn * up1*up2*up3*help/(up2+help)/(up2+help) where the temperature function (//tmpfcn//) is calculated as tmpfcn = delim{lbrace} {matrix{2}{2}{{MIN[1,(T-5)/20]} {T>5} 0 {T<5}}} with //T// the air temperature. The growing period will then continue next season from //bd2// as described above. For simulations with shorter time step than one day, the nutrient uptake, //uptake// above, is calculated with temperature (//T//) for the time step, and is divided by the number of time steps per day to get the uptake for this time step. The start of the growing season/sowing date (//bd2//) may be given as a constant, or calculated dynamically depending on temperature. This is set by a model option. If the growth start is dynamically determined it is set to the first day of the year which has a degreeday sum (//GDD//) above a threshold (//gsgddsow//). The degreeday sum (//GDD//) is calculated as GDD(d+1)=GDD(d)+MAX(0,T-gsbasetemp) where //d// is day of year, //T// is air temperature (degree Celcius), //gsbasetemp// is a temperature threshold. The GDD is accumulated for each day after //gsfirstday// with day length larger than //gsdaylen//. The GDD is zeroed at //gsfirstday//. For simulations with shorter time step than one day, the degreeday sum is calculated by checking and adding each timestep. Thus the //GDD// will not be the same as for a daily model, for days when the temperature vary around the //gsbasetemp// during the day. ==== Soil erosion ==== The erosion of soil particles is calculated by HYPE for transport of particulate phosphorus (PP) and/or for the simulation of sediment material (SS). For transport of PP an erosion model depending on mobilization of particles by rain and by surface runoff is often used. This formulation is the default model. Another erosion model based on catchment erosion index can be used. The two models calculate the amount of mobilised sediment differently, the amout which is then used for calculation of eroded phosphorus. In the first model PP can leave the land by two means, by surface runoff transport and by macropore flow through drainage pipes. The calculation of PP transport is done in three steps: first the erosion (mobilization) of soil particles from the land surface is calculated, secondly how much of the mobilized particles that are leaving the field is calculated, finally the amount of soil particles is converted to phosphorus. ===Step 1: Mobilization of particles from soil=== Mobilization (//MobilisedRain// and //MobilisedSR//) occurs due to energy from falling raindrops (Rainfall_{energy}) and/or from surface runoff. The kinetic energy in rainfall is calculated as a function of rainfall and day of the year (//dayno//). If the precipitation falls as snow, or if it falls on snow-covered ground or if it is smaller than 5 mm/day no mobilization occurs in the model. Some of the rain drop's energy can be absorbed by vegetation. Cropcover is defined as the portion of land that is sheltered from raindrops; for a description of how this is calculated, see [[start:hype_model_description:hype_np_soil#crop_cover_and_ground_cover|next chapter]]. The factor common_{cropcover} is the total fraction of cover that the main and secondary crop give together. It varies over the year due to crop growth and management. The mobilization is also influenced by soil erodibility (soil dependent parameter //soilerod// (g/J)). Rainfall_{energy} = prec * ( 8.95+8.44*LOG10 (prec*2* ( 0.257+ 0.09*sin ( 2 pi* ( dayno-70 ) {/}365 )))) MobilisedRain = Rainfall_{energy}* (1. - common_{cropcover}) * soilerod When surface runoff occurs, soil particles are eroded and carried away as the soil surface is exposed to shear forces. The mobilization is calculated from the surface runoff (//sflow//), land slope, a parameter for soil cohesion (//soilcoh// (//kPa//) soil type dependent), and a general parameter (//sreroexp//). This type of erosion can be mitigated by protective vegetation or vegetation residues that are in contact with the ground. The calculation of this factor (//groundcover//) is described in [[start:hype_model_description:hype_np_soil#crop_cover_and_ground_cover|next chapter]]. The variable common_{groundcover} is the total fraction of cover that the main and secondary crop give. MobilisedSR = {{(sflow*365)^{sreroexp}} * (1-common_{groundcover}) * {1/{0.5*soilcoh}} * sin(slope/100)} / 365 All mobilised particles is not removed from the field, because sometimes the transport capacity of the particle-bearing water (//eflow//) will not suffice for the task. A //transportfactor// will reduce the particle amount: transportfactor = MIN(1.0,(eflow {/} 4)^{1.3}) Mobilised sediment (kg/km2) is calculated as: mobilSed = 1000 * (MobilisedRain + MobilisedSR) * transportfactor The alternative erosion model calculates mobilised sediment (//mobilSed// (kg/km2)) based on rainfall (//rain//) and a number of model parameters and subbasin input data. mobilSed = 1000. * ({slope / 5})^{erodslope} * erodluse * erodsoil * {EI/erodindex} * rain^{erodexp} The parameters //erodslope//, //erodexp// and //erodindex// are general. The parameters //erodluse// and //erodsoil// are land-use and soil type dependent. Subbasin input is needed on //slope//, the subbasins average slope, and an erosion index, //EI//. In addition an adjustment can be made with a monthly model parameter //erodmon// to help match seasonality of erosion. modilSed = mobilSed * erodmon(month) where //month// is the current month. A selective process is affecting the soil erosion of phosphorus. Smaller and lighter particles are eroded easier than larger ones. The tiny particles contain more P per unit weight than the average particle of the soil. Therefore an enrichment factor (//enrichment//) is used. The enrichment factor is calculated from three parameters (//ppenrmax, ppenrstab, ppenrflow//), one of which is soil type dependent (//ppenrmax//), and the particle bearing flow. Typical values of the parameters, here called max, stab and flowstab, are given in the example in Figure 3. |{{:start:hype_model_description:enrich.png?400|}}| |Figure 3 The enrichment factor for particulate phosphorus during soil erosion.| Eventually the mobilised PP (kg/km2) is calculated as: mobilP = 0.000001 * mobilSed * {{PartP + HumusP}/ {thickness * bulkdensity}} * enrichment The calculated mobilised phosphorus (//mobilP//) is now available to add to the particulate phosphorus (PP) of surface runoff. ===Step 2: Transport of eroded phosphorus off the field=== A portion of PP in surface runoff (//sflow//) is filtered out (for example by buffer zones). Filtering (//srfilt//) is determined by land use dependent parameters (//bufferfilt, innerfilt, otherfilt//), percentage of agricultural land close to a watercourse (//alfa//), and proportion of agricultural land near the rivers which have a protective buffer zone (//bufferpart//). srfilt = otherfilt + alfa * (1. + bufferpart * (bufferfilt - 1.)) + innerfilt * (1. - alfa) Similarly, part of the PP which is transported by macropore flow (//mflow//) is filtered away between the soil surface and drainage pipes. The parameter that determines this effect (//macrofilt//) is soil dependent. The PP transported (//erodedP//) by surface runoff and macropore flow is collected in a temporary storage pool (//relpool// (kg/km2)) together with PP in tile runoff (//tilep//). erodedP = (srfilt*sflow+macrofilt*mflow)*mobilP/eflow eflow=sflow+mflow relpool = relpool + erodedP + tilep \\ ===Step 3: Particles reaching the local stream=== From the temporary pool phosphorus is released (//release// (kg/km2)) and then transported to the local river depending on the size of the total runoff (//runoff// (mm)). The parameters //pprelmax// and //pprelexp// are general. release = MIN(relpool, relpool *(runoff {/} pprelmax)^{pprelexp}) The sediment may be removed from the temporary pool between the land surface and the local stream if no erosion occurs. A 1st order decay, with general parameter //eroddecay//, is used so that sediment doesn’t remain detached forever. ==== Crop cover and ground cover ==== Erosion can be mitigated by protective vegetation or vegetation residues that are in contact with the ground. Crop cover and ground cover reduce erosion by rain and surface runoff for particulate phosphorus (PP) and the default sediment transport model (SS). Each crop covers a fraction of the ground, thus for simultanous crops (1st and 2nd crop) their respective crop/ground cover is combined to a common crop/ground cover. Harvested crops have seasonally varying ground and crop cover, while permanent vegetation (e.g. forest) has constant values for these parameters. The input data needed for calculations (//ccmax1, ccmax2, gcmax1, gcmax2//) are given in [[start:hype_file_reference:cropdata.txt|CropData.txt]]. Parameters //ccmax1// and //gcmax1// describe the maximum crop and ground cover during spring-summer growing season, parameters //ccmax2// and //gcmax2// are corresponding maxima for winter crop's growth. These maximum ratios are reached at //maxday1// and //maxday2//, which are defined as halfway between planting and harvest, and halfway between autumn planting and midwinter (1 January or 30 June depending on autumn planting date), respectively. From sowing the coverage fractions increase linearly up to their maximum values. After these dates maximum coverage is maintained to the next ploughing, harvest, or until the growing season starts again in the spring (for winter crops) (Figure 4). During the period between harvesting and ploughing, crop cover is equal to ground cover (//gcmax1//). At ploughing, ground and crop cover are reduced to zero. Parameters //bd1// and //bd4// describe the dates of spring and autumn ploughing. In the case of spring sowing, when no winter crop is crowing, either one of the ploughing parameters can be set for ploughing date. {{ :start:hype_model_description:groundcover_cropcover.png?400 |}} |Figure 4: Crop cover and ground cover development for four different crop configurations.| ==== Transformation of nitrogen from atmospheric deposition ==== The parameter //ponatm// indicates that some of the nitrogen deposition will be organic instead of only inorganic. For wet deposition and deposition on snow, this is adjusted when there is infiltration of rain and melted snow into the soil. A portion (//ponatm//) of IN in the infiltration are added to fastN in the top layer instead of following the water to the soil water. ==== Links to file reference ==== ^Section ^Symbol ^Parameter/Data ^File ^ |Potential vegetation uptake of nitrogen|//part//|//scr_nn//|[[start:hype_file_reference:geodata.txt|GeoData.txt]]| |:::| |//upupper, pnupr, bd2, bd3, bd5, up1, up2, up3, gsgddsow, gsbasetemp, gsfirstday, gsdaylen//|[[start:hype_file_reference:cropdata.txt|CropData.txt]]| |:::|//T//|calculated from|[[start:hype_file_reference:tobs.txt|Tobs.txt]]| |Soil erosion| |//soilerod, soilcoh, seroexp, erodslope, erodluse, erodsoil, erodindex, erodexp, erodmon, bufferfilt, innerfilt, otherfilt, macrofilt, pprelmax, pprelexp, eroddecay//|[[start:hype_file_reference:par.txt|par.txt]]| |:::|//slope//|//slope_mean//|[[start:hype_file_reference:geodata.txt|GeoData.txt]]| |:::|//EI//|//eroindex//|:::| |:::|//alfa//|//close_w//|:::| |:::|//bufferpart//|//buffer//|:::| |Crop cover and ground cover| |//ccmax1, ccmax2, gcmax1, gcmax2, bd1, bd4//|[[start:hype_file_reference:cropdata.txt|CropData.txt]]| |:::|//maxday1, maxday2// |calculated from //bd2, bd3, bd5//|:::| |Transformation of nitrogen from atmospheric deposition| |//ponatm//|[[start:hype_file_reference:par.txt|par.txt]]| ==== Links to relevant procedures in the code ==== ^Modules (file) ^Procedures ^ Sections ^ |[[http://hype.sourceforge.net/doxy-html/namespacenpc__soil__processes.html|npc_soil_processes (npc_soil_proc.f90)]]|calculate_plant |potential vegetation uptake of nutrients| |:::|particle_processes_for_runoff|erosion calculations| |:::|calculate_pp_transport|:::| |:::|calculate_hbvsed_erosion|:::| |:::|calculate_erosion|erosion calculations| |:::|:::|crop cover and ground cover| |:::|atmdep_in_loss|transformation of nitrogen from atmospheric deposition| ===== Nutrient soil processes ===== ==== Soil pools – initial values ==== The initial pools of immobile soil nutrients are dependent on land use and is determined by the user and very important because they are changing slowly. The initial pools of the soil layers are calculated from a parameters. The parameters (//humusn0, humusp0, partp0, fastn0, fastp0//) are representative for the uppermost soil layer; the unit for these parameters is //mg/m3//. The initial fastN, humusN, fastP, humusP and partP-pools decreases with depth, with half depth determined by land use dependent parameters (//hnhalf, hphalf// and //pphalf//). The equation for a depth dependent soil nutrient is: nut(d)=nut0*e^{-par*d} where //d// is depth below zero-level, //nut0// is nutrient at zero-level (i.e. model parameter for uppermost soil layer) and //par// is calculated from respective nutrient half depth model parameter (//NNhalf//) as: par={log 2}/NNhalf As the model parameters that represent zero-level nutrient (//nut0//) is defined for the uppermost soil layer, the zero-level is the middle of uppermost soillayer. The following depths (//d//) represent the soillayers (1-3): d(1)=0 d(2)={soilthick(1)}/2+{soilthick(2)}/2 d(3)={soilthick(1)}/{2}+soilthick(2)+{soilthick(3)}/{2} The nutrient is transformed into model soil nutrient pools (unit //kg/km2//) by taking into account the thickness of the soil layers. pool(k)=nut(d(k))*soilthick(k), ~~ k=1..3 The nutrients dissolved in soil water is initialized independent of depth. The initial IN, ON, SP and PP concentration are determined by land use dependent parameters (//inconc0//, //onconc0//, //spconc0// and //ppconc0//, //mg/L//) – valid for all three soil layers. ==== Common functions ==== Many soil processes depend on temperature and soil moisture. The following equations are used in these cases. The temperature function (figure 5) depends on the estimated soil layer temperature (//soiltemp//). The soil temperature requires some parameters to be simulated, see Section [[start:hype_model_description:hype_land#soil_temperature_and_snow_depth|Soil temperature and snow depth]]. tmpfcn = 2**((soiltemp - 20.0) / 10.0) IF(temp < 5.0) tmpfcn = tmpfcn * (soiltemp / 5.0) IF(temp < 0.0) tmpfcn = 0.0 The humidity function (figure 6) depends on soil moisture (//soil//) in the soil layer and the parameters of wilting limit (//wp//), field capacity (//fc//) and effective porosity (//ep//) transformed to unit //mm//. All these humidities are specified as percentages. The function includes coefficients //thetaupp// = 0.12, //thetalow// = 0.08, //thetapow// = 1.0 and //satact// = 0.6. Note that another function is used in the calculation of denitrification. For soil layers //k// = 1..3 the equation is: IF(soil >= wp + fc + ep) THEN smfcn = satact ELSE smfcn = min(1.,(1-satact)*((wp+fc+ep-soil) /(thetaupp*soilthick)) **thetapow + satact,((soil-wp)/(thetalow*soilthick) **thetapow) ENDIF IF(soil < wp) THEN smfcn=0.0 ENDIF The humidity function (figure 6) is always less than or equal to one while the temperature function may be greater than one when the temperature exceeds 20 degrees. |{{:start:hype_model_description:commonfunctionstemperature.png?300}}| |Figure 5: Common temperature function for soil processes| |{{:start:hype_model_description:commonfunctionshumidity.png?300}}| |Figure 6: Common humidity function for soil processes| ==== Vegetation nutrient uptake ==== Vegetation nutrient uptake is a sink of the IN and SP concentrations in the two upper soil layers. The uptake (//uptake / uptakeP//, //mg/m2/d//) depends on the potential uptake of nitrogen (common_{uptake}), calculated for the combination of main crop and any secondary crop of the specified class. Vegetation nutrient uptake also depends on //uptsoil1// which gives the distribution of uptake between the two layers for a crop, the pool of IN (//INpool//) and SP (//SPpool//) and for phosphorus by P / N ratio (//pnratio//). The pool of dissolved nutrients are calculated as the concentration multiplied by the water in the soil layer (in //mm//). The main and secondary crop of a class is specified in GeoClass.txt. uptakeN(1) = MIN(uptsoil1 * common_{uptake}, a*INpool(1)) \\ uptakeN(2) = MIN((1-uptsoil1) * common_{uptake}, a* INpool(2)) \\ uptakeP(1) = MIN(pnratio * uptsoil1 * common_{uptake}, a* SPpool(1)) \\ uptakeP(2) = MIN(pnratio * (1-uptsoil1) * common_{uptake}, a*SPpool(2)) \\ a = (soil - wp) / soil The plants can take up a maximum factor //a// of the pool. This factor is calculated as a percentage of soil water over the wilting point. The equations for the potential uptake of nitrogen (common_{uptake}) are described under that section above. The constants //uptsoil1// (percentage of plant nutrients absorbed top layer) and //pnratio// (ratio of N and P uptake) are given for each crop. ==== Denitrification ==== Denitrification is a sink for IN in all three soil layers. Denitrification (//denitr//, //mg/m2/d//) depends on the denitrification rate and the pool of IN (//INpool//) in each soil layer (//k// = 1.3). The denitrification rate depends on a rate coefficient (//drate//), soil temperature, IN concentration and soil moisture. denitr(k) = drate * INpool(k) * tmpfcn(k) * smfcn(k) * concfcn(k) The coefficient //drate// is determined by land use dependent model parameters //denitrlu// and //denitrlu3//. The temperature dependence (//tmpfcn//) is described above. The soil moisture function (figure 7) is exponential and thus different from the general soil moisture function. smfcn= delim{lbrace} {matrix{2}{2}{ 0 {soil where pw=wp+fc+ep The function depends on soil moisture (//soil//) and pore volume (//pw//). Is also depends on two constants; the limit where moisture is high enough to allow denitrification to occur (//dlim//= 0.7) and the exponent (//exp//= 2.5). These cannot currently be changed. The dependence of the denitrification rate on the IN concentration is described by a function with a half-saturation concentration (general parameter //hsatINs// was in earlier HYPE versions a constant equal to 1 mg/L) (Figure 8). concfcn = conc / {conc + hsatINs} |{{:start:hype_model_description:functionsdenitrhumidity.png?300|Adds an ImageCaption tag}}| |Figure 7: Soil moisture function in the denitrification process.| |{{:start:hype_model_description:functionsdenitrconcentration.png?300|}}| |Figure 8: Concentration function in the denitrification process.| ==== Immobile soil nutrient pool transformations ==== === Turnover of fastN === Turnover of fastN is a sink for fastN and a source of IN in all three soil layers (//k// = 1..3). Turnover (//transfN//, //mg/m2/d//) depends on a general parameter (//minerfn//), temperature function (//tmpfcn//), humidity function (//smfcn//) and the pool of fastN (//fastN//). transfN(k) = minerfn * tmpfcn(k) * smfcn(k) * fastN(k) === Turnover of fastP === Turnover of fastP is a sink for fastP and a source of SP in all three soil layers (//k// = 1..3). Turnover (//transfP//, //mg/m2/d//) depends on a general parameter (//minerfp//), temperature function (//tmpfcn//), humidity function (//smfcn//) and the pool of fastP (//fastP//). transfP(k) = minerfp * tmpfcn(k) * smfcn(k) * fastP(k) === Turnover of humusN === Turnover of humusN is a sink for humusN and a source of fastN in all three soil layers (//k// = 1..3). It is supposed to be a very slow process. Turnover (//degradhN, mg/m2/d//) depends on a general parameter (//degradhn//), temperature function (//tmpfcn//), humidity function (//smfcn//) and the pool of humusN (//humusN//). degradhN(k) = degradhn * tmpfcn(k) * smfcn(k) * humusN(k) === Turnover of humusP === Turnover of humusP is a sink for humusP and a source of fastP all three soil layers (//k// = 1..3). It is supposed to be a very slow process. Turnover (//degradhP//, //mg/m2/d//) depends on a general parameter (//degradhp//), temperature function (//tmpfcn//), humidity function (//smfcn//) and the pool of humusP (//humusP//). degradhP(k) = degradhp * tmpfcn(k) * smfcn(k) * humusP(k) ==== Dissolution of soil organic pools ==== All organic soil pools of nutrient (humusN, fastN, humusP and fastP) contribute to dissolved organic nutrients in soil water (i.e. ON and PP). This process is a sink of the soil pools and a source of ON and PP in all three soil layers (//k// = 1..3). Dissolution (//mg/m2/d//) depends on a model parameter (one for each soil pool, //dispar//), temperature function (//tmpfcn//), humidity function (//smfcn//) and the size of the soil pool (//soilpool//). dissolution(k) = dispar * tmpfcn(k) * smfcn(k) * soilpool(k) The dissolution model parameters (//dispar//) is land use dependent and named //dissolfp//, //dissolfn//, //dissolhp//, and //dissolhn// for dissolution of nutrient pools fastN, fastP, humusN and humusP respectively. ==== Percolation ==== ON and PP concentration are reduced as the water percolates down through the soil layers. The decrease in concentration depends on land use dependent model parameters (//par//). conc = conc*(1. - par) ==== Balance SP – PartP ==== SP is in a dynamic equilibrium with P adsorbed to soil particles (partP). The equilibrium is described by the Freundlich equation. From the total amount of P (SP + partP) in the soil an equilibrium concentration of SP is calculated in the soil solution using the iterative Newton-Raphson method. coeff = Kfr * bulkdensity * soilthick DO WHILE fxn = xn * vol + coeff * (xn ** Nfr) - totalP fprimxn = vol + Nfr * coeff * ( xn **(Nfr-1)) xn_1 = xn - fxn / fprimxn xn = xn_1 ENDDO The coefficients //Kfr//, and //Nfr// are soil dependent, bulkdensity is the dry density of soil (= 1300 kg/m3) and soilthick is the soil layer thickness. //fxn// is function value for the concentration //xn//, //fprimx// is the function value of the derivative of //fxn//, and xn_1 is the concentration of the next iteration. The resulting SP equilibrium concentration (xn=xn_1) is used to calculate the PP eqiuilibrium concentration (PPequi_{conc}). A new SP concentration (SP_conc) is calculated from the previous concentration (SP_conc_old) and the equilibrium concentration, taking into account the balance is not reached during the time step. PPequi_{conc} = Kfr * ({xn_1}^{Nfr}) Adsdes = (PPequi_{conc} - concsolid)*(1-e^{-Kadsdes}) SP_conc = SP_conc_old - {(Adsdes * bulkdensity * soilthick)/ vol} //Adsdes// is the amount of adsorbed/desorbed P, //Kadsdes// is a soil dependent rate constant, //equi_concsolid// is the solid phase equilibrium concentration, and //concsolid// is the initial concentration the solid phase. ==== Crop rotation effect on soil pools ==== The soil pools of nutrients are shared by crops on rotation on a field. This is modelled by averaging the soil pools once per year for the classes which are in the same crop rotation group. ==== Links to file reference ==== ^Section ^Symbol ^Parameter/Data ^File ^ |Soil pools - initial values|//nut0//|//humusn0, humusp0, partp0, fastn0, fastp0//|[[start:hype_file_reference:par.txt|par.txt]]| |:::|//NNhalf//|//hnhalf,hphalf, pphalf//|:::| |:::| |//onconc0, ppconc0//|:::| |:::|//soilthick//|calculated from //soillayerdepth//|[[start:hype_file_reference:geoclass.txt|GeoClass.txt]]| |Common functions|//wp, fc, ep//|calculated from //wcwp, wcwp1-3, wcfc, wcfc1-3, wcep, wcep1-3//|[[start:hype_file_reference:par.txt|par.txt]]| |Vegetation nutrient uptake| |//cropid, cropid2//|[[start:hype_file_reference:geoclass.txt|GeoClass.txt]]| |:::|//uptsoil1//|//upupper//|[[start:hype_file_reference:cropdata.txt|CropData.txt]]| |:::|//pnratio//|//pnupr//|:::| |Denitrification| |//denitrlu, denitrlu3, hsatINs//|[[start:hype_file_reference:par.txt|par.txt]]| |Immobile soil nutrient pool transformations| |//minerfn, minerfp, degradhn, degradhp//|[[start:hype_file_reference:par.txt|par.txt]]| |Dissolution of soil organic pools|//dispar//|//dissolfp, dissolfn, dissolhp, dissolhn//|[[start:hype_file_reference:par.txt|par.txt]]| |Percolation|//par//|//onpercred, pppercred//|[[start:hype_file_reference:par.txt|par.txt]]| |Balance SP - PartP|//Kfr//|//freuc//|[[start:hype_file_reference:par.txt|par.txt]]| |:::|//Nfr//|//freuexp//|:::| |:::|//Kadsdes//|//freurate//|:::| |Crop rotation effect on soil pools| |//crop rotation//|[[start:hype_file_reference:geoclass.txt|GeoClass.txt]]| ==== Links to relevant procedures in the code ==== ^Modules (file) ^Procedures ^ Sections^ |[[http://hype.sourceforge.net/doxy-html/namespacenpc__soil__processes.html|npc_soil_processes (npc_soil_proc.f90)]]|soil_substance_processes | | |:::|initiate_soil_npc_state| soil pools - intial values | |:::|plant_uptake|vegetation nutrient uptake| |:::|soil_denitrification |denitrification| |:::|soil_pool_transformations|immobile soil pool transformation| |:::|:::|dissolution| |:::|onpp_percolation_reduction|percolation| |:::|balance_spsoil|balance SP-partP| |:::|freundlich|:::| |:::|croprotation_soilpoolaverage|crop rotation| |[[http://hype.sourceforge.net/doxy-html/namespacegeneral__functions.html|general_functions (general_func.f90)]]|tempfactor| common functions | |:::|moisturefactor|:::| |:::|halfsatconcfactor|denitrification| |:::|exponential_moisturefactor|:::| ===== Transport with soil water ===== IN, ON, SP and PP comes with water when it flows through the soil, but remain when water evaporates. Different flow paths contribute to the runoff of water and concentration of IN, ON, SP and PP from the corresponding soil layer. The flow paths possible today are: surface runoff (soil layer 1), runoff (soil layer 1, 2 and 3) and runoff through drainage pipe (soil layer 1, 2 or 3). ===== Diagnostic output variables of soil nutrients ===== Some additional output variables are calculated from the soil variables. Gross and net soil load is calculated for the "root zone", e.g. soil layer one and two together, and for soil layer three separate. A third option for soil load is calculated not strictly based on the soil layers but as an approximation for "groundwater" based on third soil layer but manipulated with tile drainage. ==== Gross soil loads ==== Gross load to soil layer one and two (root zone). Components included: atmospheric deposition (wet and dry), fertilizers, crop residues, rural load if number of soil layers is less than three. Note that load from irrigation is not included. HYPE variable IDs: sl01=IN, sl03=ON, sl05=sl01+sl03=TN, sl07=SP, sl09=PP, sl11=sl07+sl09=TP Gross load to soil layer three (lower soil). Components included: percolation from soil layer two to three, rural load if number of soil layers is three. HYPE variable IDs: sl13=IN, sl15=ON, sl17=sl13+sl15=TN, sl19=SP, sl21=PP, sl23=sl19+sl21=TP Gross load to "groundwater" (modified soil layer three). Components included: percolation from soil layer two to three, rural load if number of soil layers is three, tile drain runoff if tile is in soil layer one or two. HYPE variable IDs: sl25=IN, sl27=ON, sl29=sl25+sl27=TN, sl31=SP, sl33=PP, sl35=sl31+sl33=TP ==== Net soil loads ==== Net load from soil layer one and two (root zone). Components included: percolation from soil layer two to three, runoff from soil layer one and two, tile drain runoff if tile is in soil layer one or two, surface runoff. HYPE variable IDs: sl02=IN, sl04=ON, sl06=sl02+sl04=TN, sl08=SP, sl10=PP, sl12=sl08+sl10=TP Net load from soil layer three (lower soil). Components included: runoff from soil layer three, tile drain runoff if tile is in soil layer three. HYPE variable IDs: sl14=IN, sl16=ON, sl18=sl14+sl16=TN, sl20=SP, sl22=PP, sl24=sl20+sl22=TP Net load from "groundwater" (modified soil layer three). Components included: runoff from soil layer three, tile drain runoff if tile is in any soil layer. HYPE variable IDs: sl26=IN, sl28=ON, sl30=sl26+sl28=TN, sl32=SP, sl34=PP, sl36=sl32+sl34=TP |soil layer one and two|| |{{:start:hype_model_description:soilload1.png?200|}}|| |soil layer three|modified soil layer three| |{{:start:hype_model_description:soilload2.png?200|}}|{{:start:hype_model_description:soilload3.png?200|}}| |Figure 9: Components of calculated gross (brown) and net (green) loads of soil.|| ==== Links to relevant procedures in the code ==== ^Modules (file) ^Procedures ^ |[[http://hype.sourceforge.net/doxy-html/namespacemodelmodule.html|modelmodule (model_hype.f90)]]|model| |:::|define_output_variables| ===== Nutrient soil leakage from outer source ===== There is a model option in HYPE to not calculate nutrients as described above and instead use nutrient soil leakage from an outer source. In this case the calculations described above is skipped, while soil water and runoff processes is calculated as usual. Instead two other soil nutrient models can be used. HYPE output variables related to soil nutrients are set to missing values. The implemented soil leakage models are: * 1. monthly typical concentrations for each subbasin * 2. typical monthly load of excess nutrients for each class * 3. monthly load of excess nutrients for each class * 4. constant load and/or leakage for each class * 5. monthly load and/or leakage for each class The default is to use HYPE calculated runoff concentrations with the processes described in the sections above (''modeloption soilleakage 0''). The other implemented soil nutrient models are the special classmodels: * 5. The traveltime soilmodel * 6. The rootzone leakage soilmodel ====1. Monthly typical concentrations for each subbasin==== The soil leakage is introduced into the model as inorganic and organic nitrogen, and soluble reactive phosphorus and particulate phosphorus concentrations of the total runoff. Different possibilities exist on how to introduce these regarding time variations (monthly seasonal variation, daily), spatial variations (subbasin, regions) and land use dependence (class groups). So far the only implemented alternative is the monthly seasonal variation. The nutrient concentration of total runoff (HYPE variable ID ''crun'') is set, and then used for all further calculations in the streams and lakes. ==== 2. Typical monthly load of excess nutrients for each class==== Soil leakage can be applied as monthly load of the excess nutrients and other substances from the soil. This load is given for each land class as typical monthly values. The load added to the class are transformed with processes depending on travel time to concentrations of the water leaving the soil as soil runoff or surface runoff or through other pathway. Simulation of water temperature (substance T2) can be combined with monthly load, but will not require load as input. The runoff T2 will be calculated from soil temperature as usual. The soil leakage as monthly load is not compatible with other soil models than the traveltime soilmodel, i.e. special class code 5. Lake and river classes can be used by the same model set-up, but not combined with floodplains. Special class code 3=glaciers can no be used. ==== 3. Monthly load of excess nutrients for each class==== Soil leakage can be applied as monthly load of the excess nutrients and other substances from the soil. This load is given for each land class as monthly time series. The load added to the class are transformed with processes depending on travel time to concentrations of the water leaving the soil as soil runoff or surface runoff or through other pathway. Simulation of water temperature (substance T2) can be combined with monthly load, but will not demand a monthly load. The runoff T2 will be calculated from soil temperature as usual. The soil leakage as monthly load is not compatible with other soil models than the traveltime soilmodel, i.e. special class code 5. Lake and river classes can be used by the same model set-up, but not combined with floodplains. Special class code 3=glaciers can no be used. ====4. Constant load and/or leakage for each class==== Constant load and/or leakage can be used for individual classes together with ordinary soil model classes. Depending on classmodel defined for each class, load- or a leak-indata files checked for and read for that class. Special classmodel 5 and 6 can be used for this method. It is also possible to use the classmodel for only a selection of substances simulated. The classmodels' soil leakage input and processes will then be used for the substances files are given for, while the rest are calculated with the ordinary model. ====5. Monthly load and/or leakage for each class==== Monthly load and/or leakage can be used for individual classes together with ordinary soil model classes. It has the same construction as constant load and/or leakage for each class (soil leakage model 4). The only difference is the columns with monthly values in the input files. ====The traveltime soilmodel==== The travel time soilmodel is the specialclass model 5. The travel time soilmodel calculate the concentration of runoff from soil from input of montly load of substances to the land surface and a decay model. This soil model is used instead of the ordinary HYPE equations for substance processes in the soil. The traveltime soilmodel (Hankin et al., 2019) will as default add the daily load to a pool on the surface of the land. The model will generate a release of dissolved substance from that pool. release = pool *(1-e^{-par*flow}) where //flow// is the current precipitation/snow melt (mm/ts). The general parameter //par// is different for the substances, e.g. ''inrelease''. The released substances will be added to the the surface runoff and to the soil water of the uppermost soil layer with a distribution based on the total surface runoff and infiltration flows. Alternatively the daily load will be distributed among the surface pool, and the dissolved pools in the soil layers. This distribution is determined by parameters, e.g. ''inloadf1'',''inloadf2'', etc. The parameters define the fraction for each soil layer and the rest is put in the surface pool. The load to the soil layers are directly put in the soil water. The model can be combined with diffuse rural load to the soil, but not with atmospheric deposition load or wet concentration. Atmospheric deposition input will be zeroed. Substances may be given a retention while in the soil. To simulate this an exponential decay equation is used. The process is goverened by a decay model parameter //decay//, which denote the half life of a substance having a certain travel time to the stream, that is the reference time of travel (totref). As default totref is one day. Exponential decay is applied to substances in soil water and in the soil surface pool (//subst//). The decay can be sped up or slowed down relative to the reference. The half life can be adjusted with other parameters relating to land use's time of travel (//tot1//), class dependent time of travel (//tot2//)), and soil layer/soil pool (//exp//, e.g. ''totexpsl1'', ''totexp0''). For instance could classes be divided according to distance from stream and the distance used to adjust the half life.. halflife = decay * (totref/tot)^exp subst = subst * 2 ^ {-ts/halflife} where //ts// is length of time step in days. //subst// is IN=inorganic nitrogen, ON=organic nitrogen, SP=soluble phosphorus, PP=particulate phosphorus, OC=organic carbon, SS=suspended substances, AE=algae nitrogen, DS=dissolved silica, AS=algae silica or T1=tracer. ==== Rootzone leakage soilmodel ==== The rootzone leakage soilmodel is the specialclass model 6. The rootzone leakage soil model requires three layers of the soil. The upper two soil layers are defined as the rootzone for this model. The rootzone leakage soil model accept the rootzone leakage concentration from input and simulates substance processes only for in the third soil layer. For the upper two soil layers, water processes are calculated. The input rootzone concentration are added to the flow leaving the rootzone, i.e. surface runoff, soil layer one and two groundwater runoff, and percolation from soil layer two to soil layer three. In addition the concentration of the soil layer one and two is set to the root zone leakage concentration. In the third soil layer a simpler formulation of the soil substance processes is used than for the standard HYPE. Here an exponential decay of the dissolved substances are assumed, with different decay rates for the substances. conc = conc * 2^{-ts/halflife} where conc is the concentration in the third soil layer, //halflife// is a general parameter (days) and //ts// is the timestep length (days). The rootzone leakage concentrations can be given as a constant for the class or as monthly varying values. The concentrations are given for each substance and class simulated with the model. No atmospheric deposition is added to this model, but a diffuse source as rural households are accepted. Irrigation can be used, but will not affect the substances. ==== Links to file reference ==== ^Section ^Symbol ^Parameter/Data ^File ^ |1. Monthly concentration| |//-//|[[start:hype_file_reference:leakagedata.txt|LeakageData.txt]]| |2. and 3. Monthly load or 4. and 5. Constant of monthly load| |//-//|[[start:hype_file_reference:loadNN_SLCNNN.txt|LoadNN_SLCNNN.txt]]| |:::|//par// |//inrelease, onrelease, sprelease, pprelease, ocrelease, ssrelease, aerelease, dsrelease, asrelease, t1release//|[[start:hype_file_reference:par.txt|par.txt]]| |:::|//// |//inload1f, inload2f, inload3f, onload1f, ..., t1load3f//|:::| |:::|//decay// |//indecay, ondecay, spdecay, ppdecay, ocdecay, ssdecay, aedecay, dsdecay,asdecay, t1decay//|:::| |:::|//totref// |//totref//|::: | |:::|//tot// |//tot1// or //tot2//| | |:::|//tot1// |//intimeot, ontimeot, sptimeot, pptimeot, octimeot, sstimeot, aetimeot, dstimeot, astimeot, t1timeot//|[[start:hype_file_reference:par.txt|par.txt]]| |:::|//tot2// |//traveltime//|[[start:hype_file_reference:classdata.txt|classdata.txt]]| |:::|//exp// |//totexp0, totexpsl1, totexpsl2, totexpsl3//|[[start:hype_file_reference:par.txt|par.txt]]| |4. and 5. Constant or monthly concentration| |//-//|[[start:hype_file_reference:leakNN_SLCNNN.txt|LeakNN_SLCNNN.txt]]| |:::|//halflife// |//indec3l, ondec3l, spdec3l, ppdec3l, ocdec3l, ssdec3l, aedec3l, dsdec3l, asdec3l, t1dec3l//|[[start:hype_file_reference:par.txt|par.txt]]| ==== Links to relevant procedures in the code ==== ^Modules (file) ^Procedures ^ |[[http://hype.sourceforge.net/doxy-html/namespacemodelmodule.html|modelmodule (model_hype.f90)]]|model| |[[http://hype.sourceforge.net/doxy-html/namespacedatamodule.html|datamodule (data.f90)]]|load_soilleakage_concentrations| |:::|load_permanent_soilleakage| |[[http://hype.sourceforge.net/doxy-html/namespacemodvar.html|modvar (modvar.f90)]]|get_current_soilleakage| |[[http://hype.sourceforge.net/doxy-html/namespacedefault__soilmodel.html|default_soilmodel (soilmodel0.f90)]]|soilmodel_0| |:::|update_rootzone_concentration| |:::|update_rootzone_model_concentration| |:::|set_model_for_substances| |:::|zero_rootzone_model_values| |[[http://hype.sourceforge.net/doxy-html/namespacesoilmodel__traveltime.html|soilmodel5 (soilmodel5.f90)]]|soilmodel_5| |:::|soil_traveltime_processes| |:::|decay_of_simplesubstance| |:::|decay_of_simplesubstance_sorbedphase| |:::|left_after_decay| |:::|release_from_pool| |:::|distribute_soil_load| |[[http://hype.sourceforge.net/doxy-html/namespacenpc__soil__processes.html|npc_soil_processes (npc_soil_proc.f90)]]|soil_substance_processes_of_third_soillayer9| ===== References ===== Eckersten, H., P.-E. Jansson, and H. Johnsson 1994. SOILN model – user’s manual 2nd edition, Division of Agricultural Hydrotechnics Communications 94:4, Department of Soil Sciences, Swedish University of AgriculturalSciences, 58pp, Uppsala. Hankin, B., Strömqvist, J., Burgess, C., Pers, C., Bielby, S., Revilla-Romero, B., and L. Pope, 2019. A New National Water Quality Model to Evaluate the Effectiveness of Catchment Management Measures in England. Water 2019, 11, 1612. DOI: 10.3390/w11081612