File timestep.h


Included Files


Preprocessor definitions

#define TIMESTEP_H

#define CONSTRAINT_ONLY 0

#define TIMESTEP_ONLY_VAR 0x100

#define TIME_CONST_BLEND_VAR 0x200

#define DPRINTF( fmt, args... )

#define TSPRINTF( fmt, args... )

#define ALL_PERIODIC 0x000

#define XMIN_SYMMETRY 0x001

#define XMAX_SYMMETRY 0x002

#define YMIN_SYMMETRY 0x004

#define YMAX_SYMMETRY 0x008

#define ZMIN_SYMMETRY 0x010

#define ZMAX_SYMMETRY 0x020

#define XMIN_BOUNDARY 0x040

#define XMAX_BOUNDARY 0x080

#define YMIN_BOUNDARY 0x100

#define YMAX_BOUNDARY 0x200

#define ZMIN_BOUNDARY 0x400

#define ZMAX_BOUNDARY 0x800

#define SYMMETRY_MIRROR_INSIDE 0

#define SYMMETRY_MIRROR_PLANE 1

#define SYMMETRY_MIRROR_OUTSIDE 2

#define SYMMETRY_ZERO_INSIDE 4

#define SYMMETRY_ZERO_PLANE 5

#define SYMMETRY_ZERO_OUTSIDE 6

#define SYMMETRY_XMIN_START 0x000001

#define SYMMETRY_XMAX_START 0x000010

#define SYMMETRY_YMIN_START 0x000100

#define SYMMETRY_YMAX_START 0x001000

#define SYMMETRY_ZMIN_START 0x010000

#define SYMMETRY_ZMAX_START 0x100000

#define SYMMETRY_XMIN_MASK 0x00000F

#define SYMMETRY_XMAX_MASK 0x0000F0

#define SYMMETRY_YMIN_MASK 0x000F00

#define SYMMETRY_YMAX_MASK 0x00F000

#define SYMMETRY_ZMIN_MASK 0x0F0000

#define SYMMETRY_ZMAX_MASK 0xF00000

#define TIMESTEP_HELP "This includes a timestepping infrastructure with explicit and semi-implicit\ntimestepping. If both are used, explicit timestepping comes first.\n\nExplicit parameters are set using flags:\n -explicit_timesteps <timesteps> Number of explicit timesteps\n -explicit_monsteps <monsteps> Timesteps between tsmonitor() calls\n -explicit_deltat <dt> (set automatically if not provided)\nFor explicit finite differencing, it's also possible to perform some\ncalculations during communication between processors, which should be faster\nin network-limited situations (but isn't, I'll have to investigate why).\nEnable this with \n -slowcomm\n\nControl implicit timestepping as follows:\n -ts_max_steps <ts> Number of semi-implicit timesteps\n -monsteps <m> Timesteps between tsmonitor() calls\n -ts_dt <dt> Initial semi-implicit timestep size\n -ts_dt_max <dt_max> Maximum semi-implicit timestep size\n -ts_dt_factor <dt_f> Multiply dt by this each timestep until max reached\nThe default implicit style is semi-implicit Crank-Nicholson, or one can\nspecify fully-implicit or M=2 Gear style using, respectively:\n -tsstyle implicit\n -tsstyle gear_2\nThe initial guess for a given timestep can either be set to the previous\ntimestep (the default), or extrapolated from the previous two timesteps if\nenabled using the flag:\n -guess_explicit\nTo halve the timestep in case of non-convergence of the implicit solver:\n -noconv_cuttime\n\nTo use symmetry boundary conditions (instead of the default periodic), use:\n -symmetry_x\n -symmetry_y\n -symmetry_z\n\n"


Typedef CommStyle

typedef enum {...} CommStyle
enum  
   {  
      SLOW_COMMUNICATION;  
      FAST_COMMUNICATION;  
   }  

Typedef TSStyle

typedef enum {...} TSStyle
enum  
   {  
      FULLY_IMPLICIT;  
      CRANK_NICHOLSON;  
      GEAR_2;  
      GEAR_3;  
      GEAR_4;  
      GEAR_5;  
      GEAR_6;  
   }  

Typedef EqStyle

typedef int EqStyle