61 #if !defined(VINLINE_MGPARM) 71 VASSERT( thee != VNULL);
115 if ((*thee) != VNULL) {
117 Vmem_free(VNULL, 1,
sizeof(
BEMparm), (
void **)thee);
127 int i, tdime[3], ti, tnlev[3], nlev;
131 Vnm_print(0,
"BEMparm_check: checking BEMparm object of type %d.\n",
136 Vnm_print(2,
"BEMparm_check: not filled!\n");
143 Vnm_print(2,
"BEMparm_check: type not set");
149 Vnm_print(2,
"BEMparm_check: treecode order is less than 1");
153 Vnm_print(2,
"BEMparm_check: treecode leaf size is less than 1");
156 if (thee->
mac > 1 || thee->
mac <= 0) {
157 Vnm_print(2,
"BEMparm_check: MAC criterion fails");
161 if (thee->
mesh > 2 || thee->
mesh < 0) {
162 Vnm_print(2,
"BEMparm_check: mesh must be 0 (msms) or 1 and 2 (NanoShaper)");
167 Vnm_print(2,
"BEMparm_check: outdata must be 0, 1 (vtk), or 2 (not specified)");
178 VASSERT(thee != VNULL);
179 VASSERT(parm != VNULL);
210 VPRIVATE Vrc_Codes BEMparm_parseTREE_ORDER(
BEMparm *thee, Vio *sock) {
212 char tok[VMAX_BUFSIZE];
215 VJMPERR1(Vio_scanf(sock,
"%s", tok) == 1);
216 if (sscanf(tok,
"%d", &ti) == 0) {
217 Vnm_print(2,
"NOsh: Read non-integer (%s) while parsing TREE_ORDER \ 220 }
else if (ti <= 0) {
221 Vnm_print(2,
"parseBEM: tree_order must be greater than 0!\n");
228 Vnm_print(2,
"parseBEM: ran out of tokens!\n");
233 VPRIVATE Vrc_Codes BEMparm_parseTREE_N0(
BEMparm *thee, Vio *sock) {
235 char tok[VMAX_BUFSIZE];
238 VJMPERR1(Vio_scanf(sock,
"%s", tok) == 1);
239 if (sscanf(tok,
"%d", &ti) == 0) {
240 Vnm_print(2,
"NOsh: Read non-integer (%s) while parsing TREE_N0 \ 243 }
else if (ti <= 0) {
244 Vnm_print(2,
"parseBEM: tree_n0 must be greater than 0!\n");
251 Vnm_print(2,
"parseBEM: ran out of tokens!\n");
256 VPRIVATE Vrc_Codes BEMparm_parseMAC(
BEMparm *thee, Vio *sock) {
258 char tok[VMAX_BUFSIZE];
261 VJMPERR1(Vio_scanf(sock,
"%s", tok) == 1);
262 if (sscanf(tok,
"%lf", &tf) == 0) {
263 Vnm_print(2,
"NOsh: Read non-float (%s) while parsing mac \ 266 }
else if (tf <= 0.0 || tf > 1.0) {
267 Vnm_print(2,
"parseBEM: mac must be between 0 and 1!\n");
269 }
else thee->
mac = tf;
274 Vnm_print(2,
"parseBEM: ran out of tokens!\n");
279 VPRIVATE Vrc_Codes BEMparm_parseMESH(
BEMparm *thee, Vio *sock) {
281 char tok[VMAX_BUFSIZE];
284 VJMPERR1(Vio_scanf(sock,
"%s", tok) == 1);
285 if (sscanf(tok,
"%d", &ti) == 0) {
286 Vnm_print(2,
"NOsh: Read non-integer (%s) while parsing MESH \ 289 }
else if (ti < 0 || ti > 2) {
290 Vnm_print(2,
"parseBEM: mesh must be 0 (msms), 1 (NanoShaper_ses), \ 291 or 2 (NanoShaper_Skin)!\n");
293 }
else thee->
mesh = ti;
298 Vnm_print(2,
"parseBEM: ran out of tokens!\n");
303 VPRIVATE Vrc_Codes BEMparm_parseOUTDATA(
BEMparm *thee, Vio *sock) {
305 char tok[VMAX_BUFSIZE];
308 VJMPERR1(Vio_scanf(sock,
"%s", tok) == 1);
309 if (sscanf(tok,
"%d", &ti) == 0) {
310 Vnm_print(2,
"NOsh: Read non-integer (%s) while parsing OUTDATA \ 313 }
else if (ti < 0 || ti > 2) {
314 Vnm_print(2,
"parseBEM: outdata must be 0, 1 (vtk), \ 315 or 2 (unspecified)!\n");
322 Vnm_print(2,
"parseBEM: ran out of tokens!\n");
331 Vnm_print(2,
"parseBEM: got NULL thee!\n");
335 Vnm_print(2,
"parseBEM: got NULL socket!\n");
339 Vnm_print(0,
"BEMparm_parseToken: trying %s...\n", tok);
343 return BEMparm_parseTREE_ORDER(thee, sock);
345 return BEMparm_parseTREE_N0(thee, sock);
347 return BEMparm_parseMAC(thee, sock);
349 return BEMparm_parseMESH(thee, sock);
351 return BEMparm_parseOUTDATA(thee, sock);
353 Vnm_print(2,
"parseBEM: Unrecognized keyword (%s)!\n", tok);
enum eBEMparm_CalcType BEMparm_CalcType
Declare BEMparm_CalcType type.
VPUBLIC void BEMparm_copy(BEMparm *thee, BEMparm *parm)
Copy object info into thee.
VPUBLIC BEMparm * BEMparm_ctor(BEMparm_CalcType type)
Construct BEMparm object.
VPUBLIC void BEMparm_dtor(BEMparm **thee)
Object destructor.
#define VEMBED(rctag)
Allows embedding of RCS ID tags in object files.
VPUBLIC int Vstring_strcasecmp(const char *s1, const char *s2)
Case-insensitive string comparison (BSD standard)
VPUBLIC void BEMparm_dtor2(BEMparm *thee)
FORTRAN stub for object destructor.
VPUBLIC Vrc_Codes BEMparm_ctor2(BEMparm *thee, BEMparm_CalcType type)
FORTRAN stub to construct BEMparm object.
Parameter structure for BEM-specific variables from input files.
VPUBLIC Vrc_Codes BEMparm_parseToken(BEMparm *thee, char tok[VMAX_BUFSIZE], Vio *sock)
Parse an MG keyword from an input file.
VPUBLIC Vrc_Codes BEMparm_check(BEMparm *thee)
Consistency check for parameter values stored in object.