Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Partielle Funktionsevaluierung - der Schlüssel zu den Spice3 Modellen - Professur für Baumaschinen- und Fördertechnik Leipzig, 02.07.2014.

Ähnliche Präsentationen


Präsentation zum Thema: "Partielle Funktionsevaluierung - der Schlüssel zu den Spice3 Modellen - Professur für Baumaschinen- und Fördertechnik Leipzig, 02.07.2014."—  Präsentation transkript:

1 Partielle Funktionsevaluierung - der Schlüssel zu den Spice3 Modellen - Professur für Baumaschinen- und Fördertechnik Leipzig, 02.07.2014

2 HTWK Leipzig, 02.07.2014partielle FunktionsevaluierungFolie 2 von 11 partielle Funktionsevaluierung -OpenModelica-Compiler pre-optimization module

3 HTWK Leipzig, 02.07.2014partielle FunktionsevaluierungFolie 3 von 11 partielle Funktionsevaluierung assert | debug | division by zero at time 0, (a=-0.0388) / (b=0), where divisor b expression is: J1.cc.cGD SingleEquation: der(J1.vGD) = J1.icGD /J1.cc.cGD ComplexEquation: (5): J1.cc = Modelica.Electrical.Spice3.Internal.Jfet.jfetNoBypassCode( (300.15, 1.0, false, 0.0, 0.0, 0.0, 0.0, false, 1e-014, 1.0, 0.0, 0.0, 0.5, 0.7302833841653967, 0.5857864376269049, 0.3535533905932738, 0.25, 0.02586470905512062, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), (-2.0, 0.0001, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1e-014, 0.5, 1.0, 0.0, 1.0, 0.0, 0.0, 300.15, 0.0), 1, false, {U0.V, J1.Dinternal, J1.Sinternal}) Modelica.Electrical.Spice3.Examples.CascodeCircuit

4 HTWK Leipzig, 02.07.2014partielle FunktionsevaluierungFolie 4 von 11 partielle Funktionsevaluierung warning | Failed to solve linear system of equations (no. 32) at time 0.000000, system is singular for U[7, 7]. warning | Failed to solve linear system of equations (no. 68) at time 0.000000, system is singular for U[6, 6]. Equationsystem Jacobian Time varying: 1/1 (1): 0.0 = (-mp.irs) - mp.icBS - mp.ibsgmin - mp.cc.iBS - mp.icGS - mp.cc.idrain 2/2 (1): mp.icGS = mp.cc.cGS * ($DER.mn.G.v - der(mn.Dinternal)) 3/3 (1): mn.icGD = mn.cc.cGD * ($DER.mn.G.v - der(mn.Dinternal)) 4/4 (1): 0.0 = mn.cc.idrain + mp.irs + (-mn.ibdgmin) - mn.icGD - mn.icBD - mn.cc.iBD 5/5 (1): mn.icBD = (-mn.cc.cBD) * der(mn.Dinternal) [dynamic] 6/6 (1): mp.icBS = mp.cc.cBS * ($DER.mp.B.v - der(mn.Dinternal)) 1/1 (9): mn.cc = Modelica.Electrical.Spice3.Internal.Mos.mosCalcNoBypassCode( (300.15, 0.0001, 0.0001, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0, 1, 0.0, 0.0, false), 1, (0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2e-005, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1, 0.0001, 0.0, 0.0, 2e-005, 600.0, 0.6, 0.0, 0.0, 1e-014, 1e-014, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.8, 0.4, 0.0,.7302833841653967, 0.7302833841653967, 0.4686291501015239, 0.3535533905932738, 0.25, 0.0, 0.0, 0.0, 0.02586470905512062, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), (0.0, 0.0, 0.8, 0.5, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 1.0, 0.0, 1.0, 0.0, 0.5, 0.6, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 600.0, 0.0, 1e-014, 0.0, 1.0, 0.0, 1.0, 2e-005, 0.0, 300.15), (1.035943139907e-010, 3.453133e-011, 1.6021918e-019, 273.15, 1.3806226e-023, 300.15, 1.414213562373095, 2.718281828459045, 1e-012, 300.15, 300.15, 0.0, 0.0, 0.0001, 0.0001, 1e-010, 1e-015, 1e-010, 0.001, 0.02586470905512062, 8.61726105451295e-005), (0.0, 0.0, 0.6, 0.0, 2e-005), false, {mn.G.v, 0.0, mn.Dinternal, 0.0}) Modelica.Electrical.Spice3.Examples.Inverter

