FrontISTR 5.2.0
Large-scale structural analysis program with finit element method
Loading...
Searching...
No Matches
FSTRDB_util.cpp
Go to the documentation of this file.
1/*****************************************************************************
2 * Copyright (c) 2019 FrontISTR Commons
3 * This software is released under the MIT License, see LICENSE.txt
4 *****************************************************************************/
5/*
6 Utility for CFSTRDB Ver.1.0
7*/
8
9#include <string.h>
10#include <ctype.h>
11#include "CFSTRDB.h"
12#include "hecd_util.h"
13
14using namespace hecd_util;
15
16CHECDataBlock *CreateFSTRDataBlock(const char *header_name) {
17 char name[80];
18 char *np = name;
19 char *p = (char *)header_name;
20
21 if (*p == '!') p++;
22
23 *np = (char)toupper(*p);
24 p++;
25 np++;
26
27 while (*p) {
28 *np = (char)tolower(*p);
29 p++;
30 np++;
31 }
32
33 *np = 0;
34#define GENERATE_CODE(x) \
35 else if (strcmp(#x, name) == 0) { \
36 return new CFSTRDB_##x(); \
37 }
38
39 if (false)
40 ; // dummy
41
42 GENERATE_CODE(Solution)
43 GENERATE_CODE(Solver)
44 GENERATE_CODE(Write)
45 GENERATE_CODE(Echo)
46 GENERATE_CODE(Step)
47 GENERATE_CODE(Static)
48 GENERATE_CODE(Boundary)
49 GENERATE_CODE(CLoad)
50 GENERATE_CODE(DLoad)
51 GENERATE_CODE(Temperature)
52 GENERATE_CODE(Reftemp)
53 GENERATE_CODE(Eigen)
54 GENERATE_CODE(Heat)
55 GENERATE_CODE(Fixtemp)
56 GENERATE_CODE(CFlux)
57 GENERATE_CODE(DFlux)
58 GENERATE_CODE(SFlux)
59 GENERATE_CODE(Film)
60 GENERATE_CODE(SFilm)
61 GENERATE_CODE(Radiate)
62 GENERATE_CODE(SRadiate)
63#undef GENERATE_CODE
64 return 0;
65}
66
67bool IsFSTRDataBlockName(const char *name) {
68 char s[256];
69
70 if (name[0] == '!')
71 toupper(&name[1], s);
72
73 else
74 toupper(name, s);
75
76#define GENERATE_CODE(x) \
77 else if (strcmp(#x, name) == 0) { \
78 return true; \
79 }
80
81 if (false)
82 ; // dummy
83
84 GENERATE_CODE(SOLUTION)
85 GENERATE_CODE(SOLVER)
86 GENERATE_CODE(WRITE)
88 GENERATE_CODE(STEP)
89 GENERATE_CODE(STATIC)
91 GENERATE_CODE(CLOAD)
92 GENERATE_CODE(DLOAD)
93 GENERATE_CODE(TEMPERATURE)
94 GENERATE_CODE(REFTEMP)
95 GENERATE_CODE(EIGEN)
96 GENERATE_CODE(HEAT)
97 GENERATE_CODE(FIXTEMP)
98 GENERATE_CODE(CFLUX)
99 GENERATE_CODE(DFLUX)
100 GENERATE_CODE(SFLUX)
101 GENERATE_CODE(FILM)
102 GENERATE_CODE(SFILM)
103 GENERATE_CODE(RADIATE)
104 GENERATE_CODE(SRADIATE)
105#undef GENERATE_CODE
106 return false;
107}
CHECDataBlock * CreateFSTRDataBlock(const char *header_name)
Definition: FSTRDB_util.cpp:16
#define GENERATE_CODE(x)
bool IsFSTRDataBlockName(const char *name)
Definition: FSTRDB_util.cpp:67
#define ECHO
Definition: hecmw_ablex.c:1211
#define BOUNDARY
void tolower(char *s)
Definition: hecd_util.cpp:56
void toupper(char *s)
Definition: hecd_util.cpp:37