diff --git a/_alp/Agents/AVGC_data/Code/Functions.java b/_alp/Agents/AVGC_data/Code/Functions.java
index 556a502d..678908ea 100644
--- a/_alp/Agents/AVGC_data/Code/Functions.java
+++ b/_alp/Agents/AVGC_data/Code/Functions.java
@@ -61,8 +61,8 @@
dataAVGC.p_v1gProbability = p_v1gProbability;
dataAVGC.p_v2gProbability = p_v2gProbability;
-dataAVGC.p_avgVehiclesPerCharger_Chargepoint = p_avgVehiclesPerCharger_Chargepoint;
-dataAVGC.p_avgVehiclesPerCharger_Centre = p_avgVehiclesPerCharger_Centre;
+dataAVGC.p_defaultNrOfVehiclesPerChargerSocket = p_defaultNrOfVehiclesPerChargerSocket;
+dataAVGC.p_defaultNrOfSocketsPerCharger = p_defaultNrOfSocketsPerCharger;
dataAVGC.p_avgAnnualTravelDistancePrivateCar_km = p_avgAnnualTravelDistancePrivateCar_km;
dataAVGC.p_avgAnnualTravelDistanceCompanyCar_km = p_avgAnnualTravelDistanceCompanyCar_km;
@@ -91,8 +91,8 @@
dataAVGC.p_minDistrictHeatingDeliverySetOutputCapacity_kW = p_minDistrictHeatingDeliverySetOutputCapacity_kW;
dataAVGC.p_avgEfficiencyCHP_thermal_fr = p_avgEfficiencyCHP_thermal_fr;
-dataAVGC.p_avgEfficiencyCHP_electric_fr = p_avgEfficiencyCHP_thermal_fr;
-dataAVGC.p_avgOutputTemperatureCHP_degC = p_avgEfficiencyCHP_thermal_fr;
+dataAVGC.p_avgEfficiencyCHP_electric_fr = p_avgEfficiencyCHP_electric_fr;
+dataAVGC.p_avgOutputTemperatureCHP_degC = p_avgOutputTemperatureCHP_degC;
dataAVGC.p_avgPTPower_kWpm2 = p_avgPTPower_kWpm2;
dataAVGC.p_avgPTPanelSize_m2 = p_avgPTPanelSize_m2;
diff --git a/_alp/Agents/AVGC_data/Variables.xml b/_alp/Agents/AVGC_data/Variables.xml
index 45e93ca4..7f42ed90 100644
--- a/_alp/Agents/AVGC_data/Variables.xml
+++ b/_alp/Agents/AVGC_data/Variables.xml
@@ -1551,7 +1551,8 @@ https://www.mdpi.com/1999-4893/18/7/416 -> 100-104 % efficiency, based on gas en
1726746753360
-
+
+
1010
970
-
- 1750341289733
-
-
- 1010
- 990
-
- false
- true
- true
-
-
- NONE
- false
-
-
-
-
- 1750341289731
- TEXT_BOX
- 0
- 100
- NO_DELIMETER
-
-
-
1751893521012
@@ -3047,4 +3019,32 @@ OL_GridConnectionInsulationLabel.G, 4.0
+
+ 1772188856702
+
+ 1010
+ 990
+
+ false
+ true
+ true
+
+
+ NONE
+ false
+
+
+
+
+ 1772188856700
+ TEXT_BOX
+ 0
+ 100
+ NO_DELIMETER
+
+
+
diff --git a/_alp/Agents/UI_company/Code/Functions.java b/_alp/Agents/UI_company/Code/Functions.java
index b35a478d..23a84c93 100644
--- a/_alp/Agents/UI_company/Code/Functions.java
+++ b/_alp/Agents/UI_company/Code/Functions.java
@@ -696,6 +696,11 @@
else{
zero_Interface.c_orderedVehicles.add(0, electricVehicle);
}
+
+ //Check if charging management is present if not: add default management
+ if(parentGC.f_getCurrentChargingType() == OL_ChargingAttitude.NONE){
+ parentGC.f_addChargingManagement(OL_ChargingAttitude.SIMPLE);
+ }
}
else if (vehicleType == OL_EnergyAssetType.PETROLEUM_FUEL_VEHICLE || vehicleType == OL_EnergyAssetType.PETROLEUM_FUEL_VAN || vehicleType == OL_EnergyAssetType.PETROLEUM_FUEL_TRUCK ){ // Create petroleumFuel vehicles
diff --git a/_alp/Agents/Zero_Loader/Code/Functions.java b/_alp/Agents/Zero_Loader/Code/Functions.java
index de0e9530..3d9dd874 100644
--- a/_alp/Agents/Zero_Loader/Code/Functions.java
+++ b/_alp/Agents/Zero_Loader/Code/Functions.java
@@ -1680,14 +1680,36 @@ String f_createChargerPolygon(double lat,double lon)
{/*ALCODESTART::1726584205849*/
//Initialize parameters
int laadpaal_nr = 1;
-int laadstation_nr = 1;
+int laadCentrum_nr = 1;
//Loop over charging stations
for (Chargingstation_data dataChargingStation : f_getChargingstationsInSubScope(c_chargingstation_data)){
GCPublicCharger chargingStation = energyModel.add_PublicChargers();
- chargingStation.set_p_gridConnectionID( dataChargingStation.gc_id());
+ chargingStation.p_gridConnectionID = dataChargingStation.gc_id();
+ chargingStation.p_ownerID = dataChargingStation.owner_id();
+ chargingStation.p_isChargingCentre = dataChargingStation.is_charging_centre();
+
+ //Make owner name if it is not filled in (used for display on UI).
+ if (dataChargingStation.owner_id() == null){
+ if(chargingStation.p_isChargingCentre){
+ chargingStation.p_ownerID = "Publiek laadcentrum " + laadCentrum_nr;
+ laadCentrum_nr++;
+ }
+ else{
+ chargingStation.p_ownerID = "Publieke laadpaal " + laadpaal_nr;
+ laadpaal_nr++;
+
+ }
+ }
+ //Create and connect ConnectionOwner
+ ConnectionOwner owner = energyModel.add_pop_connectionOwners();
+ owner.p_actorID = chargingStation.p_ownerID;
+ owner.p_connectionOwnerType = OL_ConnectionOwnerType.CHARGEPOINT_OP;
+ owner.b_dataSharingAgreed = true;
+ chargingStation.p_owner = owner;
+
//Set Address
chargingStation.p_address = new J_Address(dataChargingStation.streetname(),
dataChargingStation.house_number(),
@@ -1696,6 +1718,7 @@ String f_createChargerPolygon(double lat,double lon)
dataChargingStation.postalcode(),
dataChargingStation.city());
+
//Electric Capacity
if (dataChargingStation.connection_capacity_kw() != null) {
// Assume the connection capacity is both physical and contracted.
@@ -1711,124 +1734,68 @@ String f_createChargerPolygon(double lat,double lon)
//Is active at start?
chargingStation.v_isActive = dataChargingStation.initially_active();
- //Create and connect owner
- ConnectionOwner owner = energyModel.add_pop_connectionOwners();
-
- chargingStation.set_p_ownerID( dataChargingStation.owner_id());
- owner.set_p_actorID( chargingStation.p_ownerID );
- //owner.set_p_actorType( OL_ActorType.CONNECTIONOWNER );
- owner.set_p_connectionOwnerType( OL_ConnectionOwnerType.CHARGEPOINT_OP );
- owner.b_dataSharingAgreed = true;
-
- chargingStation.set_p_owner( owner );
-
-
- //Check if centre or single
- chargingStation.p_isChargingCentre = dataChargingStation.is_charging_centre();
- if (chargingStation.p_isChargingCentre) {
- if (chargingStation.p_ownerID == null){
- chargingStation.p_ownerID = "Publiek laadstation " + laadstation_nr;
- laadstation_nr++;
- }
-
- chargingStation.set_p_nbOfChargers( dataChargingStation.number_of_chargers() );
- chargingStation.set_p_maxChargingPower_kW( dataChargingStation.power_per_charger_kw() );
+ //Default charger parameters
+ double numberOfSockets = dataChargingStation.number_of_chargers() != null ? dataChargingStation.number_of_chargers() : avgc_data.p_defaultNrOfSocketsPerCharger;
+ double maxPowerPerSocket_kW = dataChargingStation.power_per_charger_kw() != null ? dataChargingStation.power_per_charger_kw() : avgc_data.p_avgEVMaxChargePowerCar_kW;
+
+ //Assumption is all chargepoints are the same for one GCPublicCharger
+ boolean V1GCapable = true; //randomTrue(avgc_data.p_v1gProbability);
+ boolean V2GCapable = true; //randomTrue(avgc_data.p_v2gProbability);
+ chargingStation.f_setChargePoint(new J_ChargePoint(V1GCapable, V2GCapable, maxPowerPerSocket_kW));
+ chargingStation.f_setChargingManagement(new J_ChargingManagementSimple(chargingStation, energyModel.p_timeParameters));
- //If check on connection capacity to prevent more charging than possible
- if(chargingStation.v_liveConnectionMetaData.contractedDeliveryCapacity_kW > chargingStation.p_nbOfChargers*chargingStation.p_maxChargingPower_kW){
- chargingStation.v_liveConnectionMetaData.contractedDeliveryCapacity_kW = chargingStation.p_nbOfChargers*chargingStation.p_maxChargingPower_kW;
- }
-
- //Set vehicle type
- chargingStation.p_chargingVehicleType = dataChargingStation.vehicle_type();
-
- //Create vehicles that charge at the charging centre
- if(chargingStation.p_chargingVehicleType == OL_EnergyAssetType.CHARGER){
- List chargerProfile = f_getChargerProfile();
- boolean V1GCapable = randomTrue(avgc_data.p_v1gProbability);
- boolean V2GCapable = randomTrue(avgc_data.p_v2gProbability);
- chargingStation.f_setChargePoint( new J_ChargePoint(V1GCapable, V2GCapable));
- chargingStation.f_setChargingManagement(new J_ChargingManagementSimple(chargingStation, energyModel.p_timeParameters));
- new J_EAChargingSession(chargingStation, chargerProfile, 0, energyModel.p_timeParameters);
- new J_EAChargingSession(chargingStation, chargerProfile, 1, energyModel.p_timeParameters);
- }
- else{
- for(int k = 0; k < chargingStation.p_nbOfChargers*avgc_data.p_avgVehiclesPerCharger_Centre; k++ ){
- f_addElectricVehicle(chargingStation, chargingStation.p_chargingVehicleType, true, 0, chargingStation.p_maxChargingPower_kW);
+ //Create chargingsession/vehicles
+ if(dataChargingStation.vehicle_type() == OL_EnergyAssetType.CHARGER){
+
+ int sessionSocketNr = 0;
+ List chargerProfile = f_getChargerProfile();
+ for(int i = 0; i< numberOfSockets; i++){
+ if(i != 0 && numberOfSockets % i == 0){
+ chargerProfile = f_getChargerProfile();
+ sessionSocketNr = 0;
}
+ new J_EAChargingSession(chargingStation, chargerProfile, sessionSocketNr, energyModel.p_timeParameters);
+ sessionSocketNr++;
}
-
-
- if (dataChargingStation.polygon() != null) {
- //Create EA GIS object (building) for the charging centre
- GIS_Object area = f_createGISObject( dataChargingStation.gc_name(), dataChargingStation.latitude(), dataChargingStation.longitude(), dataChargingStation.polygon(), OL_GISObjectType.CHARGER );
-
- //Set gis object type
- area.p_GISObjectType = OL_GISObjectType.CHARGER;
-
- //Add to collections
- area.c_containedGridConnections.add(chargingStation);
- chargingStation.c_connectedGISObjects.add(area);
-
- //Style building
- area.set_p_defaultFillColor( zero_Interface.v_chargingStationColor );
- area.set_p_defaultLineColor( zero_Interface.v_chargingStationLineColor );
- area.set_p_defaultLineWidth( zero_Interface.v_energyAssetLineWidth);
- zero_Interface.f_styleAreas(area);
+ }
+ else{
+ for(int k = 0; k < numberOfSockets*avgc_data.p_defaultNrOfVehiclesPerChargerSocket; k++ ){
+ f_addElectricVehicle(chargingStation, dataChargingStation.vehicle_type(), true, 0, maxPowerPerSocket_kW);
}
- else{
- traceln("No gisobject created for charge centre: " + chargingStation.p_gridConnectionID);
+ }
+
+
+ //Get polygonString for GIS object
+ String polygonString;
+ if (chargingStation.p_isChargingCentre) {
+ if(dataChargingStation.polygon() == null){
+ throw new RuntimeException("Trying to make a charging CENTRE without specifying the polygon, this is only possible for a single charge POLE");
}
+ polygonString = dataChargingStation.polygon();
+ }
+ else{
+ polygonString = f_createChargerPolygon(dataChargingStation.latitude(), dataChargingStation.longitude());
}
- else {
- if (chargingStation.p_ownerID == null){
- chargingStation.p_ownerID = "Publieke laadpaal " + laadpaal_nr;
- laadpaal_nr++;
- }
-
- //Set charging power
- chargingStation.set_p_maxChargingPower_kW( dataChargingStation.power_per_charger_kw() );
-
- //Set vehicle type
- chargingStation.p_chargingVehicleType = dataChargingStation.vehicle_type();
-
- //Create vehicles that charge at the charging station
- if(chargingStation.p_chargingVehicleType == OL_EnergyAssetType.CHARGER){
- List chargerProfile = f_getChargerProfile();
- boolean V1GCapable = true; //randomTrue(avgc_data.p_v1gProbability);
- boolean V2GCapable = true; //randomTrue(avgc_data.p_v2gProbability);
- chargingStation.f_setChargePoint(new J_ChargePoint(V1GCapable, V2GCapable));
- chargingStation.f_setChargingManagement(new J_ChargingManagementSimple(chargingStation, energyModel.p_timeParameters));
- new J_EAChargingSession(chargingStation, chargerProfile, 0, energyModel.p_timeParameters);
- new J_EAChargingSession(chargingStation, chargerProfile, 1, energyModel.p_timeParameters);
- }
- else{
- for(int k = 0; k < avgc_data.p_avgVehiclesPerCharger_Chargepoint; k++ ){
- f_addElectricVehicle(chargingStation, chargingStation.p_chargingVehicleType, true, 0, chargingStation.p_maxChargingPower_kW);
- }
- }
-
-
- //Create GIS object for the chargingStation
- String polygonString = f_createChargerPolygon(dataChargingStation.latitude(), dataChargingStation.longitude());
- GIS_Object gisregion = f_createGISObject(dataChargingStation.gc_name(), dataChargingStation.latitude(), dataChargingStation.longitude(), polygonString, OL_GISObjectType.CHARGER);
-
- //Add to collections
- chargingStation.c_connectedGISObjects.add(gisregion);
- gisregion.c_containedGridConnections.add(chargingStation);
-
- if(chargingStation.v_isActive){
- gisregion.set_p_defaultFillColor( zero_Interface.v_chargingStationColor );
- gisregion.set_p_defaultLineColor( zero_Interface.v_chargingStationLineColor );
- }
- else{
- gisregion.set_p_defaultFillColor( zero_Interface.v_newChargingStationColor );
- gisregion.set_p_defaultLineColor( zero_Interface.v_newChargingStationLineColor );
- }
- zero_Interface.f_styleAreas(gisregion);
- }
+ //Create EA GIS object (building) for the charging centre
+ GIS_Object gisregion = f_createGISObject( dataChargingStation.gc_name(), dataChargingStation.latitude(), dataChargingStation.longitude(), polygonString, OL_GISObjectType.CHARGER );
+
+ //Add to collections
+ gisregion.c_containedGridConnections.add(chargingStation);
+ chargingStation.c_connectedGISObjects.add(gisregion);
+
+ //Style GIS object
+ if(chargingStation.v_isActive){
+ gisregion.set_p_defaultFillColor( zero_Interface.v_chargingStationColor );
+ gisregion.set_p_defaultLineColor( zero_Interface.v_chargingStationLineColor );
+ }
+ else{
+ gisregion.set_p_defaultFillColor( zero_Interface.v_newChargingStationColor );
+ gisregion.set_p_defaultLineColor( zero_Interface.v_newChargingStationLineColor );
+ }
+ gisregion.set_p_defaultLineWidth( zero_Interface.v_energyAssetLineWidth);
+ zero_Interface.f_styleAreas(gisregion);
}
@@ -2711,7 +2678,6 @@ else if(!settings.createCurrentElectricityEA()){//input boolean: Dont create cur
future_scenario_list.setPlannedHydrogenTrucks((gridConnection.getTransport().getTrucks().getNumPlannedHydrogenTrucks() != null) ? gridConnection.getTransport().getTrucks().getNumPlannedHydrogenTrucks() : 0);
}
-
//Other
if (Objects.nonNull(gridConnection.getTransport().getOtherVehicles().getHasOtherVehicles())){
@@ -2720,6 +2686,11 @@ else if(!settings.createCurrentElectricityEA()){//input boolean: Dont create cur
}
}
+//Set Default charging management if EV is present
+if(companyGC.c_electricVehicles.size() + companyGC.c_chargingSessions.size() > 0){
+ companyGC.f_addChargingManagement(OL_ChargingAttitude.SIMPLE);
+}
+
//Save if building is paused at start
current_scenario_list.setIsCurrentlyActive(companyGC.v_isActive);
future_scenario_list.setIsActiveInFuture(companyGC.v_isActive);
@@ -4539,6 +4510,10 @@ else if (surveyGC.getHeat() != null && surveyGC.getHeat().getAnnualDistrictHeati
if (randomTrue( avgc_data.p_shareOfElectricVehicleOwnership)){
J_EAEV ev = f_addElectricVehicle(house, OL_EnergyAssetType.ELECTRIC_VEHICLE, true, 0, 0);
ev.getTripTracker().setAnnualDistance_km(ev.getTripTracker().getAnnualDistance_km()*tripTrackerScaling);
+ //Set Default charging management
+ if(house.f_getCurrentChargingType() == OL_ChargingAttitude.NONE){
+ house.f_addChargingManagement(OL_ChargingAttitude.SIMPLE);
+ }
}
else{
J_EAFuelVehicle petroleumFuelVehicle = f_addPetroleumFuelVehicle(house, OL_EnergyAssetType.PETROLEUM_FUEL_VEHICLE, true, 0);
diff --git a/_alp/Agents/Zero_Loader/EmbeddedObjects.xml b/_alp/Agents/Zero_Loader/EmbeddedObjects.xml
index d0e8d2f1..c96c90fa 100644
--- a/_alp/Agents/Zero_Loader/EmbeddedObjects.xml
+++ b/_alp/Agents/Zero_Loader/EmbeddedObjects.xml
@@ -284,7 +284,7 @@
-
+
@@ -331,9 +331,6 @@
-
-
-
@@ -433,6 +430,9 @@
+
+
+
false
diff --git a/_alp/Agents/tabMobility/Code/Functions.java b/_alp/Agents/tabMobility/Code/Functions.java
index 5a7a009a..7166c861 100644
--- a/_alp/Agents/tabMobility/Code/Functions.java
+++ b/_alp/Agents/tabMobility/Code/Functions.java
@@ -331,6 +331,11 @@ boolean f_petroleumFuelToElectricTruck(List gcList)
if(foundAdditionalVehicle){
zero_Interface.c_additionalVehicles.get(gc.p_uid).add(electricTruck);
}
+
+ //Check if charging management is present if not: add default management
+ if(gc.f_getCurrentChargingType() == OL_ChargingAttitude.NONE){
+ gc.f_addChargingManagement(OL_ChargingAttitude.SIMPLE);
+ }
}
else {
@@ -385,6 +390,11 @@ boolean f_hydrogenToElectricTruck(List gcList)
if(foundAdditionalVehicle){
zero_Interface.c_additionalVehicles.get(gc.p_uid).add(electricTruck);
}
+
+ //Check if charging management is present if not: add default management
+ if(gc.f_getCurrentChargingType() == OL_ChargingAttitude.NONE){
+ gc.f_addChargingManagement(OL_ChargingAttitude.SIMPLE);
+ }
}
else {
return false;
@@ -693,6 +703,11 @@ boolean f_petroleumFuelToElectricVan(List gcList)
if(foundAdditionalVehicle){
zero_Interface.c_additionalVehicles.get(gc.p_uid).add(electricVan);
}
+
+ //Check if charging management is present if not: add default management
+ if(gc.f_getCurrentChargingType() == OL_ChargingAttitude.NONE){
+ gc.f_addChargingManagement(OL_ChargingAttitude.SIMPLE);
+ }
}
else {
@@ -794,6 +809,11 @@ boolean f_petroleumFuelToElectricCar(List gcList)
if(foundAdditionalVehicle){
zero_Interface.c_additionalVehicles.get(gc.p_uid).add(electricCar);
}
+
+ //Check if charging management is present if not: add default management
+ if(gc.f_getCurrentChargingType() == OL_ChargingAttitude.NONE){
+ gc.f_addChargingManagement(OL_ChargingAttitude.SIMPLE);
+ }
}
else {
diff --git a/_alp/Classes/Class.Chargingstation_data.java b/_alp/Classes/Class.Chargingstation_data.java
index 0f14887e..9940048c 100644
--- a/_alp/Classes/Class.Chargingstation_data.java
+++ b/_alp/Classes/Class.Chargingstation_data.java
@@ -20,7 +20,7 @@ public class Chargingstation_data {
boolean is_charging_centre;
OL_EnergyAssetType vehicle_type;
Integer number_of_chargers;
- double power_per_charger_kw;
+ Double power_per_charger_kw;
boolean initially_active;
double latitude;
double longitude;