Skip to content

Commit

Permalink
fix(Schedule): fix schedule type with a constant value
Browse files Browse the repository at this point in the history
  • Loading branch information
MingboPeng committed May 29, 2023
1 parent 6e807e1 commit 959c2c8
Show file tree
Hide file tree
Showing 3 changed files with 92 additions and 31 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,6 @@ protected override void RegisterOutputParams(GH_Component.GH_OutputParamManager

protected override void SolveInstance(IGH_DataAccess DA)
{

var attributes = HVAC.Schedules.IB_ScheduleRuleset_FieldSet.Value;
var objAttris = new Dictionary<IB_Field, object>() { };
var name = string.Empty;
Expand All @@ -44,7 +43,7 @@ protected override void SolveInstance(IGH_DataAccess DA)
objAttris.Add(attributes.Name, name);
}


var ghObjs = new List<GH_ObjectWrapper>();
DA.GetDataList(1, ghObjs);
var sch = new HVAC.Schedules.IB_ScheduleRuleset();
Expand All @@ -55,17 +54,15 @@ protected override void SolveInstance(IGH_DataAccess DA)
if (values.Count == 1)
{
sch = new HVAC.Schedules.IB_ScheduleRuleset(values[0]);
sch.SetFieldValues(objAttris);
DA.SetData(0, sch);
return;
}
else
{
if (values.Count != 24) AddRuntimeMessage(GH_RuntimeMessageLevel.Error, "Need 24 valves");
var day = new HVAC.Schedules.IB_ScheduleDay(values);
var schRule = new HVAC.Schedules.IB_ScheduleRule(day);

if (values.Count != 24) AddRuntimeMessage(GH_RuntimeMessageLevel.Error, "Need 24 valves");
var day = new HVAC.Schedules.IB_ScheduleDay(values);
var schRule = new HVAC.Schedules.IB_ScheduleRule(day);

sch.Rules.Add(schRule);

sch.Rules.Add(schRule);
}
}
else if (ghObjs[0].Value is HVAC.Schedules.IB_ScheduleRule)
{
Expand All @@ -87,6 +84,7 @@ protected override void SolveInstance(IGH_DataAccess DA)

sch.SetFieldValues(objAttris);
DA.SetData(0, sch);

}

protected override System.Drawing.Bitmap Icon => Properties.Resources.Schedule;
Expand Down
45 changes: 25 additions & 20 deletions src/Ironbug.HVAC/Schedules/IB_ScheduleRuleset.cs
Original file line number Diff line number Diff line change
Expand Up @@ -84,35 +84,40 @@ public override ModelObject ToOS(Model model)
else
{
obj = new ScheduleRuleset(model);
name = name.StartsWith("Constant Temperature") ? name : $"Constant value {this.constantNumber}";
//name = name.StartsWith("Constant Temperature") ? name : $"Constant value {this.constantNumber}";
var defaultDay = obj.defaultDaySchedule();
defaultDay.addValue(new Time(0, 24), this.constantNumber);


//Check Schedule type
var optionalType = model.getScheduleTypeLimitsByName($"Dimensionless max {Math.Round(constantNumber) + 1}");
if (optionalType.isNull())
if (this.ScheduleTypeLimits == null)
{
var type = new ScheduleTypeLimits(model);
type.setUnitType("Dimensionless");
type.setNumericType("Continuous");
type.setName($"Dimensionless max {Math.Round(constantNumber) + 1}");
type.setLowerLimitValue(0);
type.setUpperLimitValue(Math.Round(constantNumber) + 1);
obj.setScheduleTypeLimits(type);
// create a new default dimensionless ScheduleTypeLimits
var optionalType = model.getScheduleTypeLimitsByName($"Dimensionless max {Math.Round(constantNumber) + 1}");
if (optionalType.isNull()) // create a new one
{

var type = new ScheduleTypeLimits(model);
type.setUnitType("Dimensionless");
type.setNumericType("Continuous");
type.setName($"Dimensionless max {Math.Round(constantNumber) + 1}");
type.setLowerLimitValue(0);
type.setUpperLimitValue(Math.Round(constantNumber) + 1);
obj.setScheduleTypeLimits(type);
}
else // use the previously created one
{
obj.setScheduleTypeLimits(optionalType.get());
}

}
else
else // reset the type limits so that it can apply a new one later
{
obj.setScheduleTypeLimits(optionalType.get());
obj.resetScheduleTypeLimits();
}


defaultDay.addValue(new Time(0, 24), this.constantNumber);

}

