コード例 #1
0
int TestStvenantFp(void){

  int test= (1==1);
  // creation of a simple shallow water model
  Model tr;
  tr.m=1; // only one conservative variable
  tr.NumFlux=TransportNumFlux;
  tr.BoundaryFlux=TestTransportBoundaryFlux;
  tr.InitData=TestTransportInitData;
  tr.ImposedData=TestTransportImposedData;

  double wL[tr.m];
  double wR[tr.m];
  double flux1[tr.m],flux2[tr.m];

  double x[3]={1,1,2};
  double t=0;
  double vn[3]={1/sqrt(3),1/sqrt(3),-1/sqrt(3)};

  tr.InitData(x,wR);
  tr.NumFlux(wL,wR,vn,flux1);
  printf("NumFlux %f \n",flux1[0]);
  tr.BoundaryFlux(x,t,wL,vn,flux2);
  printf("BoundaryFlux %f \n",flux2[0]);

  double err=fabs(flux2[0]-flux1[0]);

  test=(err < 1e-8);

  return test;

};
コード例 #2
0
ファイル: testmodel.c プロジェクト: gdolle/SCHNAPS
int TestModel(void){
  int test = true;
  // Creation of a simple transport model
  Model tr;
  tr.cfl = 0.05;
  tr.m = 1; // only one conservative variable
  tr.NumFlux = TransNumFlux;
  tr.BoundaryFlux = TestTransBoundaryFlux;
  tr.InitData = TestTransInitData;
  tr.ImposedData = TestTransImposedData;

  real wL[tr.m];
  real wR[tr.m];
  real flux1[tr.m], flux2[tr.m];

  real x[3] = {1, 1, 2};
  real t = 0;
  real vn[3] = {sqrt(1.0 / 3.0), sqrt(1.0 / 3.0), sqrt(1.0 / 3.0)};

  real vmax = 1.0;
  tr.InitData(x, wR);
  tr.NumFlux(wL, wR, vn, flux1);
  printf("NumFlux %f \n", flux1[0]);
  tr.BoundaryFlux(x, t, wL, vn, flux2);
  printf("BoundaryFlux %f \n", flux2[0]);

  real err = fabs(flux2[0] - flux1[0]);
  test = (err < 1e-8);
  return test;
};
コード例 #3
0
ファイル: testmodel.c プロジェクト: malcolmroberts/schnaps
int TestModel()
{
  int retval = 0;
  
  // Creation of a simple transport model
  Model tr;
  tr.cfl = 0.05;
  tr.m = 1; // only one conservative variable
  tr.NumFlux = TransNumFlux;
  tr.BoundaryFlux = TestTransBoundaryFlux;
  tr.InitData = TestTransInitData;
  tr.ImposedData = TestTransImposedData;

  real wL[tr.m];
  real wR[tr.m];
  real nflux[tr.m];
  real bflux[tr.m];

  for(int iv = 0; iv < tr.m; ++iv) {
    wL[iv] = 0.0;
    wR[iv] = 0.0;
    nflux[iv] = 0.0;
    bflux[iv] = 0.0;
  }

  real x[3] = {1.0, 1.0, 2.0};
  real t = 0.0;
  real vn[3] = {sqrt(1.0 / 3.0), sqrt(1.0 / 3.0), sqrt(1.0 / 3.0)};
  
  tr.InitData(x, wR);
  tr.NumFlux(wL, wR, vn, nflux);
  printf("NumFlux %f \n", nflux[0]);
  tr.BoundaryFlux(x, t, wL, vn, bflux);
  printf("BoundaryFlux %f \n", bflux[0]);

  real err = fabs(bflux[0] - nflux[0]);
  if(err > 1e-8)
    retval++;
  
  return retval;
}