Skip to content

Commit

Permalink
Merge pull request #1 from tinix84/master
Browse files Browse the repository at this point in the history
GeckoCIRCUITS collection
  • Loading branch information
Yatekii authored Sep 10, 2020
2 parents 7f5deb3 + 604acae commit 4550c08
Show file tree
Hide file tree
Showing 725 changed files with 1,615,084 additions and 859 deletions.
4 changes: 3 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -8,4 +8,6 @@ dist/
.classpath
.settings
.vscode
.project
.project
/bin_jdk13/jdk-13.0.2
/bin_jdk8/jdk1.8.0_261
34 changes: 34 additions & 0 deletions FAQ.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
# FAQ
(transcription of http://www.gecko-research.com/about-us.html )
## What was your motivation to write another simulator?

In fact, GeckoCIRCUITS is just part of an integrated package of tools we will provide for power electronics simulation. The combined platform allows very fast and highly accurate multi-domain simulation. Within the Power Electronic Systems Laboratory (PES) at the ETH Zurich we experienced a need for a tightly integrated tool with a convenient user interface. Our goal was to create a multi-domain simulation tool to reduce development time and increase product quality.

Our design goals were:

- Thermo-electrical simulation made easy, e.g. transient junction temperatures, or short-term overload temperatures.
- To integrate features like the EMI-Testreceiver for EMI filter design. Sometimes new features are needed to solve a design problem quickly. With GeckoCIRCUITS this now can be done.
- Testing new models and algorithms. Most of the researchers of the PES, ETH Zurich, also build hardware. So we have a direct access to testing and verifying our theories.
- To establish an easy-to-learn tool for the PhD and MSc students taking power electronics courses at the ETH Zurich.
- To get a very fast circuit simulator with an open and easy-to-use Java-Interface.
With Java, there are no problems with a partly inhomogeneous IT environment (Windows, Unix, Solaris).

## What does "Gecko" mean?

We spend some time thinking about a good company name. We didn't want to have another acronym with "sim" or "soft" included, and/or with a diode in the logo. Concerning the logo we had a longer discussion about frogs vs. chameleons, and finally we agreed on the gecko. Geckos are flexible, quick, useful and have some unique and amazing abilities ... just like our software.

## The simulator is written in Java. Isn't Java too slow for this task?

When we wrote iPES in 2001, Java was much slower than now. Back then, we had to optimize the speed of the simulation code in order to make the numerical simulations work in a web browser. With this knowledge "how to make Java really fast" we developed the algorithms of GeckoCIRCUITS. Since then the calculation speed of the Java Virtual Machine has improved significantly. Today, GeckoCIRCUITS is extremely fast. It would not be even faster if written in C++, especially when you combine the circuit simulation with thermal simulation. Perform your own benchmarks with our free trial version (trial@gecko-research.com)!

## We are a small company with limited resources. We would like to integrate simulation into our design process but ...

Gecko-software was designed to solve this problem: It is very easy to learn and use, and performs the hard work of calculating losses and junction temperatures, building thermal models, optimizing heat sink structures, or calculating EMI effects without much user-interaction. One can become familiar with the software and the features within a short time, and will be able to use it even on a part-time base. We think it is the perfect way to get multi-domain aspects into your power electronic design.

## Who is behind "Gecko-Research"?

Gecko-Research was founded by Uwe Drofenik, Andreas Müsing, Johann W. Kolar and Beat Seiler in 2008 as an ETH Zurich Spin-Off. Gecko software is based on research results of the Multi-Domain Simulation and Optimization Group of the PES, ETH Zurich. The software is widely used in research projects at PES aiming for advanced power electronics concepts and finally hardware prototypes.

## My background is electrical engineering. But I would like to get knowledge in thermal design. How much effort is this?

Some people say it needs at least 1000 hours to become an expert in any field, and they are probably right. Thermal design is not part of the typical education in electrical engineering but it is becoming more and more important, especially in power electronics. Therefore, getting experience in thermal design would be an excellent extension to your expertise. You can get a quick and easy start with one of our free reports. Gain experience with GeckoCIRCUITS' built-in loss calculation and thermal design tools. It's a step-by-step process but it will be very rewarding.
7 changes: 5 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,9 @@
# GeckoCircuits

## What is it?
## What is GeckoCIRCUITS?
See the [FAQ](FAQ.md) section

## What is this repo?

This is a JDK13 runnable port of [GeckoCircuits](https://sourceforge.net/projects/geckocircuits/).
The main goal was to enable HiDPI monitors to display GeckoCircuits in reasonable size.
Expand Down Expand Up @@ -41,4 +44,4 @@ To run on HiDPI screens, use

As you might have recognized during the build, 11 tests were skipped. Those were excluded as the codebase is hard to read and the tests only seem to fail because of some expectations how the environment should luck which is not given outside Netbeans.

Feel free to fix those tests.
Feel free to fix those tests.
96 changes: 96 additions & 0 deletions TOC.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,96 @@
# GeckoCircuits

## What is it?
it a simulator for power electronic circuit, designed by power electronic engineer :)


## How do I run it?
use ./bin_jdk8/run_gecko_with_local_jdk.bat if you want to use the local jdk1.8.0_261
use ./bin_jdk8/run_gecko.bat if you want to use the java version installed in your machine

## How to get started?
There are many example, but really useful are the PDF tutorials:
- [Beginner tutorial](/GeckoCIRCUITStutorials/GeckoCIRCUITS_beginners_tutorial.pdf)
- [Basic tutorial](/GeckoCIRCUITStutorials/GeckoCIRCUITS_tutorial_basics_EN.pdf)

## Examples
### DC/DC topologies
- Buck converter
- [buck with ideal switch](./resources/Education_ETHZ\ex_1.ipes)
- ".\resources\education_www.ipes.ethz.ch\buck_simple.ipes"
- [high side buck with ideal switch](./resources/Education_ETHZ/LESI_R3.ipes)
- [Quasi resonant buck converter](Education_ETHZ\LESI_R5.ipes)
-
- Boost converter

- Buck/boost converter
- [buck-boost simple](".\resources\education_www.ipes.ethz.ch\buckBoost_simple.ipes")
- [buck-boost with open-loop control and ideal switch](./resources/Topologies/BuckBoost_const_dutyCycle.ipes)
- [buck-boost with open-loop control with thermal model](./resources/Topologies/BuckBoost_thermal.ipes)

- [Cuk converter](".\resources\education_www.ipes.ethz.ch\cuk_simple.ipes")
- [Sepic converter](".\resources\education_www.ipes.ethz.ch\sepic_simple.ipes")

- [Flyback](): #TODO

- [Flybuck](): #TODO

- [Half bridge](): #TODO

- Full bridge
- [Unidirectional full bridge with half wave rectifier](./resources/Education_ETHZ\ex_2.ipes)

### AC/DC topologies ()
- [Flyback AC charger Vin=120Vac Vout=100Vdc](./resources/Education_ETHZ\ex_3_pwm.ipes)
- Vienna rectifier
- Swiss rectifier
-
- Three phase Six Switches (VSR) rectifier
- [Three phase VSR rectifier 250kW](./resources/Topologies/three-phase_VSR_simpleControl_250kW.ipes)
- [Three phase VSR rectifier 10kW with thermal model](./resources/Topologies/ThreePhase-VSR_10kW_thermal.ipes)
- [Single phase boost control with current control](".\resources\education_www.ipes.ethz.ch\boostPFC_currentControl.ipes")
- [Single phase boost control with voltage control](".\resources\education_www.ipes.ethz.ch\boostPFC.ipes")

### DC/AC topologies
- [Three phase Inverter](Education_ETHZ\LESI_R7.ipes)
- [Single phase full bridge inverter with hysteretic control mode](".\resources\education_www.ipes.ethz.ch\singlePhase_PWM_converter.ipes")
-
### AC/AC topologies
- [Three phase Ultra Sparse Matrix Converter](./UltraSparseMatrixConverter.ipes)
- [Three phase Sparse Matrix Converter with thermal model](./three-phase_ACAC_sparsematrixConverter_junction_temperature.ipes)

### Various
- [Gate driver supply with voltage doubler and NE555](Education_ETHZ\LESI_R2.ipes)
- [Series resonant converter with phasor diagram](Education_ETHZ\LESI_R6.ipes)


### Rectifiers
- [Single phase diode rectifier with snubber](".\resources\education_www.ipes.ethz.ch\diode_RL_singlePH_trafo.ipes")
- [Three phase diodes rectifier with snubber](Education_ETHZ\LESI_R4.ipes)
- [Thyristor rectifier with active turnoff?](Education_ETHZ\LESI_R7.ipes)
- [2phaseDiodeBridge_AC-Inductor.ipes](".\resources\education_www.ipes.ethz.ch\2phaseDiodeBridge_AC-Inductor.ipes")
- [2phaseDiodeBridge_DC-Inductor.ipes](".\resources\education_www.ipes.ethz.ch\2phaseDiodeBridge_DC-Inductor.ipes")
- [thyristor_commutation_3ph_trafo.ipes](".\resources\education_www.ipes.ethz.ch\thyristor_commutation_3ph_trafo.ipes")
- [thyristor_freeWheelingDiode.ipes](".\resources\education_www.ipes.ethz.ch\thyristor_freeWheelingDiode.ipes")
- [thyristor_interface_trafo.ipes](".\resources\education_www.ipes.ethz.ch\thyristor_interface_trafo.ipes")
- [thyristor_Jakopovic.ipes](".\resources\education_www.ipes.ethz.ch\thyristor_Jakopovic.ipes")
- [thyristor_lossOfCommutation.ipes](".\resources\education_www.ipes.ethz.ch\thyristor_lossOfCommutation.ipes")
- [thyristor_RL_2phBridge.ipes](".\resources\education_www.ipes.ethz.ch\thyristor_RL_2phBridge.ipes")
- [thyristor_RL_3ph_trafo.ipes](".\resources\education_www.ipes.ethz.ch\thyristor_RL_3ph_trafo.ipes")
- [thyristor_RL_3phBridge.ipes](".\resources\education_www.ipes.ethz.ch\thyristor_RL_3phBridge.ipes")
- [thyristor_RL_single.ipes](".\resources\education_www.ipes.ethz.ch\thyristor_RL_single.ipes")
- [thyristor_RL_singlePh_trafo.ipes](".\resources\education_www.ipes.ethz.ch\thyristor_RL_singlePh_trafo.ipes")

## How can I contribute?
I dont know anything is welcome, any discussion is always helpful :)

