~ubuntu-branches/debian/squeeze/gmsh/squeeze

« back to all changes in this revision

Viewing changes to Common/CommandLine.cpp

  • Committer: Bazaar Package Importer
  • Author(s): Christophe Prud'homme
  • Date: 2009-02-17 10:12:27 UTC
  • mfrom: (1.2.6 upstream)
  • Revision ID: james.westby@ubuntu.com-20090217101227-mdrolkldak2pgd2i
Tags: 2.3.0.dfsg-1
* New upstream release
  + major graphics and GUI code refactoring; 
  + new full-quad/hexa subdivision algorithm (removed 
    Mesh.RecombineAlgo);
  + improved automatic transfinite corner selection (now also 
    for volumes); 
  + improved visibility browser; new automatic adaptive visualization
    for high-order simplices;
  + modified arrow size, clipping planes and transform options; many
    improvements and
  + bug fixes all over the place.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
// Gmsh - Copyright (C) 1997-2008 C. Geuzaine, J.-F. Remacle
 
1
// Gmsh - Copyright (C) 1997-2009 C. Geuzaine, J.-F. Remacle
2
2
//
3
3
// See the LICENSE.txt file for license information. Please report all
4
4
// bugs and problems to <gmsh@geuz.org>.
6
6
#include <string>
7
7
#include <string.h>
8
8
#include <stdlib.h>
9
 
#include "GmshUI.h"
 
9
#include "GmshConfig.h"
10
10
#include "GmshDefines.h"
11
11
#include "GmshVersion.h"
12
12
#include "GmshMessage.h"
18
18
#include "CreateFile.h"
19
19
#include "OS.h"
20
20
 
 
21
#if defined(HAVE_FLTK)
 
22
#include <FL/Fl.H>
 
23
#if (FL_MAJOR_VERSION == 1) && (FL_MINOR_VERSION == 1) && (FL_PATCH_VERSION > 6)
 
24
// OK
 
25
#elif (FL_MAJOR_VERSION == 1) && (FL_MINOR_VERSION == 3)
 
26
// also OK
 
27
#else
 
28
#error "Gmsh requires FLTK >= 1.1.7 or FLTK 1.3.x"
 
29
#endif
 
30
#endif
 
31
 
21
32
#if !defined(HAVE_NO_POST)
22
33
#include "PView.h"
23
34
#endif
43
54
  Msg::Direct("Mesh options:");
44
55
  Msg::Direct("  -1, -2, -3            Perform 1D, 2D or 3D mesh generation, then exit");
45
56
  Msg::Direct("  -refine               Perform uniform mesh refinement, then exit");
46
 
  Msg::Direct("  -part                 Partition after batch mesh generation");
 
57
  Msg::Direct("  -part int             Partition after batch mesh generation");
47
58
  Msg::Direct("  -saveall              Save all elements (discard physical group definitions)");
48
59
  Msg::Direct("  -o file               Specify mesh output file name");
49
60
  Msg::Direct("  -format string        Set output mesh format (msh, msh1, msh2, unv, vrml, stl, mesh,");
50
61
  Msg::Direct("                          bdf, p3d, cgns, med)");
51
62
  Msg::Direct("  -bin                  Use binary format when available");  
52
63
  Msg::Direct("  -parametric           Save vertices with their parametric coordinates");  
53
 
  Msg::Direct("  -algo string          Select mesh algorithm (de, del2d, frontal, iso, netgen, tetgen)");
 
64
  Msg::Direct("  -numsubedges          Set the number of subdivisions when displaying high order elements");  
 
65
  Msg::Direct("  -algo string          Select mesh algorithm (iso, frontal, del2d, del3d, netgen)");
54
66
  Msg::Direct("  -smooth int           Set number of mesh smoothing steps");
55
67
  Msg::Direct("  -optimize[_netgen]    Optimize quality of tetrahedral elements");
56
68
  Msg::Direct("  -order int            Set mesh order (1, ..., 5)");
156
168
  int terminal = CTX.terminal;
157
169
  CTX.terminal = 1;
158
170
 
159
 
  // Create a dummy model during option processing so we cannot crash
160
 
  // the parser, and so we can load files for -convert
161
 
  GModel *dummy = new GModel();
162
 
 
163
171
#if !defined(HAVE_NO_PARSER)
164
172
  // Parse session and option files
165
 
  ParseFile(CTX.session_filename_fullpath, 1);
166
 
  ParseFile(CTX.options_filename_fullpath, 1);
 
173
  ParseFile((CTX.home_dir + CTX.session_filename).c_str(), true);
 
174
  ParseFile((CTX.home_dir + CTX.options_filename).c_str(), true);
167
175
#endif
168
176
 
169
177
  // Get command line options
209
217
        i++;
210
218
      }
211
219
      else if(!strcmp(argv[i] + 1, "part")) {
212
 
        CTX.batch_after_mesh = 1;
213
220
        i++;
 
221
        if(argv[i] != NULL){
 
222
          CTX.batch_after_mesh = 1;
 
223
          opt_mesh_partition_num(0, GMSH_SET, atoi(argv[i++]));
 
224
        }
 
225
        else
 
226
          Msg::Fatal("Missing number");
214
227
      }
