Java tutorial
/** * Copyright 2014 Th. K. Walter, Nrnberg. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package de.thkwalter.et.betriebspunkt; import org.apache.commons.math3.complex.Complex; /** * Diese Klasse reprsentiert einen Betriebspunkt. * * @author Th. K. Walter */ public class Betriebspunkt { /** * Der effektive Leiterstrom (in A). */ private double i_L; /** * Die effektive Leiter-Leiterspannung (in V). */ private double u_LL; /** * Die elektrische Leistung (in kW) */ private double p_el; /** * Der {@link Schaltungstyp} */ private Schaltungstyp schaltungstyp; // --------------------------------------------------------------------------------------------------------------------- /** * Die Scheinleistung (in kVA). */ private double p_s; /** * Die Phasenverschiebung zwischen Strangstrom und Strangspannung. */ private double cosPhi; /** * Der komplexe Zeiger des Stnderstroms (in A) */ private Complex z_i_s; // ===================================================================================================================== // ===================================================================================================================== /** * Dieser Konstruktor erzeugt einen Betriebspunkt und initialisiert alle reellwertigen Gren mit {@link Double#NaN}. */ public Betriebspunkt() { // Alle reellwertigen Gren werden mit Double.NaN initialisiert. this.u_LL = Double.NaN; this.i_L = Double.NaN; this.cosPhi = Double.NaN; this.p_el = Double.NaN; this.p_s = Double.NaN; // Der komplexe Zeiger des Stnderstroms (in A) wird initialisiert. this.z_i_s = Complex.NaN; } // ===================================================================================================================== // ===================================================================================================================== /** * Dieser Konstruktor erzeugt einen Betriebspunkt und berechnet auf Basis der Eingabewerte alle fehlenden Gren. * * @param i_l Der effektive Leiterstrom (in A) * @param u_LL Die effektive Leiter-Leiterspannung (in V) * @param p_el Die elektrische Leistung (in kW) * @param schaltungstyp Der Schaltungstyp */ public Betriebspunkt(double i_L, double u_LL, double p_el, Schaltungstyp schaltungstyp) { // Die Attribute werden initialisiert. this.i_L = i_L; this.u_LL = u_LL; this.p_el = p_el; this.schaltungstyp = schaltungstyp; // Auf Basis der Eingabewerte werden alle fehlenden Gren berechnet. this.rechnen(); } // ===================================================================================================================== // ===================================================================================================================== /** * Diese Methode berechnet auf Basis der Eingabewerte alle fehlenden Gren. */ private void rechnen() { // Die Scheinleistung (in kVA) wird berechnet. this.p_s = Math.sqrt(3.0) * this.getU_LL() * this.getI_L() / 1000.0; // Die Phasenverschiebung zwischen Strangstrom und Strangspannung wird berechnet. this.cosPhi = this.p_el / this.p_s; // Ein vom Schaltungstyp abhngiger Faktor wird berechnet. double faktor = this.schaltungstyp == Schaltungstyp.STERN ? 1.0 : 1.0 / Math.sqrt(3.0); // Der Realteil des Strangstroms (in A) wird berechnet. double i_s_re = faktor * this.i_L * this.cosPhi; // Der Imaginrteil des Strangstroms (in A) wird berechnet. Dabei ist zu beachten, dass fr elektrische Maschinen der // Phasenwinkel phi negativ ist. double i_s_im = faktor * this.i_L * Math.sin(-Math.acos(this.cosPhi)); // Der komplexe Zeiger des Stnderstroms (in A) wird erzeugt. this.z_i_s = new Complex(i_s_re, i_s_im); } // ===================================================================================================================== // ===================================================================================================================== /** * Diese Methode gibt den effektiven Leiterstrom (in A) zurck. * * @return Der effektive Leiterstrom (in A) */ public double getI_L() { // Der effektive Leiterstrom (in A) wird zurckgegeben. return this.i_L; } // ===================================================================================================================== // ===================================================================================================================== /** * Diese Methode speichert den effektiven Leiterstrom (in A) in diesem Objekt. * * @param i_L Der effektive Leiterstrom (in A) */ public void setI_L(double i_L) { // Der effektive Leiterstrom (in A) wird in diesem Objekt gespeichert. this.i_L = i_L; } // ===================================================================================================================== // ===================================================================================================================== /** * Diese Methode gibt die effektive Leiter-Leiterspannung (in V) zurck. * * @return Die effektive Leiter-Leiterspannung (in V) */ public double getU_LL() { // Die effektive Leiter-Leiterspannung (in V) wird zurckgegeben. return this.u_LL; } // ===================================================================================================================== // ===================================================================================================================== /** * Diese Methode speichert die effektive Leiter-Leiterspannung (in V) in diesem Objekt. * * @param u_LL Die effektive Leiter-Leiterspannung (in V) */ public void setU_LL(double u_LL) { // Die effektive Leiter-Leiterspannung (in V) wird in diesem Objekt gespeichert. this.u_LL = u_LL; } // ===================================================================================================================== // ===================================================================================================================== /** * Diese Methode speichert die elektische Leistung (in kW) in diesem Objekt. * * @return Die elektrische Leistung (in kW) */ public double getP_el() { // Die elektrische Leistung (in kW) wird zurckgegeben. return this.p_el; } // ===================================================================================================================== // ===================================================================================================================== /** * Diese Methode speichert die elektische Leistung (in kW) in diesem Objekt. * * @param p_el Die elektische Leistung (in kW) */ public void setP_el(double p_el) { // die elektische Leistung (in kW) wird in diesem Objekt gespeichert. this.p_el = p_el; } // ===================================================================================================================== // ===================================================================================================================== /** * Diese Methode gibt die Scheinleistung (in kVA) zurck. * * @return Die Scheinleistung (in kVA) */ public double getP_s() { // Die Scheinleistung (in kVA) wird zurckgegeben. return this.p_s; } // ===================================================================================================================== // ===================================================================================================================== /** * Diese Methode gibt die Phasenverschiebung zwischen Strangstrom und Strangspannung zurck. * * @return Die Phasenverschiebung zwischen Strangstrom und Strangspannung wird zurckgegeben. */ public double getCosPhi() { // Die Phasenverschiebung zwischen Strangstrom und Strangspannung wird zurckgegeben. return this.cosPhi; } // ===================================================================================================================== // ===================================================================================================================== /** * Diese Methode gibt den komplexen Zeiger des Strangstroms (in A) zurck. * * @return Der komplexe Zeiger des Strangstroms (in A) */ public Complex getZ_i_s() { // Der komplexe Zeiger des Strangstroms (in A) wird zurckgegeben return this.z_i_s; } // ===================================================================================================================== // ===================================================================================================================== /** * Diese Methode gibt den {@link Schaltungstyp} zurck. * * @return Der {@link Schaltungstyp} */ public Schaltungstyp getSchaltungstyp() { // Der Schaltungstyp wird zurckgegeben. return this.schaltungstyp; } // ===================================================================================================================== // ===================================================================================================================== /** * Diese Methode speichert den Schaltungstyp in diesem Objekt. * * @param schaltungstyp Der {@link Schaltungstyp} */ public void setSchaltungstyp(Schaltungstyp schaltungstyp) { // Der Schaltungstyp wird in diesem Objekt gespeichert. this.schaltungstyp = schaltungstyp; } }