46 setDescription (
"DC");
50 dcsolver::dcsolver (
char *
n) :
nasolver<nr_double_t> (n) {
83 if (!strcmp (solver,
"CroutLU"))
85 else if (!strcmp (solver,
"DoolittleLU"))
87 else if (!strcmp (solver,
"HouseholderQR"))
89 else if (!strcmp (solver,
"HouseholderLQ"))
91 else if (!strcmp (solver,
"GolubSVD"))
95 int retry = -1, error, fallback = 0, preferred;
107 if (!strcmp (helper,
"LineSearch")) {
109 }
else if (!strcmp (helper,
"SteepestDescent")) {
111 }
else if (!strcmp (helper,
"Attenuation")) {
113 }
else if (!strcmp (helper,
"gMinStepping")) {
115 }
else if (!strcmp (helper,
"SourceStepping")) {
120 if (!
subnet->isNonLinear ()) {
133 "NOTIFY: %s: convergence reached after %d iterations\n",
137 if (!error) retry = -1;
143 if (preferred == helpers[fallback] && preferred) fallback++;
162 }
while (retry != -1);
195 if (
c->isNonLinear ())
c->restartDC ();
204 if (
c->isNonLinear ())
c->saveOperatingPoints ();
221 "LineSearch",
"Attenuation",
"SteepestDescent") },
int solve(void)
placehoder for solution function
void applyNodeset(bool nokeep=true)
#define CONV_GMinStepping
#define K
Absolute 0 in centigrade.
#define PROP_RNG_STR6(s1, s2, s3, s4, s5, s6)
#define catch_exception()
void setDescription(const char *n)
base class for qucs circuit elements.
void saveResults(const char *, const char *, int, qucs::vector *f=NULL)
void setCalculation(calculate_func_t f)
static void calc(dcsolver *)
The analysis class header file.
void print(const char *prefix=NULL)
The circuit class header file.
int solve_nonlinear(void)
#define CONV_SourceStepping
void saveOperatingPoints(void)
const char * getHelperDescription(void)
const char * getDescription(void)
#define CONV_SteepestDescent
char * getPropertyString(const char *)
void logprint(int level, const char *format,...)
void(* calculate_func_t)(nasolver< nr_type_t > *)