5 HTWK Leipzig, 02.07.2014partielle FunktionsevaluierungFolie 5 von 11 partielle Funktionsevaluierung TODO: -konstante function-inputs inklusive teil-konstanter record-Ausdrücke einsetzen -Funktionsvariablen und outputs evaluieren -konstante function-outputs inklusive teil-konstanter record-Ausdrücke als neue Zuweisungen zum DAE-System hinzufügen -vollständig evaluierte function entfernen, teil-evaluierte function umschreiben und outputs anpassen

6 HTWK Leipzig, 02.07.2014partielle FunktionsevaluierungFolie 6 von 11 partielle Funktionsevaluierung function func input Real in1; input Real in2; output Real out; protected Real x; algorithm x := in1+in2; out := 8 – in2; end func; func.in1  variable func.in2  10.0 x  variable out  8.0 -10.0  2 b  2 b = func(a,10.0); b = 2.0;

7 HTWK Leipzig, 02.07.2014partielle FunktionsevaluierungFolie 7 von 11 partielle Funktionsevaluierung function mosCalcNoBypassCode … if (Spice3.Internal.SpiceRoot.useInitialConditions()) and (in_m.m_dICVBSIsGiven > 0.5) then int_c.m_vbs := in_m_type * in_m.m_dICVBS; elseif ( Spice3.Internal.SpiceRoot.initJunctionVoltages()) then int_c.m_vbs := if (in_m.m_off >0.5) then 0. else int_c.m_VBScrit; end if; … function useInitialConditions "Initial condition handling" extends Modelica.Icons.Function; output Boolean ret; algorithm ret := false; end useInitialConditions; function initJunctionVoltages "Choice of junction voltage handling, obsolete, use initJunctionVoltageRe vised" extends Modelica.Icons.Function; extends Modelica.Icons.ObsoleteModel; output Boolean ret; algorithm ret := false; end initJunctionVoltages;  if-expression handling Modelica.Electrical.Spice3.Examples.Inverter

8 HTWK Leipzig, 02.07.2014partielle FunktionsevaluierungFolie 8 von 11 partielle Funktionsevaluierung Modelica.Electrical.Spice3.Internal.Mos.mosCalcDEVqmeyer function mosCalcDEVqmeyer … if (vgst <= -in_c.m_tPhi) then out_qm.qm_capgb := in_c.m_capOx / 2.; out_qm.qm_capgs := 0.; out_qm.qm_capgd := 0.; elseif (vgst <= -in_c.m_tPhi / 2.) then out_qm.qm_capgb := -vgst * in_c.m_capOx / (2. * in_c.m_tPhi); out_qm.qm_capgs := 0.; out_qm.qm_capgd := 0.; elseif (vgst <= 0.) then out_qm.qm_capgb := -vgst * in_c.m_capOx / (2. * in_c.m_tPhi); out_qm.qm_capgs := vgst * in_c.m_capOx / (1.5 * in_c.m_tPhi) + in_c.m_capOx / 3.; out_qm.qm_capgd := 0.; else vds := vgs - vgd; if (in_c.m_vdsat <= vds) then out_qm.qm_capgs := in_c.m_capOx / 3.; out_qm.qm_capgd := 0.; out_qm.qm_capgb := 0.; else vddif := 2.0 * in_c.m_vdsat - vds; vddif1 := in_c.m_vdsat - vds; vddif2 := vddif * vddif; out_qm.qm_capgd := in_c.m_capOx * (1. - in_c.m_vdsat * in_c.m_vdsat / vddif2) / 3.; out_qm.qm_capgs := in_c.m_capOx * (1. - vddif1 * vddif1 / vddif2) / 3.; out_qm.qm_capgb := 0.; end if; … if-conditions NICHT evaluierbar, aber:  if-prediction  0.0 in_c.m_capOx  0.0 out_qm.qm_capgb := 0.0; out_qm.qm_capgs := 0.0; out_qm.qm_capgd := 0.0;

