# [Getdp] GetDP - diode as non-linear resistant

A.Eckert at eunda.ch A.Eckert at eunda.ch
Tue Apr 23 09:00:52 CEST 2019

```Hi Ruth,

thank you very much. That indeed helped a lot.

My idea was to us an e-function, or an inverse e-function respectively, to
approximate the two axis of an ideal diode and keep the function
continuously differentiable.

Resistance[Region[{R_DIODE_1}]] = 1.0 / (Exp[\$1]);

By replacing that line through your resistance definition
(Resistance[Region[{R_DIODE_1}]] = ((\$1 >= 0)? Ron : Roff) ;)
everything works perfectly. I can't tell you, why my original idea doesn't
work.

Thank you.

"Ruth Vazquez Sabariego" <ruth.sabariego at kuleuven.be> am 18.04.2019
15:33:37

Von:
"Ruth Vazquez Sabariego" <ruth.sabariego at kuleuven.be>
An:
"a.eckert at e-und-a.ch" <a.eckert at e-und-a.ch>
Cc:
"getdp at onelab.info" <getdp at onelab.info>
Date:
18.04.2019 15:33 CEDT
Betreff:
Re: [Getdp] GetDP - diode as non-linear resistant

Hi Andreas,

As you have done, you must define:
- dummy regions for the diodes and include them in Diode_Cir;
- a resistance function that depends on the current {Iz}
GlobalTerm { NeverDt[ Resistance[{Iz}] * Dof{Iz} , {Iz} ]; In Diode_Cir; }
or the voltage (what you have done)
GlobalTerm { NeverDt[ Resistance[{Uz}] * Dof{Iz} , {Iz} ]; In Diode_Cir; }

I’ve done it for the case with current:
Ron = 1e-1; // small resistance (diode in state 'on')
Roff = 1e5 ; // big resistance (diode in state 'off')
Resistance[Diode_Cir] = ((\$1 >= 0)? Ron : Roff) ;

In this case, the voltage would be
UR[Diode_Cir] = Resistance[\$1] * \$1  ;

In your case, the function for the resistance should be modified.

After that you need to define the circuit with your diodes. For instance
for a single bridge rectifier:

{ Name ElectricalCircuit ; Type Network ;
Case Circuit {
{ Region Input ;  Branch {700, 800} ; }
// diodes
{ Region D1 ; Branch {800, 1} ; }
{ Region D2 ; Branch {700, 1} ; }
{ Region D3 ; Branch {999, 800} ; }
{ Region D4 ; Branch {999, 700} ; }

{ Region Crec ; Branch {2, 999}; }
{ Region Rload; Branch {2, 999}; }

// FE coil on DC side
{ Region Inductor ; Branch {1, 2} ; }
}
}

Hope that helps,
Ruth

—
Prof. Ruth V. Sabariego
KU Leuven
Dept. Electrical Engineering ESAT/Electa, EnergyVille
http://www.esat.kuleuven.be/electa
http://www.energyville.be

Free software: http://gmsh.info | http://getdp.info | http://onelab.info

On 17 Apr 2019, at 09:31, A.Eckert at eunda.ch wrote:

Hello everyone

I currently try enlarge the machine model to include external connections.
On of the aims is to model a 3-phased diode rectifier (B6-Bridge) which
uses 6 diodes to rectify the incoming waveforms.
In the example file Lib_Magnetodynamics2D_av_Cir.pro (
https://gitlab.onelab.info/getdp/getdp/blob/master/templates/Lib_Magnetodynamics2D_av_Cir.pro
), there's a hint/comment to use nonlinear resistors to simulate diodes.
Unfortunately I coudln't find an exact example how to implement it.

Following three lines are basically those related to the diodes out of the
above example:

Diode_Cir = Region[{}] ;

GlobalTerm { NeverDt[ Dof{Uz} , {Iz} ]; In Diode_Cir; }
GlobalTerm { NeverDt[ Resistance[{Uz}] * Dof{Iz} , {Iz} ]; In Diode_Cir; }

According to my understanding, the definition of such a resistance is
missing. I simplified the example to one diode.
I added the regions and allocated it to the Diode_Cir.

R_DIODE_1_A0 = Region[{1000012}];

Diode_Cir += Region[{R_DIODE_1_A0}];

In the last step, I set the dynamic resistance. In that case it's just the
input voltage.

Resistance[Region[{R_DIODE_1_A0}]] = \$1

The program itself successfully finishes. But basically all values are
-nan, so something runs badly wrong. When I replace \$1 in the line above,
through a fix number (e.g. 10 ), the program behaves as it should.
So there's probably still a mistake in the dynamic resistance calculation.

Any help is highly appreciated. Thank you very much.

Mit freundlichen Grüssen

Andreas Eckert
Forschung und Entwicklung / Research and Development
----------------------------------------------------
e+a  Elektromaschinen und Antriebe AG
Bachstrasse 10
CH-4313 Möhlin
----------------------------------------------------
Phone +41 61 855 92 84
Fax     +41 61 855 92 99
Mail a.eckert at e-und-a.ch

http://www.e-und-a.ch
----------------------------------------------------

CONFIDENTIALITY NOTICE
This communication and the information it contains is
intended for the person(s) or organisation(s) named
above and no other person(s) or organisation(s) and
may be confidential, legally privileged and protected
by law. Unauthorised use, copying or disclosure of any
of it may be unlawful. If you have received this
by email, telephone or facsimile. We will be happy to
accept a reversed charge call (call collect).
CONFIDENTIALITY NOTICE
This communication and the information it contains is intended for the
person(s) or organisation(s) named above and no other person(s) or
organisation(s) and may be confidential, legally privileged and protected
by law.
Unauthorised use, copying or disclosure of any of it may be unlawful. If
immediately by email, telephone or facsimile. We will be happy to accept a
reversed charge call (call collect).
_______________________________________________
getdp mailing list
getdp at onelab.info
http://onelab.info/mailman/listinfo/getdp

CONFIDENTIALITY NOTICE
This communication and the information it contains is intended for the person(s) or organisation(s) named above and no other person(s) or organisation(s) and may be confidential, legally privileged and protected by law.
Unauthorised use, copying or disclosure of any of it may be unlawful. If you have received this communication in error, please contact us immediately by email, telephone or facsimile. We will be happy to accept a reversed charge call (call collect).
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://onelab.info/pipermail/getdp/attachments/20190423/7a6b748b/attachment.html>
```