74 using namespace midaspace;
83 int midas (
int argc,
char **argv)
85 int main (
int argc,
char *argv[])
115 { fprintf (stdout,
"%.2f\n",
VERSION);
return 0; }
122 double sec = clock();
134 catch (
int e) { retval = e; }
144 sec = (clock() - sec) / (
double)CLOCKS_PER_SEC;
145 hod = (long)sec/3600; sec -= hod*3600;
146 min = (long)sec/60; sec -= min*60;
149 sodriver.
print_info_message (
SODE_row,
" ******************* MIDAS - consumed time %2ld:%02ld:%05.2f *******************",hod,min,sec);
161 Multifunctional Interface between Design And mechanical response Solver \n\
162 Copyright (C) 2004-2011 Ladislav Termit Svoboda \n\
164 SYNTAX midas [--help|--version] \n\
166 midas -OM_... [options] \n\
170 --help ... print this help \n\
171 --version ... print this help \n\
173 -f FILE ... file with parameters \n\
177 -OM_design2solver \n\
178 -OM_solver2design \n\
181 -IN_path path ... path for input files \n\
182 -IN_ctrl FILE ... file with characteristics for input file to OOFEM \n\
183 -IN_mmff format ... model/mesh file format \n\
184 vtk ... VTK file format (automatic detection of legacy x XML version)\n\
185 unv ... I-DEAS file format \n\
186 t3d ... native format of output file from T3d mesh generator \n\
187 ansys ... native format of input file to ANSYS package \n\
188 oofem ... native format of input file to OOFEM package \n\
189 polyline ... native format of input file to MIDAS with rod reinforcement \n\
190 (automatic detection of legacy x XML version) \n\
191 -IN_mesh FILE ... file with geometry of FEM mesh \n\
192 -IN_model FILE ... file with geometry of FEM model \n\
193 -IN_ndom # ... number of domains, used for multiple output (parallel) \n\
194 -IN_eltype_beam_lbeam ... beam elements will be 'linear beam element' \n\
195 -IN_eltype_beam_truss ... beam elements will be 'truss element' \n\
196 -IN_LCS_xy_NodeID # ... \n\
197 -IN_LCS_xy_NodeProp # .. \n\
198 -IN_rslt FILE ... file with analysis output \n\
201 -P_multinode ... elimination of multiple nodes \n\
202 -P_multielem ... elimination of multiple elements \n\
203 -P_RigidBodyToRigidArm ... conversion beams with RigidBody mat. to Rigid Arm \n\
206 -OUT_path path ... path for output files (default is equal to -IN_path path)\n\
207 -OUT_fn FILE ... name of output file \n\
208 -OUT_sif ... input file to OOFEMU will be exported \n\
209 -OUT_meshqual ... VTK file with mesh quality will be exported \n\n");
214 strcat (commpar,
" -IO_ff ");
233 FILE *par =
_openFileN (
"r",
"File with options", argv[pos+1]);
239 char **cmdl_argv = argv;
240 argv =
new char*[cmdl_argc + file_argc];
242 for (argc=0; argc<cmdl_argc; argc++)
243 argv[argc] = cmdl_argv[argc];
245 for (; argc<cmdl_argc + file_argc; argc++) {
249 argv[argc] =
new char[1023];
267 char commparOM[1023]; commparOM[0] =
'\0';
268 char commparIN[1023]; commparIN[0] =
'\0';
269 char commparPS[1023]; commparPS[0] =
'\0';
270 char commparOT[1023]; commparOT[0] =
'\0';
274 for (
int i=1; i<argc; i++) {
275 if (!strcasecmp(
"-f", argv[i])) i++;
279 else if (!strcasecmp(
"-OM_convert", argv[i])) { Pd->
set_OM(
OM_Convert); strcat (commparOM,
" -OM_convert"); }
280 else if (!strcasecmp(
"-OM_design2design", argv[i])) { Pd->
set_OM(
OM_Design2design); strcat (commparOM,
" -OM_design2design"); }
281 else if (!strcasecmp(
"-OM_design2solver", argv[i])) { Pd->
set_OM(
OM_Design2solver); strcat (commparOM,
" -OM_design2solver"); }
282 else if (!strcasecmp(
"-OM_solver2design", argv[i])) { Pd->
set_OM(
OM_Solver2design); strcat (commparOM,
" -OM_solver2design"); }
283 else if (!strcasecmp(
"-OM_test", argv[i])) { Pd->
set_OM(
OM_Test); strcat (commparOM,
" -OM_test"); }
307 else if (!strcasecmp(
"-IN_ndom", argv[i])) { Pd->
set_IN_numdom ( atol(argv[++i]));
sprint_param (commparIN, argv+i, 2); }
314 else if (!strcasecmp(
"-IN_FETS", argv[i])) { Pd->
set_FETS(argv[i+1], strcat(strcat(strcpy(auxs, argv[i+2]),
" "), argv[i+3])); i+=3;
sprint_param (commparIN, argv+i, 3); }
330 else if (!strcasecmp(
"-P_adaptivity", argv[i])) {
int auxi = Pd->
set_adpa (argv+i+1); i += auxi;
sprint_param (commparPS, argv+i, auxi); }
365 else if (argv[i][0] !=
'\0')
_errorr2 (
"unknown parameter \"%s\"", argv[i]);
373 fprintf (stdout,
" OPERATION MODE : %s\n", commparOM);
374 fprintf (stdout,
" INPUT parameters: %s\n", commparIN);
375 fprintf (stdout,
" PROCESS parameters: %s\n", commparPS);
376 fprintf (stdout,
" OUTPUT parameters: %s\n\n", commparOT);
379 Pd->
args =
new char [4000];
380 sprintf (Pd->
args,
"# %s %s %s %s\n\n", commparOM, commparIN, commparPS, commparOT);
381 sprintf (Pd->
args+strlen(Pd->
args),
"# OPERATION MODE :\n%s\n", commparOM);
382 sprintf (Pd->
args+strlen(Pd->
args),
"# INPUT parameters:\n%s\n", commparIN);
383 sprintf (Pd->
args+strlen(Pd->
args),
"# PROCESS parameters:\n%s\n", commparPS);
384 sprintf (Pd->
args+strlen(Pd->
args),
"# OUTPUT parameters:\n%s\n", commparOT);
390 for (
int i=cmdl_argc; i<argc; i++)
bool give_PDBO(ProbDescBoolOpt pdbo) const
void solve(void)
solve the problem - main function
int FP_scan_word(FILE *src, char *dest)
... word; return value is length of the word
#define VERSION
TWO DIGITS behind dot are required, not 0.6 but 0.60.
void set_OM(OperationMode val)
void add_IN_mshFiLe(FiLe *val)
void set_IN_Path(char *val)
void FP_skip_line_commented(FILE *stream)
move file descriptor to the start of the new noncommented line, without checking of EOF ...
void set_P_binary_solver(FiLe *val, Solver val2)
#define _openFileN(_1, _2, _3)
void help(void)
*** END OF MAIN ***
void ffstrcat(char *commpar, femFileFormat FF)
void sprint_param(char *s, char *argv[], int n)
void print_info_message(SODenum flag, const char *format,...) const
void print_info_message_core(SODenum flag, ETCLR color=ETC_DEFAULT, const char *buffer=NULL) const
void set_OUT_Path(char *val)
const char * femFileFormatEtoS(femFileFormat fff)
void set_IN_numdom(long val)
void set_IN_VTKaddata(FiLe *val)
void set_IN_meshGen_elemSize(double val)
char * pathstrdupl(const char *src)
int midas(int argc, char **argv)
Structs Elem3D, PoinT and VectoR; classes Array, Array1d, Xscal, Dscal, Xvctr, Lvctr, Dvctr, Xmtrx, Lmtrx and Dmtrx.
void set_IN_VTKaddatasprs(FiLe *val)
void set_lcs(LCSdirection dir, LCStype typ, long num)
long FP_number_of_words(FILE *stream)
count number of words (see isWordChar) in file
void set_IN_file_results(FiLe *val)
void set_OUT_printStep(long val)
void add_IN_mdlFiLe(FiLe *val)
void set_IN_meshGen_elemCount(int val)
int main(int argc, char *argv[])
*** *** *** *** MAIN *** *** *** ***
void set_IN_ctrlfile(FiLe *val)
void set_IN_bgm(FiLe *val)
void set_FETS(const char *skupina, const char *str)
Finite Element Type Settings.
void set_P_binary_mesher(FiLe *val, MeshGenerator val2)
Auxiliary functions; classes FiLe, LocalCoordSystem, AdaptivityParameters and StdoutDriver.
long set_adpa(char **argv)
bool FP_skip_nonword(FILE *stream)
*** *** *** SKIPING *** *** *** skiping == shift stream pointer at the first char which is not ...
void set_OUT_moFILE(FiLe *val)
long AP_find_option(int argc, char *argv[], const char *s)
*** *** *** *** ARGUMENTS PROCESSING *** *** *** *** terminology: tar -cz -f archiv.tgz archiv/ /// fce name | arguments /// fce name | options | parameters /// fce name | opt | opt | opt argum.
void set_IN_file_results_addataVTK(FiLe *val)
Class Geometry, Model and Mesh.
femFileFormat femFileFormatStoE(const char *fff)
bool parameters(int argc, char *argv[], Problem *&Pd, StdoutDriver *sodriver)
void set_PDBO(ProbDescBoolOpt pdbo, bool val)