You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
99 lines
2.0 KiB
99 lines
2.0 KiB
/*============================================================================
|
|
FILE ENH.c
|
|
|
|
MEMBER OF process XSPICE
|
|
|
|
Copyright 1991
|
|
Georgia Tech Research Corporation
|
|
Atlanta, Georgia 30332
|
|
All Rights Reserved
|
|
|
|
PROJECT A-8503
|
|
|
|
AUTHORS
|
|
|
|
9/12/91 Bill Kuhn
|
|
|
|
MODIFICATIONS
|
|
|
|
<date> <person name> <nature of modifications>
|
|
|
|
SUMMARY
|
|
|
|
This file contains routines used for general enhancements made
|
|
to the Berkeley SPICE3 core.
|
|
|
|
INTERFACES
|
|
|
|
ENHreport_conv_prob()
|
|
|
|
REFERENCED FILES
|
|
|
|
None.
|
|
|
|
NON-STANDARD FEATURES
|
|
|
|
None.
|
|
|
|
============================================================================*/
|
|
|
|
/*=== INCLUDE FILES ===*/
|
|
|
|
|
|
#include <stdio.h>
|
|
#include "ngspice/enh.h"
|
|
|
|
/*
|
|
ENHreport_conv_prob()
|
|
|
|
Report convergence problem messages from nodes, branch currents,
|
|
or instances. This function is setup to allow providing the SI
|
|
with information identifying the type of convergence problem.
|
|
For now, it simply writes to stdout.
|
|
*/
|
|
|
|
|
|
void ENHreport_conv_prob(
|
|
Enh_Conv_Source_t type, /* node, branch, or instance */
|
|
char *name, /* the name of the node/branch/instance */
|
|
char *msg) /* an optional message */
|
|
{
|
|
|
|
char *type_str;
|
|
char *msg_str;
|
|
|
|
/* Convert the type enum to a string for printing */
|
|
switch(type) {
|
|
|
|
case ENH_ANALOG_NODE:
|
|
case ENH_EVENT_NODE:
|
|
type_str = "node";
|
|
break;
|
|
|
|
case ENH_ANALOG_BRANCH:
|
|
type_str = "branch current";
|
|
break;
|
|
|
|
case ENH_ANALOG_INSTANCE:
|
|
case ENH_EVENT_INSTANCE:
|
|
case ENH_HYBRID_INSTANCE:
|
|
type_str = "instance";
|
|
break;
|
|
|
|
default:
|
|
printf("\nERROR: Internal error in ENHreport_conv_prob - impossible type\n");
|
|
return;
|
|
}
|
|
|
|
/* Check for msg == NULL and turn into null string */
|
|
if(msg)
|
|
msg_str = msg;
|
|
else
|
|
msg_str = "";
|
|
|
|
/* Print the convergence problem report */
|
|
printf("\nWARNING: Convergence problems at %s (%s). %s\n",
|
|
type_str, name, msg_str);
|
|
|
|
} /* ENHreport_conv_prob */
|
|
|