## Possible improvements
Designer for power electronic that run in top of Gecko
Open new file in additional windows
Improve gui
add subblock
add webserver xrpc with binary file
add CISPR25 block
add EMI filter designer
magnetics designer based on AI?? :)

Binary file removed TestModels/Education_ETHZ/LESI_R4.ipes
Binary file not shown.
Binary file removed TestModels/Education_ETHZ/ex_2.ipes
Binary file not shown.
Binary file removed TestModels/JAVA_Block/demo_JAVA_Block.ipes
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file removed TestModels/OpAmp/opamp_frequency.ipes
Binary file not shown.
Binary file not shown.
Binary file removed TestModels/Topologies/BuckBoost_thermal.ipes
Binary file not shown.
Binary file not shown.
Binary file removed TestModels/UltraSparseMatrixConverter.ipes
Binary file not shown.
Binary file removed TestModels/three-phase_VSR_simpleControl_250kW.ipes
Binary file not shown.
Binary file not shown.
Binary file added gecko2octave/LLC.ipes
Binary file not shown.
Binary file added gecko2octave/example.ipes
Binary file not shown.
70 changes: 70 additions & 0 deletions gecko2octave/gecko2octave.m
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
% GECKO2OCTAVE
%
% Runs the Gecko simulation filename and sets the global parameter_names to parameter_values.
%
% The inputs to a scope named OUTSCOPE in the simulation are returned in the matrix waveforms.
% All input terminals of the scope must be labelled.
%
%
function [t, waveforms] = gecko2octave(filename, parameter_names, parameter_values, gecko_path)

