Replies: 1 comment 2 replies
-
|
Hey @biergaizi I think introducing initial conditions into the software is a wonderful idea. I wonder if the other commercial software have this feature. I'll check soon enough. Let's look at the ideas you presented:
In a sense, this is all that it takes. You set up the initial condition along the mesh, applying voltages to the mesh nodes, such that an integration will obtain the voltage you required.
This is, naturally, the optimal solution, albeit computationally expensive. You can solve this by setting to excitations that start in two separate times. One after a long wait period, one after release. If you are only interested in the discharge behavior, you can only set a long DC voltage excitation
It may be possible. If you look at the excitation setup in the C++ code, you can see that a custom excitation is available. I'd dig into that. case Excitation::GaissianPulse:
m_Excite_Elem->QueryDoubleAttribute("f0",&f0);
m_Excite_Elem->QueryDoubleAttribute("fc",&fc);
exc->SetupGaussianPulse(f0, fc);
break;
case Excitation::Sinusoidal: // sinusoidal excite
m_Excite_Elem->QueryDoubleAttribute("f0",&f0);
exc->SetupSinusoidal(f0);
break;
case Excitation::DiracPulse:
FDTD_Opts->QueryDoubleAttribute("f_max",&f_max);
exc->SetupDiracPulse(f_max);
break;
case Excitation::Step:
FDTD_Opts->QueryDoubleAttribute("f_max",&f_max);
exc->SetupStepExcite(f_max);
break;
case Excitation::CustomExcite:
m_Excite_Elem->QueryDoubleAttribute("f0",&f0);
FDTD_Opts->QueryDoubleAttribute("f_max",&f_max);
exc->SetupCustomExcite(m_Excite_Elem->Attribute("Function"), f0, f_max);
break;
}I have no idea if changing the core code is necessary, at this moment.
I discussed this earlier. It's not so much as "distorts", as much as understanding the physical meaning of it...
If I had to choose an idea, it would be interacting with an external circuit solver that has transient abilities. It is a nightmare, but it is the most generic solution. The time-step parameters can be pushed back and forth, creating the dream that we call a "true transient simulation". |
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
-
Here's a brainteaser for all experts: What would be a good strategy for simulating transients from an already-charged capacitor, similar to setting an initial condition in circuit simulators? This way, perhaps one can realistically recreate many historical experiments of E&M, and it would be educational and insightful. Of course, we normally use openEMS for parameter extractions, so these kinds of simulations rarely have practical uses, and is a curiosity at best, so I call it a brainteaser.
Idea 1: Flat Port and Hard Excitation?
My solution: For simple parallel-plate capacitors, I guess it's probably doable by defining a lumped port as large as the metal plates, and by setting the excitation signal as a short hard pulse. During the first timestep, the lumped port adds a field directly to the simulation box as its initial condition, then the port is turned off, allowing the simulation to free-run in later timesteps.
Idea 2: Use the Field of One Simulation As the Initial Condition of the Next?
However hard-excitation method is only an approximation. To really define a charge capacitor as the initial condition, it requires prior knowledge of the entire electric field around the capacitor, including fringe fields, which in itself requires E&M simulation, especially for capacitors with irregular shapes.
So perhaps the only complete way is running a bootstrap simulation with a removed or disconnected load to charge the capacitor to its steady-state, perhaps by using a sufficiently long excitation and stopping the simulation in the middle. Then the electric field of the simulation box is exported. Finally the next simulation is restarted with the load connected using the previous electric field as the initial condition.
However, this method still has two problems:
Your Idea?
I wonder if anyone has better ideas in similar simulations, especially if one wants to generalize it to capacitors of arbitrary materials and shapes. I know for sure that openEMS is not really designed for time-variant objects - supporting it in general would be a multi-physics problem far beyond the scope of openEMS. But as a brain-teaser, I wonder if anyone has better ideas.
Beta Was this translation helpful? Give feedback.
All reactions