1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192 |
- package blackstart;
- import classes.*;
- import com.google.gson.annotations.Expose;
- import ui.model.Model;
- public class resistanceCalculator {
- @Expose
- private int voltage;
- @Expose
- private int diameter;
- @Expose
- private double specificMaterialResistance;
- public resistanceCalculator(int voltage, int diameter, double specificMaterialResistance){
- this.voltage = voltage;
- this.diameter = diameter;
- this.specificMaterialResistance = specificMaterialResistance;
- }
- void setDistancesToCalcResistance(HolonObject powerPlant) {
- if (powerPlant != null) {
- // travers
- if (powerPlant.getConnectedTo().size() > 0) {
- for (CpsEdge edge : powerPlant.getConnectedTo()) {
- if (powerPlant.getId() == edge.getA().getId()) {
- traversEdges(edge.getB(), powerPlant, calcEdgeLength(edge));
- } else {
- traversEdges(edge.getA(), powerPlant, calcEdgeLength(edge));
- }
- }
- } else {
- System.out.println("Nothing connected to powerplant");
- }
- } else {
- System.out.println("No powerplant connected");
- }
- }
- private void traversEdges(AbstractCpsObject currentObject, AbstractCpsObject last, double distance) {
- if (currentObject.getConnectedTo().size() > 1) { // recursive call for all edges
- for (CpsEdge edge : currentObject.getConnectedTo()) {
- if (currentObject.getId() == edge.getA().getId()) { // look at which way the edge points
- if (last.getId() != edge.getB().getId()) {
- traversEdges(edge.getB(), currentObject, distance + calcEdgeLength(edge));
- }
- } else {
- if (last.getId() != edge.getA().getId()) {
- traversEdges(edge.getA(), currentObject, distance + calcEdgeLength(edge));
- }
- }
- }
- } else { // at leaf
- for (HolonElement ele : ((HolonObject) currentObject).getElements()) {
- ele.setDistance(distance);
- }
- }
- }
- private double calcEdgeLength(CpsEdge edge) {
- Position aPos = edge.getA().getPosition();
- Position bPos = edge.getB().getPosition();
- double xDiff = Math.abs(aPos.x - bPos.x);
- double yDiff = Math.abs(aPos.y - bPos.y);
- return Math.sqrt(Math.pow(xDiff, 2) + Math.pow(yDiff, 2));
- }
- public float calcEnergyAfterResistance(float currentEnergy, double distance, float energyRequiredForPowerplantBlackstart){
- double blackstartResistance = blackstartResistance(voltage, energyRequiredForPowerplantBlackstart);
- double cableResistance = cableResistance(specificMaterialResistance, distance, diameter);
- return (float) (1 - (cableResistance / (cableResistance + blackstartResistance))) * currentEnergy;
- }
- private double blackstartResistance(int voltage, float energyRequiredForPowerplantBlackstart){
- return Math.pow(voltage, 2) / energyRequiredForPowerplantBlackstart;
- }
- private double cableResistance(double specificMaterialResistance, double distance, int diameter){
- return specificMaterialResistance * (distance / (0.25 * Math.PI * Math.pow(diameter, 2)));
- }
- public float calcEnergyNeededForCertainEnergyAfterResistance(float energyWanted, double distance, float energyRequiredForPowerplantBlackstart){
- double blackstartResistance = blackstartResistance(voltage, energyRequiredForPowerplantBlackstart);
- double cableResistance = cableResistance(specificMaterialResistance, distance, diameter);
- return (float) (energyWanted / (1 - (cableResistance / (cableResistance + blackstartResistance))));
- }
- }
|