javaaddpath(gecko_path)

gesim = javaObject("gecko.GeckoRemote");

try
gesim.startGui(43035);
catch

end

try
gesim.connectToGecko(43035);
catch

end

try
gesim.openFile(filename);
catch
gesim.shutdown();
error('Could not open file.');
end

try
for k = 1:length(parameter_names)
gesim.setGlobalParameterValue(parameter_names{k},parameter_values(k));
end
catch
gesim.shutdown();
error('Could not set parameters.');
end

try
gesim.runSimulation();
catch
gesim.shutdown();
error('Could not run simulation.');
end

try
Tsim = gesim.getSimulationTime();
Nw = gesim.getParameter("OUTSCOPE","numberInputTerminals");
waveforms = [];
for k = 1:Nw
labelname = gesim.getInputNodeName("OUTSCOPE",k-1);
waveforms = [waveforms gesim.getSignalData(labelname,0,Tsim,1)];
end
catch
gesim.shutdown();
error('Could not read waveforms.');
end

gesim.shutdown();

waveforms = rot90(waveforms);
[rows,cols] = size(waveforms);
t = linspace(0,Tsim,cols);
waveforms = [t;waveforms];

end
9 changes: 9 additions & 0 deletions gecko2octave/test_gecko2octave_run_LLC.m
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
gecko_path='../bin_jdk8/GeckoCIRCUITS.jar'
filename = './LLC.ipes'
parameter_names = ''
parameter_names = ''

