public void AQTVolume_Check_Data_Requirements() { string path = System.Environment.CurrentDirectory; string path2 = path + "../../../../../AQUATOX/DOCS/AQUATOX_Volume_Model_Valid_JSON.txt"; string json = File.ReadAllText(path2); string errmsg = ""; AQTVolumeModel AQTM = new AQTVolumeModel(ref json, ref errmsg, false); errmsg = AQTM.CheckDataRequirements(); Assert.AreEqual("", errmsg); path2 = path + "../../../../../AQUATOX/TEST/AQUATOX_NOSV_Volume_JSON.txt"; json = File.ReadAllText(path2); errmsg = ""; AQTM = new AQTVolumeModel(ref json, ref errmsg, false); errmsg = AQTM.CheckDataRequirements(); Assert.AreNotEqual("", errmsg); path2 = path + "../../../../../AQUATOX/TEST/AQUATOX_NoLocale_JSON.txt"; json = File.ReadAllText(path2); errmsg = ""; AQTM = new AQTVolumeModel(ref json, ref errmsg, false); errmsg = AQTM.CheckDataRequirements(); Assert.AreNotEqual("", errmsg); }
/// <summary> /// Checks for data requirements for an AQTNutrientsModel including state variable requirements and parameter values. /// </summary> /// <returns>string: Error message that is non blank if the simulation json structure does not have the required data </returns> public string CheckDataRequirements() { AQTVolumeModel AQTVM = new AQTVolumeModel(AQSim); string checkvol = AQTVM.CheckDataRequirements(); if (checkvol != "") { return(checkvol); } TO2Obj TO2 = (TO2Obj)AQSim.AQTSeg.GetStatePointer(AllVariables.Oxygen, T_SVType.StV, T_SVLayer.WaterCol); if (TO2 == null) { return("An Oxygen state variable or driving variable must be included in the simulation. "); } TNH4Obj PNH4 = (TNH4Obj)AQSim.AQTSeg.GetStatePointer(AllVariables.Ammonia, T_SVType.StV, T_SVLayer.WaterCol); TNO3Obj PNO3 = (TNO3Obj)AQSim.AQTSeg.GetStatePointer(AllVariables.Nitrate, T_SVType.StV, T_SVLayer.WaterCol); TPO4Obj PPO4 = (TPO4Obj)AQSim.AQTSeg.GetStatePointer(AllVariables.Phosphate, T_SVType.StV, T_SVLayer.WaterCol); if ((PNH4 == null) && (PPO4 == null) && (TO2 == null)) { return("Either phosphorus (TPO4Obj) or nitrogen (TNH4Obj and TNO3Obj) or Oxygen (TO2Obj) must be included in a nutrients simulation."); } if (((PNH4 != null) && (PNO3 == null)) || ((PNH4 == null) && (PNO3 != null))) { return("To model nitrogen both ammonia and nitrate (TNH4Obj and TNO3Obj) must be included."); } TTemperature TTemp = (TTemperature)AQSim.AQTSeg.GetStatePointer(AllVariables.Temperature, T_SVType.StV, T_SVLayer.WaterCol); if (TTemp == null) { return("A Temperature state variable or driving variable must be included in the simulation. "); } TpHObj TpH = (TpHObj)AQSim.AQTSeg.GetStatePointer(AllVariables.pH, T_SVType.StV, T_SVLayer.WaterCol); if ((!TpH.UseLoadsRecAsDriver) && (TpH.LoadsRec.Loadings.NoUserLoad)) // pH calculation, not a driving variable, check pH model data requirements { TCO2Obj TCO2 = (TCO2Obj)AQSim.AQTSeg.GetStatePointer(AllVariables.CO2, T_SVType.StV, T_SVLayer.WaterCol); if (TCO2 == null) { return("A CO2 state variable or driving variable must be included in the simulation to calculate pH. "); } } return(""); }
/// <summary> /// Checks for data requirements for an AQTOrganicMatter including state variable requirements and parameter values. /// </summary> /// <returns>string: Error message that is non blank if the simulation json structure does not have the required data </returns> public string CheckDataRequirements() { AQTVolumeModel AQTVM = new AQTVolumeModel(AQSim); string checkvol = AQTVM.CheckDataRequirements(); if (checkvol != "") { return(checkvol); } TDissRefrDetr PDRD = (TDissRefrDetr)AQSim.AQTSeg.GetStatePointer(AllVariables.DissRefrDetr, T_SVType.StV, T_SVLayer.WaterCol); TDissLabDetr PDLD = (TDissLabDetr)AQSim.AQTSeg.GetStatePointer(AllVariables.DissLabDetr, T_SVType.StV, T_SVLayer.WaterCol); TSuspRefrDetr PSRD = (TSuspRefrDetr)AQSim.AQTSeg.GetStatePointer(AllVariables.SuspRefrDetr, T_SVType.StV, T_SVLayer.WaterCol); TSuspLabDetr PSLD = (TSuspLabDetr)AQSim.AQTSeg.GetStatePointer(AllVariables.SuspLabDetr, T_SVType.StV, T_SVLayer.WaterCol); TSedRefrDetr PSdRD = (TSedRefrDetr)AQSim.AQTSeg.GetStatePointer(AllVariables.SedmRefrDetr, T_SVType.StV, T_SVLayer.WaterCol); TSedLabileDetr PSdLD = (TSedLabileDetr)AQSim.AQTSeg.GetStatePointer(AllVariables.SedmLabDetr, T_SVType.StV, T_SVLayer.WaterCol); if ((PDRD == null) || (PDLD == null) || (PSRD == null) || (PSLD == null) || (PSdRD == null) || (PSdLD == null)) { return("All six organic matter state variables must be included in an organic-matter simulation."); } TpHObj PpH = (TpHObj)AQSim.AQTSeg.GetStatePointer(AllVariables.pH, T_SVType.StV, T_SVLayer.WaterCol); if ((PpH == null)) { return("A pH state variable (or driving variable) must be included in an organic-matter simulation."); } TO2Obj PO2 = (TO2Obj)AQSim.AQTSeg.GetStatePointer(AllVariables.Oxygen, T_SVType.StV, T_SVLayer.WaterCol); if ((PO2 == null)) { return("An oxygen state variable (or driving variable) must be included in an organic-matter simulation."); } return(""); }