9 HTWK Leipzig, 02.07.2014partielle FunktionsevaluierungFolie 9 von 11 partielle Funktionsevaluierung Modelica.Electrical.Spice3.Examples.Inverter (mn.cc.idrain, mn.cc.iBD, mn.cc.iBS) = Modelica.Electrical.Spice3.Internal.Mos.mosCalcNoBypassCode_eval15( (300.15, 0.0001, 0.0001, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0, 1, 0.0, 0.0, false), 1, (0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2e-005, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1, 0.0001, 0.0, 0.0, 2e-005, 600.0, 0.6, 0.0, 0.0, 1e-014, 1e-014, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.8, 0.4, 0.0, 0.7302833841653967, 0.7302833841653967, 0.4686291501015239, 0.3535533905932738, 0.25, 0.0, 0.0, 0.0, 0.02586470905512062, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), (0.0, 0.0, 0.8, 0.5, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 1.0, 0.0, 1.0, 0.0, 0.5, 0.6, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 600.0, 0.0, 1e-014, 0.0, 1.0, 0.0, 1.0, 2e-005, 0.0, 300.15), 1.035943139907e-010, 3.453133e-011, 1.6021918e-019, 273.15, 1.3806226e-023, 300.15, 1.414213562373095, 2.718281828459045, 1e-012, 300.15, 300.15, 0.0, 0.0, 0.0001, 0.0001, 1e-010, 1e-015, 1e- 010, 0.001, 0.02586470905512062, 8.61726105451295e-005), (0.0, 0.0, 0.6, 0.0, 2e-005), false, {mn.G.v, 0.0, mn.Dinternal, 0.0}) mn.cc.cGS = 0.0 mn.cc.cGD = 0.0 mn.cc.cGB = 0.0 mn.cc.cBD = 0.0 mn.cc.cBS = 0.0 mn.cc.m_capgd = 0.0 mn.cc = Modelica.Electrical.Spice3.Internal.Mos.mosCalcNoBypassCode( (300.15, 0.0001, 0.0001, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0, 1, 0.0, 0.0, false), 1, (0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2e-005, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1, 0.0001, 0.0, 0.0, 2e-005, 600.0, 0.6, 0.0, 0.0, 1e-014, 1e-014, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.8, 0.4, 0.0, 0.7302833841653967, 0.7302833841653967, 0.4686291501015239, 0.3535533905932738, 0.25, 0.0, 0.0, 0.0, 0.02586470905512062, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), (0.0, 0.0, 0.8, 0.5, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 1.0, 0.0, 1.0, 0.0, 0.5, 0.6, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 600.0, 0.0, 1e- 014, 0.0, 1.0, 0.0, 1.0, 2e-005, 0.0, 300.15), (1.035943139907e-010, 3.453133e-011, 1.6021918e-019, 273.15, 1.3806226e-023, 300.15, 1.414213562373095, 2.718281828459045, 1e-012, 300.15, 300.15, 0.0, 0.0, 0.0001, 0.0001, 1e-010, 1e-015, 1e-010, 0.001, 0.02586470905512062, 8.61726105451295e-005), (0.0, 0.0, 0.6, 0.0, 2e-005), false, {mn.G.v, 0.0, mn.Dinternal, 0.0})

10 HTWK Leipzig, 02.07.2014partielle FunktionsevaluierungFolie 10 von 11 partielle Funktionsevaluierung Motivation?Parallelisierung von Modelica.Electrical.Spice3.Examples.Spice3BenchmarkFourBitBinaryAdder thread 1thread 4 thread 3thread 2 speedUp: 2.7 speedUp: 2.7 simulation time hohes paralleles Potenzial durch „schwach gekoppelte Subsysteme“

11 HTWK Leipzig, 02.07.2014partielle FunktionsevaluierungFolie 11 von 11


Herunterladen ppt "Partielle Funktionsevaluierung - der Schlüssel zu den Spice3 Modellen - Professur für Baumaschinen- und Fördertechnik Leipzig, 02.07.2014."

Ähnliche Präsentationen


Google-Anzeigen