//obj = new ScheduleRuleset(model);



//obj.setName(name);
}

if (this.ScheduleTypeLimits != null)
Expand Down
58 changes: 58 additions & 0 deletions src/Ironbug.HVAC_Tests/HVACComponentsTest.cs
Original file line number Diff line number Diff line change
Expand Up @@ -154,5 +154,63 @@ public void IB_Schedule24Hrs()
Assert.True(saved);
}

[Test]
public void IB_ScheduleType()
{

try
{
// create an availability schedule
var sch = new HVAC.Schedules.IB_ScheduleRuleset();

var values = new List<double>()
{
0.1,0,0,0,0,0,0,0.2,0.5,1,2,2,2,1,1,1,1,0.2,0,0,0,0,0,0
};
var day = new HVAC.Schedules.IB_ScheduleDay(values);
var day2 = new HVAC.Schedules.IB_ScheduleDay(1);

var schRule = new HVAC.Schedules.IB_ScheduleRule(day2);
//schRule.AddCustomAttribute(HVAC.Schedules.IB_ScheduleRule_FieldSet.Value.ApplyMonday, true);
//schRule.AddCustomAttribute(HVAC.Schedules.IB_ScheduleRule_FieldSet.Value.ApplyTuesday, true);
//schRule.AddCustomAttribute(HVAC.Schedules.IB_ScheduleRule_FieldSet.Value.ApplyWednesday, true);
//schRule.AddCustomAttribute(HVAC.Schedules.IB_ScheduleRule_FieldSet.Value.ApplyThursday, true);
//schRule.AddCustomAttribute(HVAC.Schedules.IB_ScheduleRule_FieldSet.Value.ApplyFriday, true);
//schRule.AddCustomAttribute(HVAC.Schedules.IB_ScheduleRule_FieldSet.Value.ApplySaturday, true);
//schRule.AddCustomAttribute(HVAC.Schedules.IB_ScheduleRule_FieldSet.Value.ApplySunday, true);
sch.Rules.Add(schRule);

var type = new HVAC.Schedules.IB_ScheduleTypeLimits();
type.AddCustomAttribute(HVAC.Schedules.IB_ScheduleTypeLimits_FieldSet.Value.UnitType, "Availability");
type.AddCustomAttribute(HVAC.Schedules.IB_ScheduleTypeLimits_FieldSet.Value.NumericType, "Discrete");
type.AddCustomAttribute(HVAC.Schedules.IB_ScheduleTypeLimits_FieldSet.Value.LowerLimitValue, 0);
type.AddCustomAttribute(HVAC.Schedules.IB_ScheduleTypeLimits_FieldSet.Value.UpperLimitValue, 1);
//type.set
sch.ScheduleTypeLimits = type;


// create
var bd = new HVAC.IB_ZoneHVACBaseboardConvectiveElectric();
var schField = new IB_Field("AvailabilitySchedule", "");
bd.AddCustomAttribute(schField, sch);

var md1 = new OpenStudio.Model();
//var bdops = new OpenStudio.ZoneHVACBaseboardConvectiveElectric(md1);
//bdops.setAvailabilitySchedule();

bd.ToOS(md1);

//string saveFile = GenFileName;
//var saved = md1.Save(saveFile);
//Assert.True(saved);
}
catch (Exception e)
{

throw;
}

}

}
}

0 comments on commit 959c2c8

Please sign in to comment.