HyPar  1.0
Finite-Difference Hyperbolic-Parabolic PDE Solver on Cartesian Grids
ShallowWater1DComputeCFL.c File Reference

Contains the function to compute maximum CFL over the domain for the 1D shallow water equations physical model. More...

#include <stdlib.h>
#include <basic.h>
#include <math.h>
#include <arrayfunctions.h>
#include <mathfunctions.h>
#include <physicalmodels/shallowwater1d.h>
#include <hypar.h>

Go to the source code of this file.

Functions

double ShallowWater1DComputeCFL (void *s, void *m, double dt, double t)
 

Detailed Description

Contains the function to compute maximum CFL over the domain for the 1D shallow water equations physical model.

Author
Debojyoti Ghosh

Definition in file ShallowWater1DComputeCFL.c.

Function Documentation

◆ ShallowWater1DComputeCFL()

double ShallowWater1DComputeCFL ( void *  s,
void *  m,
double  dt,
double  t 
)

Computes the maximum CFL number over the domain. Note that the CFL is computed over the local domain on this processor only.

Parameters
sSolver object of type HyPar
mMPI object of type MPIVariables
dtTime step size for which to compute the CFL
tTime

Definition at line 17 of file ShallowWater1DComputeCFL.c.

23 {
24  HyPar *solver = (HyPar*) s;
25  ShallowWater1D *param = (ShallowWater1D*) 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 h, v, c, dxinv, local_cfl;
39  _GetCoordinate_(0,index[0],dim,ghosts,solver->dxinv,dxinv); /* 1/dx */
40  c = sqrt(param->g*h); /* speed of gravity waves */
41  local_cfl = (absolute(v)+c)*dt*dxinv; /* local cfl for this grid point */
42  if (local_cfl > max_cfl) max_cfl = local_cfl;
43  _ArrayIncrementIndex_(ndims,dim,index,done);
44  }
45 
46  return(max_cfl);
47 }
Structure containing variables and parameters specific to the 1D Shallow Water equations. This structure contains the physical parameters, variables, and function pointers specific to the 1D ShallowWater equations.
#define absolute(a)
Definition: math_ops.h:32
double * u
Definition: hypar.h:116
int ndims
Definition: hypar.h:26
Structure containing all solver-specific variables and functions.
Definition: hypar.h:23
#define _ArrayIndex1D_(N, imax, i, ghost, index)
#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 _ShallowWater1DGetFlowVar_(u, h, v)
int ghosts
Definition: hypar.h:52
#define _MODEL_NVARS_
Definition: euler1d.h:58
double * dxinv
Definition: hypar.h:110