//package org.jgrasstools.hortonmachine.models.hm; // //import java.io.File; //import java.net.URL; //import java.util.HashMap; //import java.util.List; // //import org.geotools.data.simple.SimpleFeatureCollection; //import org.jgrasstools.gears.io.eicalculator.EIAreas; //import org.jgrasstools.gears.io.eicalculator.OmsEIAreasReader; //import org.jgrasstools.gears.io.eicalculator.EIEnergy; //import org.jgrasstools.gears.io.eicalculator.OmsEIEnergyReader; //import org.jgrasstools.gears.io.generic.OmsId2ValueArrayReader; //import org.jgrasstools.gears.io.shapefile.OmsShapefileFeatureReader; //import org.jgrasstools.gears.io.timedependent.OmsTimeSeriesIteratorReader; //import org.jgrasstools.gears.io.timedependent.OmsTimeSeriesIteratorWriter; //import org.jgrasstools.gears.libs.monitor.PrintStreamProgressMonitor; //import org.jgrasstools.hortonmachine.modules.hydrogeomorphology.energybalance.OmsEnergyBalance; //import org.jgrasstools.hortonmachine.utils.HMTestCase; ///** // * Test OmsEnergyBalance. // * // * @author Andrea Antonello (www.hydrologis.com) // */ //public class TestEnergyBalance extends HMTestCase { // // public void testEnergyBalance() throws Exception { // // PrintStreamProgressMonitor pm = new PrintStreamProgressMonitor(System.out, System.out); // // URL areasUrl = this.getClass().getClassLoader().getResource("eicalculator_out_areas.csv"); // URL energyUrl = this.getClass().getClassLoader().getResource("eicalculator_out_energy.csv"); // // URL rainUrl = this.getClass().getClassLoader().getResource("energybalance_in_data_rain.csv"); // // URL tempUrl = this.getClass().getClassLoader().getResource("energybalance_in_data_temperature.csv"); // URL windUrl = this.getClass().getClassLoader().getResource("energybalance_in_data_windspeed.csv"); // URL pressureUrl = this.getClass().getClassLoader().getResource("energybalance_in_data_pressure.csv"); // URL humidityUrl = this.getClass().getClassLoader().getResource("energybalance_in_data_humidity.csv"); // URL dtdayUrl = this.getClass().getClassLoader().getResource("energybalance_in_data_dtday.csv"); // URL dtmonthUrl = this.getClass().getClassLoader().getResource("energybalance_in_data_dtmonth.csv"); // // URL basinsUrl = this.getClass().getClassLoader().getResource("jami_in_basins.shp"); // // OmsEIAreasReader areas = new OmsEIAreasReader(); // File areaFile = new File(areasUrl.toURI()); // areas.file = areaFile.getAbsolutePath(); // areas.pSeparator = "\\s+"; // areas.pm = pm; // areas.read(); // List<EIAreas> areasList = areas.outAreas; // areas.close(); // // OmsEIEnergyReader energy = new OmsEIEnergyReader(); // energy.file = new File(energyUrl.toURI()).getAbsolutePath(); // energy.pSeparator = "\\s+"; // energy.pm = pm; // energy.read(); // List<EIEnergy> energyList = energy.outEnergy; // energy.close(); // // OmsShapefileFeatureReader basinsReader = new OmsShapefileFeatureReader(); // basinsReader.file = new File(basinsUrl.toURI()).getAbsolutePath(); // basinsReader.readFeatureCollection(); // SimpleFeatureCollection basinsFC = basinsReader.geodata; // // OmsTimeSeriesIteratorReader rainReader = new OmsTimeSeriesIteratorReader(); // rainReader.file = new File(rainUrl.toURI()).getAbsolutePath(); // rainReader.idfield = "ID"; // rainReader.tStart = "2000-01-01 00:00"; // rainReader.tTimestep = 60; // // reader.tEnd = "2000-01-01 00:00"; // rainReader.fileNovalue = "-9999"; // rainReader.initProcess(); // // OmsId2ValueArrayReader tempReader = new OmsId2ValueArrayReader(); // tempReader.file = new File(tempUrl.toURI()).getAbsolutePath(); // tempReader.pCols = 5; // tempReader.pSeparator = "\\s+"; // tempReader.fileNovalue = "-9999.0"; // // OmsId2ValueArrayReader pressureReader = new OmsId2ValueArrayReader(); // pressureReader.file = new File(pressureUrl.toURI()).getAbsolutePath(); // pressureReader.pCols = 5; // pressureReader.pSeparator = "\\s+"; // pressureReader.fileNovalue = "-9999.0"; // // OmsId2ValueArrayReader humidityReader = new OmsId2ValueArrayReader(); // humidityReader.file = new File(humidityUrl.toURI()).getAbsolutePath(); // humidityReader.pCols = 5; // humidityReader.pSeparator = "\\s+"; // humidityReader.fileNovalue = "-9999.0"; // // OmsId2ValueArrayReader windReader = new OmsId2ValueArrayReader(); // windReader.file = new File(windUrl.toURI()).getAbsolutePath(); // windReader.pCols = 5; // windReader.pSeparator = "\\s+"; // windReader.fileNovalue = "-9999.0"; // // OmsId2ValueArrayReader dtdayReader = new OmsId2ValueArrayReader(); // dtdayReader.file = new File(dtdayUrl.toURI()).getAbsolutePath(); // dtdayReader.pCols = 5; // dtdayReader.pSeparator = "\\s+"; // dtdayReader.fileNovalue = "-9999.0"; // // OmsId2ValueArrayReader dtmonthReader = new OmsId2ValueArrayReader(); // dtmonthReader.file = new File(dtmonthUrl.toURI()).getAbsolutePath(); // dtmonthReader.pCols = 5; // dtmonthReader.pSeparator = "\\s+"; // dtmonthReader.fileNovalue = "-9999.0"; // // OmsEnergyBalance energyBalance = new OmsEnergyBalance(); // energyBalance.pm = pm; // energyBalance.inBasins = basinsFC; // energyBalance.inEnergy = energyList; // energyBalance.inAreas = areasList; // energyBalance.fBasinid = "netnum"; // energyBalance.fBasinlandcover = "uso_reclas"; // energyBalance.pInitswe = 500; // energyBalance.pGlacierid = 15; // // energyBalance.pSnowrefv = 0.95; // energyBalance.tTimestep = rainReader.tTimestep; // // File pnetFile = new File(areaFile.getParentFile(), "energybalance_out_pnet.csv"); // pnetFile = classesTestFile2srcTestResourcesFile(pnetFile); // OmsTimeSeriesIteratorWriter pnetWriter = new OmsTimeSeriesIteratorWriter(); // pnetWriter.file = pnetFile.getAbsolutePath(); // pnetWriter.tStart = rainReader.tStart; // pnetWriter.tTimestep = rainReader.tTimestep; // // while( rainReader.doProcess ) { // rainReader.nextRecord(); // HashMap<Integer, double[]> id2ValueMap = rainReader.outFolder; // energyBalance.inRain = id2ValueMap; // // tempReader.readNextLine(); // HashMap<Integer, double[]> id2ValueArrayMap = tempReader.data; // energyBalance.inTemp = id2ValueArrayMap; // // windReader.readNextLine(); // id2ValueArrayMap = windReader.data; // energyBalance.inWind = id2ValueArrayMap; // // pressureReader.readNextLine(); // id2ValueArrayMap = pressureReader.data; // energyBalance.inPressure = id2ValueArrayMap; // // humidityReader.readNextLine(); // id2ValueArrayMap = humidityReader.data; // energyBalance.inRh = id2ValueArrayMap; // // dtdayReader.readNextLine(); // id2ValueArrayMap = dtdayReader.data; // energyBalance.inDtday = id2ValueArrayMap; // // dtmonthReader.readNextLine(); // id2ValueArrayMap = dtmonthReader.data; // energyBalance.inDtmonth = id2ValueArrayMap; // // energyBalance.tCurrent = rainReader.tCurrent; // energyBalance.process(); // // HashMap<Integer, double[]> pnet = energyBalance.outPnet; // HashMap<Integer, double[]> prain = energyBalance.outPrain; // HashMap<Integer, double[]> psnow = energyBalance.outPsnow; // // pnetWriter.inData = prain; // pnetWriter.writeNextLine(); // // } // rainReader.close(); // // tempReader.close(); // pressureReader.close(); // windReader.close(); // humidityReader.close(); // dtdayReader.close(); // dtmonthReader.close(); // // pnetWriter.close(); // // // double[] result1221 = new double[]{9.925938910342381, 8.1, 7.561630032493953, // // 5.86663426553045, 3.4220912542795046}; // // // // for( int i = 0; i < result1221.length; i++ ) { // // assertEquals(result1221[i], values1221[i], 0.0001); // // } // // if (!pnetFile.delete()) { // pnetFile.deleteOnExit(); // } // // } // // private double[] expectedPnet = new double[]{699.0, 0.0, 1065.0, 0.0, 1210.0, 0.0, 762.0, 0.0, 626.0, 0.0, 623.0, 0.0, 616.0, // 0.0, 944.0, 0.0, 1209.0, 0.0, 1039.0, 0.0, 624.0, 0.0, 1097.0, 0.0, 1212.0, 0.0, 1263.0, 0.0, 629.0, 0.0, 1104.0, // 0.0, 621.0, 0.0, 1179.0, 0.0, 1042.0, 0.0, 613.0, 0.0, 946.0, 0.0, 693.0, 0.0, 763.0, 0.0, 769.0, 0.0, 1292.0, 0.0, // 618.0, 0.0, 1068.0, 0.0, 615.0, 0.0, 630.0, 0.0, 961.0, 0.0, 617.0, 0.0, 627.0, 0.0, 625.0, 0.0, 1211.0, 0.0, 1221.0, // 0.0, 1064.0, 0.0, 619.0, 0.0, 1041.0, 0.0, 1202.0, 0.0, 841.0, 0.0, 1040.0, 0.0, 1069.0, 0.0, 1260.0, 0.0, 1242.0, // 0.0, 622.0, 0.0, 1291.0, 0.0, 1070.0, 0.0, 620.0, 0.0, 1075.0, 0.0, 1066.0, 0.0, 628.0, 0.0, 1105.0, 0.0, 945.0, 0.0, // 614.0, 0.0, 970.0, 0.0}; // private double[] expectedPrain = new double[]{699.0, 0.1454180460051585, 1065.0, 0.14999999760693658, 1210.0, // 0.23190963611777973, 762.0, 0.2972437781933401, 626.0, 0.14999999500822495, 623.0, 0.14999999564750602, 616.0, // 0.29974445956392226, 944.0, 0.24999999116857943, 1209.0, 0.20843756700693264, 1039.0, 0.2046855716152388, 624.0, // 0.14997390897836843, 1097.0, 0.14993486689479696, 1212.0, 0.24256385305908343, 1263.0, 0.2442336421296105, 629.0, // 0.14999999820645707, 1104.0, 0.14999999806845538, 621.0, 0.14999999440686618, 1179.0, 0.14997921950545054, 1042.0, // 0.15008797554452888, 613.0, 0.29764065702174186, 946.0, 0.29999999713668396, 693.0, 0.285995906054635, 763.0, // 0.2999999966009149, 769.0, 0.14982853690272288, 1292.0, 0.14999999525968377, 618.0, 0.2999057459276908, 1068.0, // 0.2063624744985185, 615.0, 0.29955312661787636, 630.0, 0.15003825036919352, 961.0, 0.14999999555508045, 617.0, // 0.249999988359043, 627.0, 0.14994771192193923, 625.0, 0.1499999952331639, 1211.0, 0.25384614779184755, 1221.0, // 0.14999999615251092, 1064.0, 0.14999999927172133, 619.0, 0.1499999985664037, 1041.0, 0.14773406320776558, 1202.0, // 0.14997890273328196, 841.0, 0.2999479041662106, 1040.0, 0.1500000009061293, 1069.0, 0.2499999928695707, 1260.0, // 0.14999999950137963, 1242.0, 0.15000000222012597, 622.0, 0.14999999497489233, 1291.0, 0.1499748491180227, 1070.0, // 0.24999999222422858, 620.0, 0.14997830946474452, 1075.0, 0.14994904177153595, 1066.0, 0.15020407797302815, 628.0, // 0.1499999975559162, 1105.0, 0.1499805447102739, 945.0, 0.24942877310354855, 614.0, 0.2760015917709732, 970.0, // 0.22512322172103927}; // private double[] expectedPSnow = new double[]{699.0, 0.004581945735074934, 1065.0, 0.0, 1210.0, 0.018025491089557658, 762.0, // 0.0027562177310753466, 626.0, 0.0, 623.0, 0.0, 616.0, 0.0, 944.0, 0.0, 1209.0, 0.0415015727199312, 1039.0, // 0.04531442069636117, 624.0, 0.0, 1097.0, 0.0, 1212.0, 0.007436140804802122, 1263.0, 0.005766353985273886, 629.0, 0.0, // 1104.0, 0.0, 621.0, 0.0, 1179.0, 0.0, 1042.0, 0.0, 613.0, 0.0023593381768641287, 946.0, 0.0, 693.0, // 0.013924429209936248, 763.0, 0.0, 769.0, 1.714554984036082E-4, 1292.0, 0.0, 618.0, 0.0, 1068.0, 0.04363751926076958, // 615.0, 4.468691949822926E-4, 630.0, 0.0, 961.0, 0.0, 617.0, 0.0, 627.0, 0.0, 625.0, 0.0, 1211.0, 0.0, 1221.0, 0.0, // 1064.0, 0.0, 619.0, 0.0, 1041.0, 0.0022773621234270292, 1202.0, 0.0, 841.0, 0.0, 1040.0, 0.0, 1069.0, 0.0, 1260.0, // 0.0, 1242.0, 0.0, 622.0, 0.0, 1291.0, 0.0, 1070.0, 0.0, 620.0, 0.0, 1075.0, 0.0, 1066.0, 0.0, 628.0, 0.0, 1105.0, // 0.0, 945.0, 5.712168815597725E-4, 614.0, 0.023848027492350717, 970.0, 0.02487676985069746}; // //}