コード例 #1
0
void sciddicaTSimulationInit(struct CALModel2D* sciddicaT)
{
	CALreal z, h;
	CALint i, j;

	//initializing substates to 0
	calInitSubstate2Dr(sciddicaT, Q.f[0], 0);
	calInitSubstate2Dr(sciddicaT, Q.f[1], 0);
	calInitSubstate2Dr(sciddicaT, Q.f[2], 0);
	calInitSubstate2Dr(sciddicaT, Q.f[3], 0);

	//sciddicaT parameters setting
	P.r = P_R;
	P.epsilon = P_EPSILON;

	//sciddicaT source initialization
	for (i=0; i<sciddicaT->rows; i++)
		for (j=0; j<sciddicaT->columns; j++)
		{
			h = calGet2Dr(sciddicaT, Q.h, i, j);

			if ( h > 0.0 ) {
				z = calGet2Dr(sciddicaT, Q.z, i, j);
				calSet2Dr(sciddicaT, Q.z, i, j, z-h);
			}
		}
}
コード例 #2
0
void sciddicaTSimulationInit(struct CALModel2D* s3hex)
{
	int i, j;

	//s3hex parameters setting
	P.adh = P_ADH;
	P.rl = P_RL;
	P.r = P_R;
	P.f = P_F;
	P.mt = P_MT;
	P.pef = P_PEF;
//	P.ltt = P_LTT;

	//initializing debris source
	calInitSubstate2Dr(s3hex, Q.h, 0);
	calInitSubstate2Dr(s3hex, Q.p, 0);

#ifdef ACTIVE_CELLS
	for (i=0; i<s3hex->rows; i++)
		for (j=0; j<s3hex->columns; j++)
			if (calGet2Dr(s3hex,Q.h,i,j) > P.adh) {
				calAddActiveCell2D(s3hex,i,j);
	}
#endif

	//Substates and active cells update
	calUpdate2D(s3hex);
}
コード例 #3
0
void sciddicaTSimulationInit(struct CALModel2D* s3hex)
{
  int i, j, n;

    //s3hex parameters setting
	P.adh = P_ADH;
	P.rl = P_RL;
	P.r = P_R;
	P.f = P_F;
	P.mt = P_MT;
	P.pef = P_PEF;
//	P.ltt = P_LTT;

	//initializing substates
	calInitSubstate2Dr(s3hex, Q.h, 0);
	calInitSubstate2Dr(s3hex, Q.p, 0);
    for (n=0; n<s3hex->sizeof_X; n++)
    {
      calInitSubstate2Dr(s3hex, Q.fh[n], 0);
      calInitSubstate2Dr(s3hex, Q.fp[n], 0);
    }


#ifdef ACTIVE_CELLS
	for (i=0; i<s3hex->rows; i++)
		for (j=0; j<s3hex->columns; j++)
			if (calGet2Dr(s3hex,Q.h,i,j) > P.adh) {
				calAddActiveCell2D(s3hex,i,j);
	}
#endif
}
コード例 #4
0
ファイル: sciddicaT.c プロジェクト: OpenCALTeam/opencal
// SciddicaT simulation init function
void sciddicaTSimulationInit(struct CALModel2D* host_CA) {
	CALreal z, h;
	CALint i, j;

	//initializing substates to 0
	calInitSubstate2Dr(host_CA, Q.f[0], 0);
	calInitSubstate2Dr(host_CA, Q.f[1], 0);
	calInitSubstate2Dr(host_CA, Q.f[2], 0);
	calInitSubstate2Dr(host_CA, Q.f[3], 0);

	//sciddicaT parameters setting
	P.r = P_R;
	P.epsilon = P_EPSILON;

	//sciddicaT source initialization
	for (i = 0; i < host_CA->rows; i++)
		for (j = 0; j < host_CA->columns; j++) {
			h = calGet2Dr(host_CA, Q.h, i, j);

			if (h > 0.0) {
				z = calGet2Dr(host_CA, Q.z, i, j);
				calSet2Dr(host_CA, Q.z, i, j, z - h);

#ifdef ACTIVE_CELLS
				//adds the cell (i, j) to the set of active ones
				calAddActiveCell2D(host_CA, i, j);
#endif
			}
		}
}
コード例 #5
0
void sciddicaTSteering(struct CALModel2D* sciddicaT)
{
    //initializing substates to 0
	calInitSubstate2Dr(sciddicaT, Q.f[0], 0);
	calInitSubstate2Dr(sciddicaT, Q.f[1], 0);
	calInitSubstate2Dr(sciddicaT, Q.f[2], 0);
	calInitSubstate2Dr(sciddicaT, Q.f[3], 0);
}
コード例 #6
0
ファイル: Sciara.cpp プロジェクト: knotman90/opencal
void initSciara(char * demPath) {

	sciara = new Sciara;
	FILE * demFile = fopen(demPath, "r");
	if (demFile == NULL) {
		perror("Cannot open dem file\n");
		exit(EXIT_FAILURE);
	}
	TGISInfo sciaraINFO;
	int err = LeggiGISInfo(sciaraINFO, demFile);
	if (err > 0) {
		perror("Error while reading GIS INFO\n");
		exit(EXIT_FAILURE);
	}

	sciara->rows = sciaraINFO.nrows;
	sciara->cols = sciaraINFO.ncols;
	sciara->elapsed_time = 0.0;
	sciara->parameters.rad2 = sqrt(2.0);
	sciara->parameters.effusion_duration = 0;

	if (active)
		sciara->model = calCADef2D(sciara->rows, sciara->cols, CAL_MOORE_NEIGHBORHOOD_2D, CAL_SPACE_TOROIDAL, CAL_OPT_ACTIVE_CELLS);
	else
		sciara->model = calCADef2D(sciara->rows, sciara->cols, CAL_MOORE_NEIGHBORHOOD_2D, CAL_SPACE_TOROIDAL, CAL_NO_OPT);

	sciara->substates = new SciaraSubstates();

	sciara->substates->Sz = calAddSubstate2Dr(sciara->model);
	sciara->substates->Slt = calAddSubstate2Dr(sciara->model);
	sciara->substates->St = calAddSubstate2Dr(sciara->model);

	sciara->substates->Mb = calAddSingleLayerSubstate2Db(sciara->model);
	sciara->substates->Mv = calAddSingleLayerSubstate2Di(sciara->model);
	sciara->substates->Msl = calAddSingleLayerSubstate2Dr(sciara->model);
	sciara->substates->Sz_t0 = calAddSingleLayerSubstate2Dr(sciara->model);

	calInitSubstate2Dr(sciara->model, sciara->substates->Sz, 0);
	calInitSubstate2Dr(sciara->model, sciara->substates->Slt, 0);
	calInitSubstate2Dr(sciara->model, sciara->substates->St, 0);

	//TODO single layer initialization
	for (int i = 0; i < sciara->rows * sciara->cols; ++i) {
		sciara->substates->Mb->current[i] = CAL_FALSE;
		sciara->substates->Mv->current[i] = 0;
		sciara->substates->Msl->current[i] = 0;
		sciara->substates->Sz_t0->current[i] = 0;
	}

	for (int i = 0; i < NUMBER_OF_OUTFLOWS; ++i) {
		sciara->substates->f[i] = calAddSubstate2Dr(sciara->model);
		calInitSubstate2Dr(sciara->model, sciara->substates->f[i], 0);
	}

	fclose(demFile);

}