1 #include <../../nmodlconf.h>
90 dspace =
install(
"delta_x", NAME);
97 for (
i = 0;
i < 4;
i++) {
105 "if (error=crank(%d, %s, %s, %s, delta_%s, %s, %s, _pbound%d, &_parwork%d))return "
118 "static double *_pbound%d[4], _bnd%d_0, _bnd%d_N, *_parwork%d;\n",
131 static int ident = 1;
142 diag(
"Two partial equations for same state: ",
SYM(q8)->
name);
144 q =
q->next->next->next->next;
152 q->itemtype = ident++;
159 diag(
pv[2]->
name,
"' must be the time derivative");
161 for (
i = 0;
i < 4;
i++) {
163 diag(
pv[
i]->
name,
"dimension differs from STATE var");
182 static int seepartial = 0;
184 diag(
"Only one partial block currently allowed", (
char*) 0);
187 diag(
"within the PARTIAL block must occur at least one equation with the syntax ---\n",
188 "~ V' = F*DEL2(V) + G\n");
195 for (
i = 0;
i < 4;
i++) {
208 diag(
"Duplicate boundary condition for ", s->
name);
216 for (
i = 0;
i < 2;
i++) {
219 diag(
"Neumann and Dirichlet conditions",
"specified on same side");
231 for (
i = 0;
i < 4;
i++) {
236 Sprintf(
buf,
"_pbound%d[%d] = &_bnd%d_N;\n", ident,
i, ident);
240 Sprintf(
buf,
"_pbound%d[%d] = &_bnd%d_0;\n", ident,
i, ident);
253 diag(
"Boundary condition: No partial equation for ", s->
name);
274 if (
SYM(qfirstlast)->
type == FIRST) {
#define ITERATE(itm, lst)
NMODL parser global flags / functions.
void movelist(Item *q1, Item *q2, List *s)
void replacstr(Item *q, char *s)
void deltokens(Item *q1, Item *q2)
Item * lappendsym(List *list, Symbol *sym)
void parminstall(Symbol *n, char *num, char *units, char *limits)
void solv_partial(Item *qsol, Symbol *fun)
void massagepartial(Item *q1, Item *q2, Item *q3, Item *q6)
void partial_eqn(Item *q2, Item *q4, Item *q8, Item *q11)
static Item * partialcolon
void partial_bndry(int type, Item *qvar, Item *qfirstlast, Item *qexpr, Item *qlast)