bool OwScripterDlg::LoadS(String path)
{
FileIn iFile(path);
if(!iFile.IsOpen())
{
return false;
}
int len = (int)iFile.GetSize();
Buffer<char> pBuf;
pBuf.Alloc(len);
iFile.GetAll(pBuf,len);
iFile.Close();
String xml = ~pBuf;
XmlNode xn = ParseXML(xml);
OwScript script;
int n = xn["OpenWindScript"]["AllOperations"].GetCount(); // gets subtags of OpenWind
script.m_sPath = xn["OpenWindScript"]["ReportPath"].Attr("value");
script.m_bAfter = xn["OpenWindScript"]["AppendOperations"].Attr("value")!="Sideways";
script.m_bArray = xn["OpenWindScript"]["ArrayEfficiencyField"].Attr("value")=="true";
script.m_bFreeWS = xn["OpenWindScript"]["FreeWindspeedField"].Attr("value")=="true";
script.m_bGross = xn["OpenWindScript"]["GrossEnergyField"].Attr("value")=="true";
script.m_bMeanWS = xn["OpenWindScript"]["MeanWindspeedField"].Attr("value")=="true";
script.m_bNet = xn["OpenWindScript"]["NetEnergyField"].Attr("value")=="true";
script.m_bSite = xn["OpenWindScript"]["SiteNameField"].Attr("value")=="true";
script.m_bTI = xn["OpenWindScript"]["TurbulenceTotalField"].Attr("value")=="true";
script.m_bTT = xn["OpenWindScript"]["TurbineTypeField"].Attr("value")=="true";
script.m_bLabel = xn["OpenWindScript"]["TurbineLabelField"].Attr("value")=="true";
script.m_bIndex = xn["OpenWindScript"]["TurbineIndexField"].Attr("value")=="true";
script.m_bTX = xn["OpenWindScript"]["TurbineXField"].Attr("value")=="true";
script.m_bTY = xn["OpenWindScript"]["TurbineYField"].Attr("value")=="true";
script.m_bTI15 = xn["OpenWindScript"]["TI15"].Attr("value")=="true";
script.m_bAmbientTI = xn["OpenWindScript"]["AmbientTI"].Attr("value")=="true";
script.m_bArrayEnergy = xn["OpenWindScript"]["ArrayEnergyField"].Attr("value")=="true";
script.m_ops.SetCount(n);
for(int i=0;i<n;i++)
{
String type = xn["OpenWindScript"]["AllOperations"][i]["Type"].Attr("value");
if(type=="Energy Capture")
{
script.m_ops[i].op = OP_EC;
script.m_ops[i].ec.uMin = atof(xn["OpenWindScript"]["AllOperations"][i]["Umin"].Attr("value"));
script.m_ops[i].ec.uMax = atof(xn["OpenWindScript"]["AllOperations"][i]["Umax"].Attr("value"));
script.m_ops[i].ec.uStep = atof(xn["OpenWindScript"]["AllOperations"][i]["Ustep"].Attr("value"));
script.m_ops[i].ec.SetWake(xn["OpenWindScript"]["AllOperations"][i]["WakeModel"].Attr("value"));
script.m_ops[i].ec.m_nDirs = int(atof(xn["OpenWindScript"]["AllOperations"][i]["TotalDirections"].Attr("value")));
script.m_ops[i].ec.SetFirstStep(int(atof(xn["OpenWindScript"]["AllOperations"][i]["FirstDirection"].Attr("value"))));
script.m_ops[i].ec.SetLastStep(int(atof(xn["OpenWindScript"]["AllOperations"][i]["LastDirection"].Attr("value"))));
script.m_ops[i].ec.m_fDirOffset = atof(xn["OpenWindScript"]["AllOperations"][i]["DirectionOffset"].Attr("value"));
script.m_ops[i].ec.SetOnly1sector((script.m_ops[i].ec.GetLastStep()!=script.m_ops[i].ec.m_nDirs-1 || script.m_ops[i].ec.GetFirstStep()!=0));
script.m_ops[i].ec.SetPXX(max(50.0,atof(xn["OpenWindScript"]["AllOperations"][i]["Pxx"].Attr("value"))));
script.m_ops[i].ec.m_bTI = true;
}
else if(type=="Change Workbook")
{
script.m_ops[i].op = OP_BLB;
script.m_ops[i].path = xn["OpenWindScript"]["AllOperations"][i]["Path"].Attr("value");
}
else if(type=="Global Parameters")
{
script.m_ops[i].op = OP_GLOBALS;
script.m_ops[i].globals.SetAdjustToTrueNorth(bool(atof(xn["OpenWindScript"]["AllOperations"][i]["AdjustToNorth"].Attr("value"))));
script.m_ops[i].globals.SetAirDensityLapseRate(atof(xn["OpenWindScript"]["AllOperations"][i]["AirDensityLapseRate"].Attr("value")));
if(xn["OpenWindScript"]["AllOperations"][i].FindTag("SetAirDensityLapseRate"))
{
if(int(atof(xn["OpenWindScript"]["AllOperations"][i]["SetAirDensityLapseRate"].Attr("value"))))
script.m_ops[i].globals.SetAirDensityLapseRate();
else
script.m_ops[i].globals.SetTemperatureLapseRate();
}
script.m_ops[i].globals.SetTemperatureLapseRate(atof(xn["OpenWindScript"]["AllOperations"][i]["TemperatureLapseRate"].Attr("value")));
script.m_ops[i].globals.SetDefaultTI(atof(xn["OpenWindScript"]["AllOperations"][i]["DefaultTurbulenceIntensity"].Attr("value")));
}
else if(type=="Time-Series Energy Capture")
{
int year,day,month,hour,minute;
script.m_ops[i].op = OP_ECTS;
script.m_ops[i].ec.SetTimeSeries();
script.m_ops[i].ec.m_nDirs = atoi(xn["OpenWindScript"]["AllOperations"][i]["TotalDirections"].Attr("value"));
script.m_ops[i].ec.SetWake(xn["OpenWindScript"]["AllOperations"][i]["WakeModel"].Attr("value"));
script.m_ops[i].ec.uStep = atof(xn["OpenWindScript"]["AllOperations"][i]["Ustep"].Attr("value"));
year = atoi(xn["OpenWindScript"]["AllOperations"][i]["StartYear"].Attr("value"));
month = atoi(xn["OpenWindScript"]["AllOperations"][i]["StartMonth"].Attr("value"));
day = atoi(xn["OpenWindScript"]["AllOperations"][i]["StartDay"].Attr("value"));
hour = atoi(xn["OpenWindScript"]["AllOperations"][i]["StartHour"].Attr("value"));
minute = atoi(xn["OpenWindScript"]["AllOperations"][i]["StartMinute"].Attr("value"));
script.m_ops[i].ec.SetStart(Time(year,month,day,hour,minute,0));
year = atoi(xn["OpenWindScript"]["AllOperations"][i]["EndYear"].Attr("value"));
month = atoi(xn["OpenWindScript"]["AllOperations"][i]["EndMonth"].Attr("value"));
day = atoi(xn["OpenWindScript"]["AllOperations"][i]["EndDay"].Attr("value"));
hour = atoi(xn["OpenWindScript"]["AllOperations"][i]["EndHour"].Attr("value"));
minute = atoi(xn["OpenWindScript"]["AllOperations"][i]["EndMinute"].Attr("value"));
script.m_ops[i].ec.SetStop(Time(year,month,day,hour,minute,0));
script.m_ops[i].ec.SetInterval(atoi(xn["OpenWindScript"]["AllOperations"][i]["IntervalSeconds"].Attr("value")));
script.m_ops[i].ec.SetScaleToYear(atoi(xn["OpenWindScript"]["AllOperations"][i]["ScaleToYear"].Attr("value"))!=0);
script.m_ops[i].ec.SetTimeSeriesTI(atoi(xn["OpenWindScript"]["AllOperations"][i]["TurbulenceIntensity"].Attr("value"))!=0);
script.m_ops[i].ec.SetTempShutdown(atoi(xn["OpenWindScript"]["AllOperations"][i]["TemperatureShutdown"].Attr("value"))!=0);
script.m_ops[i].ec.SetAirDensity(atoi(xn["OpenWindScript"]["AllOperations"][i]["AirDensity"].Attr("value"))!=0);
script.m_ops[i].ec.m_fDirOffset = atof(xn["OpenWindScript"]["AllOperations"][i]["DirectionOffset"].Attr("value"));
script.m_ops[i].ec.m_bTI = true;
}
else if(type=="Replace Met Data")
{
script.m_ops[i].op = OP_METDATA;
script.m_ops[i].path = xn["OpenWindScript"]["AllOperations"][i]["Path"].Attr("value");
}
else if(type=="OCOE")
{
script.m_ops[i].op = OP_OCOE;
}
else if(type=="OCOE Test")
{
script.m_ops[i].op = OP_OCOE_EC;
}
else if(type=="Optimise")
{
script.m_ops[i].op = OP_OPTIMISE;
}
else if(type=="Site Properties")
{
script.m_ops[i].op = OP_SITEPROP;
script.m_ops[i].sName = xn["OpenWindScript"]["AllOperations"][i]["SiteName"].Attr("value");
script.m_ops[i].bEnable = atoi(xn["OpenWindScript"]["AllOperations"][i]["Enable"].Attr("value"))!=0;
script.m_ops[i].bFixed = atoi(xn["OpenWindScript"]["AllOperations"][i]["Fixed"].Attr("value"))!=0;
script.m_ops[i].bGrow = atoi(xn["OpenWindScript"]["AllOperations"][i]["Grow"].Attr("value"))!=0;
script.m_ops[i].bOptimise = atoi(xn["OpenWindScript"]["AllOperations"][i]["IncludeInOptimiser"].Attr("value"))!=0;
script.m_ops[i].bSwitch = atoi(xn["OpenWindScript"]["AllOperations"][i]["SetTurbineType"].Attr("value"))!=0;
script.m_ops[i].sType = xn["OpenWindScript"]["AllOperations"][i]["TurbineType"].Attr("value");
}
else if(type=="Exit")
{
script.m_ops[i].op = OP_EXIT;
}
else if(type=="Replace Turbine Type")
{
script.m_ops[i].op = OP_TURBINE;
script.m_ops[i].sType = xn["OpenWindScript"]["AllOperations"][i]["TurbineName"].Attr("value");
script.m_ops[i].path = xn["OpenWindScript"]["AllOperations"][i]["TurbinePath"].Attr("value");
}
}
Set(script);
return true;
}