Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
26 changes: 18 additions & 8 deletions Zero_engine.alpx
Original file line number Diff line number Diff line change
Expand Up @@ -275,7 +275,7 @@
</Option>
<Option>
<Id>1676463395259</Id>
<Name><![CDATA[GAS_PIT]]></Name>
<Name><![CDATA[GAS_HOB]]></Name>
</Option>
<Option>
<Id>1676894965662</Id>
Expand Down Expand Up @@ -1300,6 +1300,22 @@ LARGE_CONNECTION (grootverbruik, > 3x80)
<Name><![CDATA[CUSTOM]]></Name>
</Option>
</OptionList>
<OptionList>
<Id>1779959996975</Id>
<Name><![CDATA[OL_HeatpumpType]]></Name>
<Option>
<Id>1779959996976</Id>
<Name><![CDATA[WATER_WATER]]></Name>
</Option>
<Option>
<Id>1779959996977</Id>
<Name><![CDATA[AIR_WATER]]></Name>
</Option>
<Option>
<Id>1779959996978</Id>
<Name><![CDATA[GROUND_WATER]]></Name>
</Option>
</OptionList>
</OptionLists>
<Folders>
<Folder>
Expand Down Expand Up @@ -1517,12 +1533,6 @@ LARGE_CONNECTION (grootverbruik, > 3x80)
<Name><![CDATA[J_EAConversionGasBurner]]></Name>
<Folder>1752677832758</Folder>
</JavaClass>
<JavaClass>
<Id>1659117174457</Id>
<Name><![CDATA[J_EAConversionBiogasMethane]]></Name>
<ExcludeFromBuild>true</ExcludeFromBuild>
<Folder>1752677832758</Folder>
</JavaClass>
<JavaClass>
<Id>1659117174458</Id>
<Name><![CDATA[J_EAProfile]]></Name>
Expand Down Expand Up @@ -1609,7 +1619,7 @@ LARGE_CONNECTION (grootverbruik, > 3x80)
</JavaClass>
<JavaClass>
<Id>1673445448881</Id>
<Name><![CDATA[J_EAElectricHob]]></Name>
<Name><![CDATA[J_EAConversionHob]]></Name>
<Folder>1752677832758</Folder>
</JavaClass>
<JavaClass>
Expand Down
19 changes: 8 additions & 11 deletions _alp/Agents/EnergyModel/Code/Functions.java
Original file line number Diff line number Diff line change
Expand Up @@ -835,7 +835,7 @@ EnergyCoop f_addProductionEnergyCarrier(OL_EnergyCarriers EC)
((J_EAStorageHeat)e).updateAmbientTemperature( pp_ambientTemperature_degC.getCurrentValue() );
break;
case BUILDING:
new RuntimeException("AmbientTempType 'BUILDING' is not supported yet for J_EAStorageHeat!");
throw new RuntimeException("AmbientTempType 'BUILDING' is not supported yet for J_EAStorageHeat!");
/*
GridConnection parentGC = (GridConnection)e.getParentAgent();
if(parentGC.p_BuildingThermalAsset == null){
Expand All @@ -845,17 +845,15 @@ EnergyCoop f_addProductionEnergyCarrier(OL_EnergyCarriers EC)
((J_EAStorageHeat)e).updateAmbientTemperature(parentGC.p_BuildingThermalAsset.getCurrentTemperature());
}
*/
break;
case HEAT_GRID:
// Do Nothing, keep fixed temp for now
//new RuntimeException("AmbientTempType 'HEAT_GRID' is not supported yet for J_EAStorageHeat!");
//throw new RuntimeException("AmbientTempType 'HEAT_GRID' is not supported yet for J_EAStorageHeat!");
break;
case HEAT_STORAGE:
new RuntimeException("AmbientTempType 'HEAT_STORAGE' is not supported yet for J_EAStorageHeat!");
break;
throw new RuntimeException("AmbientTempType 'HEAT_STORAGE' is not supported yet for J_EAStorageHeat!");
}
}
if (e instanceof J_EAConversionHeatPump) {
if (e instanceof J_EAConversionHeatPump hp) {
switch(((J_EAConversionHeatPump) e).getAmbientTempType()){
case FIXED:
//Do nothing, use preset ambient temp
Expand All @@ -864,7 +862,7 @@ EnergyCoop f_addProductionEnergyCarrier(OL_EnergyCarriers EC)
((J_EAConversionHeatPump)e).updateAmbientTemperature( pp_ambientTemperature_degC.getCurrentValue() );
break;
case BUILDING:
new RuntimeException("AmbientTempType 'BUILDING' is not supported yet for J_EAConversionHeatPump!");
throw new RuntimeException("AmbientTempType 'BUILDING' is not supported yet for J_EAConversionHeatPump!");
/*
GridConnection parentGC = (GridConnection)e.getParentAgent();
if(parentGC.p_BuildingThermalAsset == null){
Expand All @@ -874,13 +872,12 @@ EnergyCoop f_addProductionEnergyCarrier(OL_EnergyCarriers EC)
((J_EAConversionHeatPump)e).updateAmbientTemperature(parentGC.p_BuildingThermalAsset.getCurrentTemperature());
}
*/
break;
case HEAT_GRID:
new RuntimeException("AmbientTempType 'HEAT_GRID' is not supported yet for J_EAConversionHeatPump!");
// Do Nothing, keep fixed temp for now
//throw new RuntimeException("AmbientTempType 'HEAT_GRID' is not supported yet for J_EAConversionHeatPump!");
break;
case HEAT_STORAGE:
new RuntimeException("AmbientTempType 'HEAT_STORAGE' is not supported yet for J_EAConversionHeatPump!");
break;
throw new RuntimeException("AmbientTempType 'HEAT_STORAGE' is not supported yet for J_EAConversionHeatPump!");
}
}
if( e instanceof J_EABuilding ) {
Expand Down
2 changes: 1 addition & 1 deletion _alp/Agents/GCHouse/Code/Functions.java
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
if (p_cookingTracker != null) { // check for presence of cooking asset
p_cookingTracker.manageActivities(timeVariables); // also calls f_updateAllFlows in HOB asset

double residualHeatGasPit_kW = -p_cookingTracker.HOB.getLastFlows().get(OL_EnergyCarriers.HEAT);
double residualHeatGasPit_kW = -p_cookingTracker.getHob().getLastFlows().get(OL_EnergyCarriers.HEAT);
throw new RuntimeException("Cooking trackers and HOBs are not properly integrated with current heating management!");
/*if (p_BuildingThermalAsset != null) {
p_BuildingThermalAsset.v_powerFraction_fr += residualHeatGasPit_kW / p_BuildingThermalAsset.getCapacityHeat_kW(); // Does this work out correctly with new heatingManagement structure??
Expand Down
1 change: 1 addition & 0 deletions _alp/Agents/GCPublicCharger/Variables.xml
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@
<Variable Class="Parameter">
<Id>1750335661857</Id>
<Name><![CDATA[p_isChargingCentre]]></Name>
<ExcludeFromBuild>true</ExcludeFromBuild>
<X>1630</X>
<Y>150</Y>
<Label>
Expand Down
36 changes: 18 additions & 18 deletions _alp/Agents/GridConnection/Code/Functions.java
Original file line number Diff line number Diff line change
Expand Up @@ -483,7 +483,7 @@ else if (flowPacket.flowsMap.get(EC) > 0){
c_vehicleAssets.forEach(vehicle -> vehicle.setAvailability(true));
if (p_chargePoint != null) {
c_tripTrackers.forEach(tt -> {
if (tt.vehicle instanceof J_EAEV ev && p_chargePoint.isRegistered(ev)) {
if (tt.getVehicle() instanceof J_EAEV ev && p_chargePoint.isRegistered(ev)) {
p_chargePoint.deregisterChargingRequest(ev);
}
tt.setStartIndex(timeVariables, f_getChargePoint());
Expand Down Expand Up @@ -903,20 +903,20 @@ else if (j_ea instanceof J_EAConversion conversionAsset) {
//Check if heating asset
if (conversionAsset instanceof I_HeatingAsset) {
c_heatingAssets.add(conversionAsset);
if (j_ea instanceof J_EAConversionHeatPump) {
energyModel.c_ambientDependentAssets.add(j_ea);
if (conversionAsset instanceof J_EAConversionHeatPump) {
energyModel.c_ambientDependentAssets.add(conversionAsset);
}
}
else if ( conversionAsset.energyAssetType == OL_EnergyAssetType.GAS_PIT || j_ea.energyAssetType == OL_EnergyAssetType.ELECTRIC_HOB){
else if ( conversionAsset instanceof J_EAConversionHob hob){
if (p_cookingTracker == null) {
int rowIndex = uniform_discr(2, 300);
p_cookingTracker = new J_ActivityTrackerCooking(energyModel.p_cookingPatternCsv, rowIndex, (energyModel.p_timeVariables.getAnyLogicTime_h())*60, (J_EAConversion)j_ea );
p_cookingTracker = new J_ActivityTrackerCooking(energyModel.p_cookingPatternCsv, rowIndex, hob, timeParameters, energyModel.p_timeVariables);
}
else {
p_cookingTracker.HOB = (J_EAConversion)j_ea;
p_cookingTracker.setHob(hob);
}
}
else if (j_ea instanceof J_EAConversionAirConditioner aircoAsset) {
else if (conversionAsset instanceof J_EAConversionAirConditioner aircoAsset) {
p_airco = aircoAsset;
energyModel.c_ambientDependentAssets.add(aircoAsset);
}
Expand All @@ -925,19 +925,19 @@ else if (j_ea instanceof J_EAConversionAirConditioner aircoAsset) {
else if (j_ea instanceof J_EAStorage storageAsset) {
c_storageAssets.add(storageAsset);
energyModel.c_storageAssets.add(storageAsset);
if (j_ea instanceof J_EAStorageHeat) {
energyModel.c_ambientDependentAssets.add(j_ea);
if (j_ea instanceof J_EABuilding buildingAsset) {
if (storageAsset instanceof J_EAStorageHeat heatStorage) {
energyModel.c_ambientDependentAssets.add(heatStorage);
if (heatStorage instanceof J_EABuilding buildingAsset) {
p_BuildingThermalAsset = buildingAsset;
}
else {
p_heatBuffer = (J_EAStorageHeat)j_ea;
p_heatBuffer = heatStorage;
}
}
else if (j_ea instanceof J_EAStorageGas gasStorage) {
else if (storageAsset instanceof J_EAStorageGas gasStorage) {
p_gasBuffer = gasStorage;
}
else if (j_ea instanceof J_EAStorageElectric battery) {
else if (storageAsset instanceof J_EAStorageElectric battery) {
p_batteryAsset = battery;
double capacity_MWh = battery.getStorageCapacity_kWh()/1000;
v_liveAssetsMetaData.totalInstalledBatteryStorageCapacity_MWh += capacity_MWh;
Expand All @@ -954,17 +954,17 @@ J_ActivityTrackerTrips f_getNewTripTracker(OL_EnergyAssetType assetType,I_Vehicl
J_ActivityTrackerTrips tripTracker;
if (assetType == OL_EnergyAssetType.ELECTRIC_TRUCK || assetType == OL_EnergyAssetType.PETROLEUM_FUEL_TRUCK || assetType == OL_EnergyAssetType.HYDROGEN_TRUCK) {
int rowIndex = uniform_discr(1, 7); //Truck trip CSV has 7 valid rows.
tripTracker = new J_ActivityTrackerTrips(timeParameters, energyModel.p_truckTripsCsv, rowIndex, energyModel.p_timeVariables, vehicle, p_chargePoint);
tripTracker = new J_ActivityTrackerTrips(energyModel.p_truckTripsCsv, rowIndex, vehicle, p_chargePoint, timeParameters, energyModel.p_timeVariables);
} else if (assetType == OL_EnergyAssetType.PETROLEUM_FUEL_VAN || assetType == OL_EnergyAssetType.ELECTRIC_VAN || assetType == OL_EnergyAssetType.HYDROGEN_VAN) {// No mobility pattern for business vans available yet!! Falling back to truck mobility pattern
int rowIndex = uniform_discr(1, 7); //Truck trip CSV (used for vans) has 7 valid rows.
tripTracker = new J_ActivityTrackerTrips(timeParameters, energyModel.p_truckTripsCsv, rowIndex, energyModel.p_timeVariables, vehicle, p_chargePoint);
tripTracker = new J_ActivityTrackerTrips(energyModel.p_truckTripsCsv, rowIndex, vehicle, p_chargePoint, timeParameters, energyModel.p_timeVariables);
tripTracker.setAnnualDistance_km(30_000); //Wat gebeurt hier???
} else if(assetType == OL_EnergyAssetType.PETROLEUM_FUEL_VEHICLE || assetType == OL_EnergyAssetType.ELECTRIC_VEHICLE || assetType == OL_EnergyAssetType.HYDROGEN_VEHICLE) {
int rowIndex = uniform_discr(0, 200); //Car trip CSV has 200+ valid rows.
while (rowIndex == 28 || rowIndex == 42 || rowIndex == 150) { // 28, 42, 150, 445, 457, 483, 540, 563 all impossible triptrackers for vehicles with 116 kWh and 0.16 kWhpkm
rowIndex = uniform_discr(0, 200);
}
tripTracker = new J_ActivityTrackerTrips(timeParameters, energyModel.p_householdTripsCsv, rowIndex, energyModel.p_timeVariables, vehicle, p_chargePoint);
tripTracker = new J_ActivityTrackerTrips(energyModel.p_householdTripsCsv, rowIndex, vehicle, p_chargePoint, timeParameters, energyModel.p_timeVariables);
}
else{
throw new RuntimeException("Trying to get a new trip tracker for an unsupported vehicle type");
Expand Down Expand Up @@ -1153,7 +1153,7 @@ else if (j_ea instanceof J_EAConversionGasCHP) {

}
}
else if ( j_ea.energyAssetType == OL_EnergyAssetType.GAS_PIT || j_ea.energyAssetType == OL_EnergyAssetType.ELECTRIC_HOB){
else if ( j_ea.energyAssetType == OL_EnergyAssetType.GAS_HOB || j_ea.energyAssetType == OL_EnergyAssetType.ELECTRIC_HOB){
p_cookingTracker = null;
}
else if (j_ea instanceof J_EAConversionElectrolyser) {
Expand Down Expand Up @@ -1201,7 +1201,7 @@ J_ActivityTrackerTrips f_connectTripTracker(I_Vehicle vehicle,J_TimeParameters t
vehicle.setTripTracker(tripTracker);
}
else if( vehicle.getAvailability() && vehicle instanceof J_EAEV ev){ // J_EAEV that already has triptracker, but still needs to prepare next trip to determine chargedeadline.
tripTracker.prepareNextActivity(energyModel.p_timeVariables.getT_h()*60, p_chargePoint);
tripTracker.prepareNextActivity(energyModel.p_timeVariables, p_chargePoint);
}
c_tripTrackers.add( tripTracker );
/*ALCODEEND*/}
Expand Down
8 changes: 6 additions & 2 deletions _alp/Classes/Class.I_Vehicle.java
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,8 @@
public interface I_Vehicle
{
// These methods can't have default implementations because they use the Object States.

I_AssetOwner getOwner();

boolean startTrip(J_TimeVariables timeVariables);
boolean endTrip(double tripDist_km);

Expand All @@ -27,6 +28,9 @@ public interface I_Vehicle
double getVehicleScaling_fr();
double getEnergyConsumption_kWhpkm();

//Temporary, till replaced with getVehicleType() (Car, Van, Truck, Tractor) and getFuelType() (ELE, Petrol, h2)
OL_VehicleType getVehicleType();
OL_EnergyCarriers getFuelType();

//Temporary, till fully replaced with getVehicleType() (Car, Van, Truck, Tractor) and getFuelType() (ELE, Petrol, h2)
OL_EnergyAssetType getEAType();
}
16 changes: 2 additions & 14 deletions _alp/Classes/Class.J_ActivityTracker.java
Original file line number Diff line number Diff line change
Expand Up @@ -17,13 +17,10 @@
)
@JsonIdentityInfo(generator = ObjectIdGenerators.UUIDGenerator.class, property = "@id")
public abstract class J_ActivityTracker implements I_StoreStatesAndReset {
protected EnergyModel energyModel;

// Tripdata
protected ArrayList<Double> starttimes_min = new ArrayList<>();
protected ArrayList<Double> endtimes_min = new ArrayList<>();
//private ArrayList<Double> eventMagnitude = new ArrayList<>();
public int nbActivities = 0;
protected ArrayList<Double> startTimes_h = new ArrayList<>();
protected ArrayList<Double> endTimes_h = new ArrayList<>();
public int eventIndex = 0;
protected int eventIndexStored =0;

Expand All @@ -33,9 +30,6 @@ public abstract class J_ActivityTracker implements I_StoreStatesAndReset {
public J_ActivityTracker() {
}

public J_ActivityTracker(EnergyModel main, int rowIndex, double time_min) {
}

public void storeStatesAndReset() {
eventIndexStored = eventIndex;
eventIndex = 0;
Expand All @@ -44,10 +38,4 @@ public void storeStatesAndReset() {
public void restoreStates() {
eventIndex = eventIndexStored;
}


@Override
public String toString() {
return super.toString();
}
}
Loading