61 #if !defined(VINLINE_MGPARM) 70 VASSERT( thee != VNULL);
80 if (thee == VNULL)
return 0;
110 for (i=0; i<3; i++) thee->
glen[i] = source->
glen[i];
134 if ((*thee) != VNULL) {
136 Vmem_free(VNULL, 1,
sizeof(
FEMparm), (
void **)thee);
149 Vnm_print(2,
"FEMparm_check: not filled!\n");
153 Vnm_print(2,
"FEMparm_check: type not set!\n");
157 Vnm_print(2,
"FEMparm_check: glen not set!\n");
161 Vnm_print(2,
"FEMparm_check: etol not set!\n");
165 Vnm_print(2,
"FEMparm_check: ekey not set!\n");
169 Vnm_print(2,
"FEMparm_check: akeyPRE not set!\n");
173 Vnm_print(2,
"FEMparm_check: akeySOLVE not set!\n");
177 Vnm_print(2,
"FEMparm_check: targetNum not set!\n");
181 Vnm_print(2,
"FEMparm_check: targetRes not set!\n");
185 Vnm_print(2,
"FEMparm_check: maxsolve not set!\n");
189 Vnm_print(2,
"FEMparm_check: maxvert not set!\n");
196 VPRIVATE Vrc_Codes FEMparm_parseDOMAINLENGTH(
FEMparm *thee,
202 char tok[VMAX_BUFSIZE];
204 for (i=0; i<3; i++) {
205 VJMPERR1(Vio_scanf(sock,
"%s", tok) == 1);
206 if (sscanf(tok,
"%lf", &tf) == 0) {
207 Vnm_print(2,
"parseFE: Read non-double (%s) while parsing \ 208 DOMAINLENGTH keyword!\n", tok);
216 Vnm_print(2,
"parseFE: ran out of tokens!\n");
221 VPRIVATE Vrc_Codes FEMparm_parseETOL(
FEMparm *thee,
226 char tok[VMAX_BUFSIZE];
228 VJMPERR1(Vio_scanf(sock,
"%s", tok) == 1);
229 if (sscanf(tok,
"%lf", &tf) == 0) {
230 Vnm_print(2,
"parseFE: Read non-double (%s) while parsing \ 231 ETOL keyword!\n", tok);
238 Vnm_print(2,
"parseFE: ran out of tokens!\n");
244 VPRIVATE Vrc_Codes FEMparm_parseEKEY(
FEMparm *thee,
248 char tok[VMAX_BUFSIZE];
251 VJMPERR1(Vio_scanf(sock,
"%s", tok) == 1);
265 Vnm_print(2,
"parseFE: undefined value (%s) for ekey!\n", tok);
271 Vnm_print(2,
"parseFE: ran out of tokens!\n");
276 VPRIVATE Vrc_Codes FEMparm_parseAKEYPRE(
FEMparm *thee, Vio *sock) {
278 char tok[VMAX_BUFSIZE];
281 VJMPERR1(Vio_scanf(sock,
"%s", tok) == 1);
291 Vnm_print(2,
"parseFE: undefined value (%s) for akeyPRE!\n", tok);
298 Vnm_print(2,
"parseFE: ran out of tokens!\n");
303 VPRIVATE Vrc_Codes FEMparm_parseAKEYSOLVE(
FEMparm *thee, Vio *sock) {
305 char tok[VMAX_BUFSIZE];
308 VJMPERR1(Vio_scanf(sock,
"%s", tok) == 1);
322 Vnm_print(2,
"parseFE: undefined value (%s) for akeyPRE!\n", tok);
328 Vnm_print(2,
"parseFE: ran out of tokens!\n");
333 VPRIVATE Vrc_Codes FEMparm_parseTARGETNUM(
FEMparm *thee, Vio *sock) {
335 char tok[VMAX_BUFSIZE];
338 VJMPERR1(Vio_scanf(sock,
"%s", tok) == 1);
339 if (sscanf(tok,
"%d", &ti) == 0) {
340 Vnm_print(2,
"parseFE: read non-int (%s) for targetNum!\n", tok);
347 Vnm_print(2,
"parseFE: ran out of tokens!\n");
352 VPRIVATE Vrc_Codes FEMparm_parseTARGETRES(
FEMparm *thee, Vio *sock) {
354 char tok[VMAX_BUFSIZE];
357 VJMPERR1(Vio_scanf(sock,
"%s", tok) == 1);
358 if (sscanf(tok,
"%lf", &tf) == 0) {
359 Vnm_print(2,
"parseFE: read non-double (%s) for targetNum!\n",
367 Vnm_print(2,
"parseFE: ran out of tokens!\n");
372 VPRIVATE Vrc_Codes FEMparm_parseMAXSOLVE(
FEMparm *thee, Vio *sock) {
374 char tok[VMAX_BUFSIZE];
377 VJMPERR1(Vio_scanf(sock,
"%s", tok) == 1);
378 if (sscanf(tok,
"%d", &ti) == 0) {
379 Vnm_print(2,
"parseFE: read non-int (%s) for maxsolve!\n", tok);
386 Vnm_print(2,
"parseFE: ran out of tokens!\n");
391 VPRIVATE Vrc_Codes FEMparm_parseMAXVERT(
FEMparm *thee, Vio *sock) {
393 char tok[VMAX_BUFSIZE];
396 VJMPERR1(Vio_scanf(sock,
"%s", tok) == 1);
397 if (sscanf(tok,
"%d", &ti) == 0) {
398 Vnm_print(2,
"parseFE: read non-int (%s) for maxvert!\n", tok);
406 Vnm_print(2,
"parseFE: ran out of tokens!\n");
411 VPRIVATE Vrc_Codes FEMparm_parseUSEMESH(
FEMparm *thee, Vio *sock) {
412 char tok[VMAX_BUFSIZE];
415 VJMPERR1(Vio_scanf(sock,
"%s", tok) == 1);
416 if (sscanf(tok,
"%d", &ti) == 0) {
417 Vnm_print(2,
"parseFE: read non-int (%s) for usemesh!\n", tok);
426 Vnm_print(2,
"parsePBE: ran out of tokens!\n");
438 Vnm_print(2,
"parseFE: got NULL thee!\n");
443 Vnm_print(2,
"parseFE: got NULL socket!\n");
448 return FEMparm_parseDOMAINLENGTH(thee, sock);
450 return FEMparm_parseETOL(thee, sock);
452 return FEMparm_parseEKEY(thee, sock);
454 return FEMparm_parseAKEYPRE(thee, sock);
456 return FEMparm_parseAKEYSOLVE(thee, sock);
458 return FEMparm_parseTARGETNUM(thee, sock);
460 return FEMparm_parseTARGETRES(thee, sock);
462 return FEMparm_parseMAXSOLVE(thee, sock);
464 return FEMparm_parseMAXVERT(thee, sock);
466 return FEMparm_parseUSEMESH(thee, sock);
VPUBLIC FEMparm * FEMparm_ctor(FEMparm_CalcType type)
Construct FEMparm.
VPUBLIC int FEMparm_ctor2(FEMparm *thee, FEMparm_CalcType type)
FORTRAN stub to construct FEMparm.
VPUBLIC void FEMparm_copy(FEMparm *thee, FEMparm *source)
Copy target object into thee.
Contains declarations for class APOLparm.
VPUBLIC void FEMparm_dtor2(FEMparm *thee)
FORTRAN stub for object destructor.
VPUBLIC Vrc_Codes FEMparm_parseToken(FEMparm *thee, char tok[VMAX_BUFSIZE], Vio *sock)
Parse an MG keyword from an input file.
VPUBLIC int FEMparm_check(FEMparm *thee)
Consistency check for parameter values stored in object.
enum eFEMparm_CalcType FEMparm_CalcType
Declare FEMparm_CalcType type.
VPUBLIC void FEMparm_dtor(FEMparm **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)
Parameter structure for FEM-specific variables from input files.
FEMparm_EstType akeySOLVE