Though it has been more than one year since you ask this question, I think it might be helpful to leave a comment here in case someone has the same problem (like myself in twenty minutes ago). I find these values could be find in the log files named "yourschematicname.log" in the folder storing your schematics. This holds true for both BJT and CMOS. And I am sure that they vary when you modify the DC bias point.
Parasitic capacitances of BJT:
Parasitic capacitances of NMOS:
How spice managed to solve such a huge system of nonlinear equations quickly and without running out of memory ?
Google sparse matrix solver.
A good SPICE very likely defaults (or knows when to switch to) a sparse matrix solver, since large circuits typically produce sparse matrices (each node connects to only a small fraction of the branches) it would be an obvious optimization to use (or have available) a sparse matrix solver in a SPICE. Even Nagel's original 1975 report (Thesis?) on SPICE discusses using sparse matrix methods.
Matlab certainly has a sparse matrix solver available, but you probably have to invoke it explicitly.
Qucs may not have this capability, or it might not be implemented particularly well, because it's a relatively raw open source project and its developers might not have got to the point of testing it on anything bigger than a toy problem.
(Hat tip to @jonk for the link to the Nagel report)
Is this example fair enough ? i mean do we need to consider more practical circuits ?
I would think you want to demonstrate your solver on a wide variety of different types of circuits. You probably want to consider circuits that are known to produce ill-conditioned matrices. Positive feedback circuits also often produce difficulties for non-linear solvers.
and if so can any one give an example for a circuit(s) where DC operating point simulation might be the bottleneck of the simulation time?
I would expec this to be common in any ill-conditioned circuit when setting up an AC simulation.
Is the DC operating point the simulation type we should be targeting ? i mean should we focus to interface our solver to other types of simulations e.g. the transient analysis ?
The other main simulation types (ac and transient) only require linear solvers. The AC simulation explicitly is about small variations about the operating point, so that the circuit can can be considered linear by perturbation theory. The transient solver linearizes the circuit at each time step, but re-calculates the local linear equivalent circuit for each time step. So if you're trying to demonstrate a non-linear solver, the DC solver is the one to demonstrate.
Best Answer
On the ngspice side of things, you need to include the model in your circuit, using one of various commands.
The simplest is to put the .model into your netlist, and use the name to refer to it, e.g. your model looks like this:
.model D1N914 D(Is=168.1E-21 N=1 Rs=.1 Ikf=0 Xti=3 Eg=1.11 Cjo=4p M=.3333 + Vj=.75 Fc=.5 Isr=100p Nr=2 Bv=100 Ibv=100u Tt=11.54n)
Note ngspice seems to have a problem with a couple of parameters in this model (Isr and Nr), so the simulation may be unrealistic as I removed them just to get things working.
It appears to be a psice model, and (according to LTSpice):
Isr = Recombination current parameter Nr = Isr emission coefficient.
I don't think they will have much effect on the simulation, likely high order Is effects added into the commercial spices.
So here is an example netlist (with Isr and Nr removed, see above):
V1 1 0 5
R1 1 2 1k
D1 2 3 D1N914
Vdummy 3 0 0
.model D1N914 D(Is=168.1E-21 N=1 Rs=.1 Ikf=0 Xti=3 Eg=1.11 Cjo=4p M=.3333 + Vj=.75 Fc=.5 Bv=100 Ibv=100u Tt=11.54n)
*.option noacct .dc V1 0 10 1
*.print i(Vdummy)
.end
If we type plot i(Vdummy), we get this:
The second option would be to do something like add it to a modelcard and do .include\xxxx\xxx\modelcard.diode into your netlist. I have not tested this option though, only the first which works fine. I imagine there is some way of linking the modelcard to the symbol Matt describes in his answer (in LTspice you add the file as one of the symbol parameters)