コード例 #1
0
        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);
        }
コード例 #2
0
        /// <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("");
        }
コード例 #3
0
ファイル: AQTOrganicMatter.cs プロジェクト: quanted/hms
        /// <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("");
        }
コード例 #4
0
        public void AQTVolume_Verify_Runnable()
        {
            string path   = System.Environment.CurrentDirectory;
            string path2  = path + "../../../../../AQUATOX/TEST/AQUATOX_Model_NoSV_JSON.txt";
            string json   = File.ReadAllText(path2);
            string errmsg = "";

            AQTVolumeModel AQTM = new AQTVolumeModel(ref json, ref errmsg, false);

            errmsg = AQTM.AQSim.AQTSeg.Verify_Runnable();

            Assert.AreNotEqual("", errmsg);

            path2  = path + "../../../../../AQUATOX/TEST/AQUATOX_Model_NoPSETUP_JSON.txt";
            json   = File.ReadAllText(path2);
            errmsg = "";

            AQTM   = new AQTVolumeModel(ref json, ref errmsg, false);
            errmsg = AQTM.AQSim.AQTSeg.Verify_Runnable();

            Assert.AreNotEqual("", errmsg);
        }