HyPar  1.0
Finite-Difference Hyperbolic-Parabolic PDE Solver on Cartesian Grids
NavierStokes2DComputeCFL.c
Go to the documentation of this file.
1 
5 #include <stdlib.h>
6 #include <math.h>
7 #include <basic.h>
8 #include <arrayfunctions.h>
9 #include <mathfunctions.h>
11 #include <hypar.h>
12 
17  void *s,
18  void *m,
19  double dt,
20  double t
21  )
22 {
23  HyPar *solver = (HyPar*) s;
24  NavierStokes2D *param = (NavierStokes2D*) solver->physics;
26 
27  int *dim = solver->dim_local;
28  int ghosts = solver->ghosts;
29  int ndims = solver->ndims;
30  int index[ndims];
31  double *u = solver->u;
32 
33  double max_cfl = 0;
34  int done = 0; _ArraySetValue_(index,ndims,0);
35  while (!done) {
36  int p; _ArrayIndex1D_(ndims,dim,index,ghosts,p);
37  double rho,vx,vy,e,P,c,dxinv,dyinv,local_cfl[2];
38  _NavierStokes2DGetFlowVar_((u+_MODEL_NVARS_*p),rho,vx,vy,e,P,param->gamma);
39 
40  c = sqrt(param->gamma*P/rho); /* speed of sound */
41  _GetCoordinate_(_XDIR_,index[_XDIR_],dim,ghosts,solver->dxinv,dxinv); /* 1/dx */
42  _GetCoordinate_(_YDIR_,index[_YDIR_],dim,ghosts,solver->dxinv,dyinv); /* 1/dy */
43 
44  local_cfl[_XDIR_] = (absolute(vx)+c)*dt*dxinv; /* local cfl for this grid point (x) */
45  local_cfl[_YDIR_] = (absolute(vy)+c)*dt*dyinv; /* local cfl for this grid point (y) */
46  if (local_cfl[_XDIR_] > max_cfl) max_cfl = local_cfl[_XDIR_];
47  if (local_cfl[_YDIR_] > max_cfl) max_cfl = local_cfl[_YDIR_];
48 
49  _ArrayIncrementIndex_(ndims,dim,index,done);
50  }
51 
52  return(max_cfl);
53 }
#define absolute(a)
Definition: math_ops.h:32
double NavierStokes2DComputeCFL(void *s, void *m, double dt, double t)
Contains function definitions for common mathematical functions.
#define _NavierStokes2DGetFlowVar_(u, rho, vx, vy, e, P, gamma)
double * u
Definition: hypar.h:116
Some basic definitions and macros.
int ndims
Definition: hypar.h:26
Structure containing all solver-specific variables and functions.
Definition: hypar.h:23
#define _YDIR_
Definition: euler2d.h:41
Contains structure definition for hypar.
2D Navier Stokes equations (compressible flows)
#define _ArrayIndex1D_(N, imax, i, ghost, index)
Structure containing variables and parameters specific to the 2D Navier Stokes equations. This structure contains the physical parameters, variables, and function pointers specific to the 2D Navier-Stokes equations.
#define _ArraySetValue_(x, size, value)
int * dim_local
Definition: hypar.h:37
#define _ArrayIncrementIndex_(N, imax, i, done)
#define _GetCoordinate_(dir, i, dim, ghosts, x, coord)
Definition: basic.h:31
void * physics
Definition: hypar.h:266
#define _XDIR_
Definition: euler1d.h:75
int ghosts
Definition: hypar.h:52
#define _MODEL_NVARS_
Definition: euler1d.h:58
#define _DECLARE_IERR_
Definition: basic.h:17
Contains macros and function definitions for common array operations.
double * dxinv
Definition: hypar.h:110