215
228
      else if(!strcmp(argv[i] + 1, "new")) {
216
229
        CTX.files.push_back("-new");
267
280
      else if(!strcmp(argv[i] + 1, "option")) {
268
281
        i++;
269
282
        if(argv[i] != NULL)
270
 
          ParseFile(argv[i++], 1);
 
283
          ParseFile(argv[i++], true);
271
284
        else
272
285
          Msg::Fatal("Missing file name");
273
286
      }
285
298
        else
286
299
          Msg::Fatal("Missing file name");
287
300
      }
 
301
      else if(!strcmp(argv[i] + 1, "nw")) {
 
302
        i++;
 
303
        if(argv[i] != NULL)
 
304
          CTX.num_windows = atoi(argv[i++]);
 
305
        else
 
306
          Msg::Fatal("Missing number");
 
307
      }
 
308
      else if(!strcmp(argv[i] + 1, "nt")) {
 
309
        i++;
 
310
        if(argv[i] != NULL)
 
311
          CTX.num_tiles = atoi(argv[i++]);
 
312
        else
 
313
          Msg::Fatal("Missing number");
 
314
      }
288
315
      else if(!strcmp(argv[i] + 1, "convert")) {
289
316
        i++;
290
317
        CTX.batch = 1;
291
318
        while(i < argc) {
292
 
          char filename[256];
293
 
          sprintf(filename, "%s_new", argv[i]);
 
319
          std::string fileName = std::string(argv[i]) + "_new";
294
320
#if !defined(HAVE_NO_POST)
295
321
          unsigned int n = PView::list.size();
296
322
#endif
298
324
#if !defined(HAVE_NO_POST)
299
325
          // convert post-processing views to latest binary format
300
326
          for(unsigned int j = n; j < PView::list.size(); j++)
301
 
            PView::list[j]->write(filename, 1, (j == n) ? false : true);
 
327
            PView::list[j]->write(fileName, 1, (j == n) ? false : true);
302
328
#endif
303
329
          // convert mesh to latest binary format
304
330
          if(GModel::current()->getMeshStatus() > 0){
305
331
            CTX.mesh.msh_file_version = 2.0;
306
332
            CTX.mesh.binary = 1;
307
 
            CreateOutputFile(filename, FORMAT_MSH);
 
333
            CreateOutputFile(fileName, FORMAT_MSH);
308
334
          }
309
335
          i++;
310
336
        }
417
443
        else
418
444
          Msg::Fatal("Missing number");
419
445
      }
 
446
      else if(!strcmp(argv[i] + 1, "numsubedges")) {
 
447
        i++;
 
448
        if(argv[i] != NULL)
 
449
          opt_mesh_num_sub_edges(0, GMSH_SET, atof(argv[i++]));
 
450
        else
 
451
          Msg::Fatal("Missing number");
 
452
      }
420
453
      else if(!strcmp(argv[i] + 1, "c1")) {
421
454
        i++;
422
455
        opt_mesh_c1(0, GMSH_SET, 1);
537
570
      }
538
571
      else if(!strcmp(argv[i] + 1, "help") || !strcmp(argv[i] + 1, "-help")) {
539
572
        fprintf(stderr, "Gmsh, a 3D mesh generator with pre- and post-processing facilities\n");
540
 
        fprintf(stderr, "Copyright (C) 1997-2008 Christophe Geuzaine and Jean-Francois Remacle\n");
 
573
        fprintf(stderr, "Copyright (C) 1997-2009 Christophe Geuzaine and Jean-Francois Remacle\n");
541
574
        Print_Usage(argv[0]);
542
575
        Msg::Exit(0);
543
576
      }
591
624
        else
592
625
          Msg::Fatal("Missing number");
593
626
      }
 
627
      else if(!strcmp(argv[i] + 1, "deltafontsize")) {
 
628
        i++;
 
629
        if(argv[i] != NULL)
 
630
          CTX.deltafontsize = atoi(argv[i++]);
 
631
        else
 
632
          Msg::Fatal("Missing number");
 
633
      }
594
634
      else if(!strcmp(argv[i] + 1, "theme") || !strcmp(argv[i] + 1, "scheme")) {
595
635
        i++;
596
636
        if(argv[i] != NULL)
627
667
 
628
668
  }
629
669
 
630
 
  if(CTX.files.empty())
631
 
    strncpy(CTX.filename, CTX.default_filename_fullpath, 255);
 
670
  if(CTX.files.empty()){
 
671
    std::string base = (getenv("PWD") ? "" : CTX.home_dir);
 
672
    GModel::current()->setFileName((base + CTX.default_filename).c_str());
 
673
  }
632
674
  else
633
 
    strncpy(CTX.filename, CTX.files[0].c_str(), 255);
634
 
 
635
 
  delete dummy;
 
675
    GModel::current()->setFileName(CTX.files[0]);
636
676
 
637
677
  CTX.terminal = terminal;
638
678
}