[t, waveforms] = gecko2octave(filename, parameter_names, parameter_names, gecko_path);
plot(t, waveforms(2, :))
plot(t, waveforms(3, :))
plot(t, waveforms(4, :))
File renamed without changes.
File renamed without changes.
File renamed without changes.
Binary file added resources/Education_ETHZ/LESI_R4.ipes
Binary file not shown.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
44 changes: 44 additions & 0 deletions resources/Education_ETHZ/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
# GeckoCircuits

## What is it?

This is a JDK13 runnable port of [GeckoCircuits](https://sourceforge.net/projects/geckocircuits/).
The main goal was to enable HiDPI monitors to display GeckoCircuits in reasonable size.

The original Readme can be found [here](README.txt)

All the source is from the original author. We just modified it such that it runs with JDK13 and also set up a more or less sane Maven project.

Technokrat GmbH takes no credit whatsoever on the original codebase.

## Prerequisites

To build, you need maven 3 installed and a more recent JDK. Everything from JDK9 to JDK13 should work.

## Building

Then run

```
mvn package
mvn package assembly:single
```

This should build the `target/gecko-1.0-jar-with-dependencies.jar`.
It should have a proper class path set and includes all the dependency libs.

## Running

Run it with

```java -jar target/gecko-1.0-jar-with-dependencies.jar```

To run on HiDPI screens, use

```java -Dsun.java2d.uiScale=2 -jar gecko-1.0-jar-with-dependencies.jar```

## Tests

As you might have recognized during the build, 11 tests were skipped. Those were excluded as the codebase is hard to read and the tests only seem to fail because of some expectations how the environment should luck which is not given outside Netbeans.

Feel free to fix those tests.
File renamed without changes.
Binary file added resources/Education_ETHZ/ex_2.ipes
Binary file not shown.
File renamed without changes.
Binary file added resources/Education_ETHZ/img_readme/ex_1.PNG
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added resources/Education_ETHZ/img_readme/ex_2.PNG
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added resources/Education_ETHZ/img_readme/ex_3_pwm.PNG
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
<?xml version="1.0" encoding="UTF-8"?>
<inductor>
<core name="E55">
<coreType name="EE 3 air gaps">
<dimensions>
<h fixed="yes">0.027800000000000002</h>
<w fixed="yes">0.055</w>
<wi fixed="yes">0.0375</wi>
<wm fixed="yes">0.0172</wm>
<l fixed="yes">0.021</l>
<gap fixed="yes">0.0012</gap>
<hw fixed="yes">0.0185</hw>
</dimensions>
</coreType>
<stackedCores fixed="yes">1</stackedCores>
<coreMaterial>N87+</coreMaterial>
</core>
<winding name="AWG10">
<turns fixed="yes">36</turns>
<bobbin>
<wb fixed="yes">0.001015</wb>
<hb fixed="yes">0.033299999999999996</hb>
</bobbin>
<windingType name="Solid Round" split="no">
<dimensions>
<d fixed="yes">0.0025882</d>
<s fixed="yes">4.44E-5</s>
<yd fixed="yes">0.0</yd>
</dimensions>
</windingType>
<pattern align="square" distribute="continuous" start="bottom"/>
<windingMaterial>Copper (drawn wire)</windingMaterial>
</winding>
</inductor>
Loading

0 comments on commit 4550c08

Please sign in to comment.