HyPar  1.0
Finite-Difference Hyperbolic-Parabolic PDE Solver on Cartesian Grids
FPPowerSystemComputeCFL.c File Reference
#include <stdlib.h>
#include <basic.h>
#include <mathfunctions.h>
#include <arrayfunctions.h>
#include <physicalmodels/fppowersystem.h>
#include <mpivars.h>
#include <hypar.h>

Go to the source code of this file.

Functions

double FPPowerSystemDriftFunction (int, void *, double, double, double)
 
double FPPowerSystemComputeCFL (void *s, void *m, double dt, double t)
 

Function Documentation

◆ FPPowerSystemDriftFunction()

double FPPowerSystemDriftFunction ( int  ,
void *  ,
double  ,
double  ,
double   
)

Definition at line 4 of file FPPowerSystemFunctions.c.

5 {
6  FPPowerSystem *params = (FPPowerSystem*) p;
7 
8  double drift = 0;
9  if (dir == 0) drift = params->O_s * (y - 1.0);
10  else if (dir == 1) {
11  if (t < params->tf) params->Pmax = params->E*params->V/params->g1;
12  else if (t < params->tcl) params->Pmax = 0.0;
13  else params->Pmax = params->E*params->V/params->g2;
14  drift = (1.0/(2.0*params->H)) * (params->Pm - params->Pmax*sin(x) - params->D*(y-1.0));
15  }
16 
17  return drift;
18 }
#define drift(x)
Definition: fpdoublewell.h:31

◆ FPPowerSystemComputeCFL()

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

Definition at line 11 of file FPPowerSystemComputeCFL.c.

12 {
13  HyPar *solver = (HyPar*) s;
14  FPPowerSystem *params = (FPPowerSystem*)solver->physics;
15 
16  int ndims = solver->ndims;
17  int ghosts = solver->ghosts;
18  int *dim = solver->dim_local;
19 
20  double max_cfl = 0;
21  int index[ndims];
22  int done = 0; _ArraySetValue_(index,ndims,0);
23  while (!done) {
24  double x; _GetCoordinate_(0,index[0],dim,ghosts,solver->x,x);
25  double y; _GetCoordinate_(1,index[1],dim,ghosts,solver->x,y);
26  double dxinv; _GetCoordinate_(0,index[0],dim,ghosts,solver->dxinv,dxinv);
27  double dyinv; _GetCoordinate_(1,index[1],dim,ghosts,solver->dxinv,dyinv);
28  double drift_x= FPPowerSystemDriftFunction(0,params,x,y,t);
29  double drift_y= FPPowerSystemDriftFunction(1,params,x,y,t);
30 
31  double local_cfl_x = absolute(drift_x) * dt * dxinv;
32  double local_cfl_y = absolute(drift_y) * dt * dyinv;
33 
34  if (local_cfl_x > max_cfl) max_cfl = local_cfl_x;
35  if (local_cfl_y > max_cfl) max_cfl = local_cfl_y;
36 
37  _ArrayIncrementIndex_(ndims,dim,index,done);
38  }
39 
40  return(max_cfl);
41 }
#define absolute(a)
Definition: math_ops.h:32
double FPPowerSystemDriftFunction(int, void *, double, double, double)
double * x
Definition: hypar.h:107
int ndims
Definition: hypar.h:26
Structure containing all solver-specific variables and functions.
Definition: hypar.h:23
#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
int ghosts
Definition: hypar.h:52
double * dxinv
Definition: hypar.h:110