1 #include <../../nmodlconf.h> 91 dspace =
install(
"delta_x", NAME);
102 partialcolon =
ITM(q);
105 Sprintf(
buf,
"if (error=crank(%d, %s, %s, %s, delta_%s, %s, %s, _pbound%d, &_parwork%d))return error;\n",
107 indepsym->
name, dspace->
name, indepsym->
name, ident, ident);
109 Sprintf(
buf,
"static double *_pbound%d[4], _bnd%d_0, _bnd%d_N, *_parwork%d;\n",
110 ident, ident, ident, ident);
130 diag(
"Two partial equations for same state: ",
SYM(q8)->
name);
144 diag(pv[2]->
name,
"is not a STATE");
146 if (strcmp(pv[2]->
name, pv[0]->
name + 1)) {
147 diag(pv[2]->
name,
"' must be the time derivative");
149 for (i=0; i<4; i++) {
150 if (!(pv[i]->
subtype &
ARRAY) || (pv[i]->araydim != dim)) {
151 diag(pv[i]->
name,
"dimension differs from STATE var");
155 partialcolon = q2->
prev;
171 static int seepartial = 0;
173 diag(
"Only one partial block currently allowed", (
char *)0);
177 "within the PARTIAL block must occur at least one equation with the syntax ---\n",
178 "~ V' = F*DEL2(V) + G\n");
185 for (i=0; i<4; i++) {
190 partialcolon =
ITM(q);
197 diag(
"Duplicate boundary condition for ", s->
name);
205 for (i=0; i<2; i++) {
208 diag(
"Neumann and Dirichlet conditions",
209 "specified on same side");
221 for (i=0; i<4; i++) {
245 diag(
"Boundary condition: No partial equation for ",
268 if (
SYM(qfirstlast)->type == FIRST) {
void deltokens(Item *q1, Item *q2)
void massagepartial(Item *q1, Item *q2, Item *q3, Item *q6)
#define ITERATE(itm, lst)
Item * lappendsym(List *list, Symbol *sym)
void parminstall(Symbol *n, char *num, char *units, char *limits)
void movelist(Item *q1, Item *q2, List *s)
void partial_eqn(Item *q2, Item *q4, Item *q8, Item *q11)
void solv_partial(Item *qsol, Symbol *fun)
NMODL parser global flags / functions.
static Item * partialcolon
void partial_bndry(int type, Item *qvar, Item *qfirstlast, Item *qexpr, Item *qlast)
void replacstr(Item *q, char *s)