11 #beginMacro savePressureAndGhostVelocity(tp,nab)
14 const int uc = parameters.dbase.get<
int >(
"uc");
15 const int pc = parameters.dbase.get<
int >(
"pc");
16 OGFunction &
e = *(parameters.dbase.get<OGFunction* >(
"exactSolution"));
18 const int numberOfDimensions=
cg.numberOfDimensions();
19 const int numberOfGhostLines=2;
20 Range
V(uc,uc+numberOfDimensions-1);
22 for(
int grid=0;
grid<gf[mOld].cg.numberOfComponentGrids();
grid++ )
24 MappedGrid &
c = gf[mOld].cg[
grid];
26 realArray & fng =
fn[nab][
grid];
27 realArray & uOld = gf[mOld].u[
grid];
29 realSerialArray fnLocal; getLocalArrayWithGhostBoundaries(fng,fnLocal);
30 realSerialArray uOldLocal; getLocalArrayWithGhostBoundaries(uOld,uOldLocal);
32 realSerialArray & fnLocal = fng;
33 realSerialArray & uOldLocal = uOld;
35 OV_GET_SERIAL_ARRAY_CONST(real,c.vertex(),xLocal);
38 const IntegerArray & gridIndexRange = c.gridIndexRange();
46 if( parameters.dbase.get<
bool >(
"twilightZoneFlow") )
51 e.gd(fnLocal,xLocal,numberOfDimensions,isRectangular,0,0,0,0,
I1,I2,
I3,pc,tp);
53 fprintf(debugFile,
"savePressureAndGhostVelocity: Set p at old time for fourth-order: nab=%i, t=%9.3e\n",nab,tp);
57 display(xLocal,
"savePressureAndGhostVelocity: xLocal from gf[mOld] ",debugFile,
"%6.3f ");
58 display(
fn[nab][
grid],
"savePressureAndGhostVelocity: fn[nab][grid] after assigning p for fourth order",debugFile,
"%6.3f ");
65 bool ok = ParallelUtility::getLocalArrayBounds(fng,fnLocal,
I1,I2,
I3);
67 fnLocal(
I1,I2,
I3,pc)=uOldLocal(
I1,I2,
I3,pc);
76 const int is=1-2*
side;
77 if( c.boundaryCondition(
side,
axis)>0 )
85 if( parameters.dbase.get<
bool >(
"twilightZoneFlow") )
91 e.gd(fnLocal,xLocal,numberOfDimensions,isRectangular,0,0,0,0,
I1,I2,
I3,V,tp);
97 bool ok = ParallelUtility::getLocalArrayBounds(fng,fnLocal,
I1,I2,
I3);
99 fnLocal(
I1,I2,
I3,V)=uOldLocal(
I1,I2,
I3,V);
104 Iv[
axis]=Range(gridIndexRange(0,
axis),gridIndexRange(1,
axis));
118 #beginMacro initializePredictorCorrector(METHOD,utImplicit)
125 if( movingGridProblem() )
128 getGridVelocity( gf[mCur],t0 );
132 if( orderOfTimeExtrapolationForPressure!=-1 )
134 if( orderOfPredictorCorrector==2 && orderOfTimeExtrapolationForPressure>1 &&
135 poisson!=NULL && poisson->isSolverIterative() )
139 assert( previousPressure==NULL );
140 assert( !parameters.isMovingGridProblem() );
142 numberOfExtraPressureTimeLevels = orderOfTimeExtrapolationForPressure - 1;
143 printf(
" ***initPC: allocate %i extra grid functions to store the pressure at previous times ****\n",
144 numberOfExtraPressureTimeLevels);
146 previousPressure =
new realCompositeGridFunction [numberOfExtraPressureTimeLevels];
147 for(
int i=0;
i<numberOfExtraPressureTimeLevels;
i++ )
149 previousPressure[
i].updateToMatchGrid(gf[mCur].
cg);
159 if( parameters.dbase.get<
bool >(
"twilightZoneFlow") )
161 OGFunction &
e = *(parameters.dbase.get<OGFunction* >(
"exactSolution"));
163 if( orderOfAccuracy==4 )
167 const int numberOfPreviousValuesOfPressureToSave= orderOfPredictorCorrector==2 ? 1 : 2;
170 for(
int m=0;
m<numberOfPreviousValuesOfPressureToSave;
m++ )
173 const int nab=(nab2+
m) % 4;
174 real tp=t0-(
m+2)*dt0;
176 if( movingGridProblem() )
179 moveGrids( t0,t0,tp,dt0,gf[mCur],gf[mCur],gf[mOld] );
181 gf[mOld].u.updateToMatchGrid(gf[mOld].
cg);
184 fn[nab].updateToMatchGrid(gf[mOld].cg);
189 gf[mOld].u.getOperators()->updateToMatchGrid(gf[mOld].cg);
190 parameters.dbase.get<RealArray>(
"timing")(parameters.dbase.get<
int>(
"timeForUpdateOperators"))+=getCPU()-cpu0;
196 e.assignGridFunction( gf[mOld].
u,tp );
198 updateStateVariables(gf[mOld]);
200 if( parameters.useConservativeVariables() )
201 gf[mOld].primitiveToConservative();
203 if( orderOfPredictorCorrector==4 )
205 for( grid=0; grid<gf[mCur].cg.numberOfComponentGrids(); grid++ )
207 rparam[0]=gf[mOld].t;
208 rparam[1]=gf[mOld].t;
209 rparam[2]=gf[mCur].t-gf[mOld].t;
211 iparam[1]=gf[mOld].cg.refinementLevelNumber(grid);
212 iparam[2]=numberOfStepsTaken;
214 getUt(gf[mOld].u[grid],gf[mOld].getGridVelocity(grid),
fn[nab][grid],iparam,rparam,
215 utImplicit[grid],&gf[mOld].
cg[grid]);
226 const int nabPastTime=(nab0+
m);
227 savePressureAndGhostVelocity(tp,nabPastTime);
234 if( movingGridProblem() && debug() & 64 )
236 CompositeGrid &
cg = *
fn[nab].getCompositeGrid();
238 for( grid=0; grid<cg.numberOfComponentGrids(); grid++ )
240 if( parameters.gridIsMoving(grid) )
242 display(cg[grid].vertex()(
I1,
I2,
I3,0),sPrintF(
"\n *** PC: AFTER moveGrids: fn[nab] "
243 "grid=%i vertex after move back t=%e",grid,gf[mOld].t),debugFile,
"%8.5f ");
248 determineErrors(
fn[nab],gf[mOld].gridVelocity, tp, 1, error,
249 sPrintF(
" adams:startup: errors in ut (nab=%i) at t=%e \n",nab,tp) );
257 if( movingGridProblem() )
261 fPrintF(debugFile,
"METHOD: take an initial step backwards\n");
266 moveGrids( t0,t0,t0-dt0,dt0,gf[mCur],gf[mCur],gf[mOld] );
269 if( parameters.isAdaptiveGridProblem() )
271 parameters.dbase.get<Ogen* >(
"gridGenerator")->updateRefinement(gf[mOld].
cg);
275 gf[mOld].u.getOperators()->updateToMatchGrid(gf[mOld].
cg);
276 parameters.dbase.get<RealArray>(
"timing")(parameters.dbase.get<
int>(
"timeForUpdateOperators"))+=getCPU()-cpu0;
280 for(
grid=0;
grid<gf[mOld].cg.numberOfComponentGrids();
grid++ )
282 if( parameters.gridIsMoving(
grid) )
284 display(gf[mOld].cg[
grid].vertex()(
I1,
I2,
I3,0),sPrintF(
"\n *** PC: AFTER moveGrids: gf[mOld] grid=%i vertex after move back t=%e",
grid,gf[mOld].t),
285 debugFile,
"%10.7f ");
292 gf[mOld].u.updateToMatchGrid(gf[mOld].cg);
295 fn[nab1].updateToMatchGrid(gf[mOld].cg);
302 e.assignGridFunction( gf[mOld].
u,t0-dt0 );
303 updateStateVariables(gf[mOld]);
305 if( parameters.useConservativeVariables() )
306 gf[mOld].primitiveToConservative();
309 for(
int grid=0;
grid<gf[mCur].cg.numberOfComponentGrids();
grid++ )
311 rparam[0]=gf[mOld].t;
312 rparam[1]=gf[mOld].t;
313 rparam[2]=gf[mCur].t-gf[mOld].t;
315 iparam[1]=gf[mOld].cg.refinementLevelNumber(
grid);
316 iparam[2]=numberOfStepsTaken;
317 getUt(gf[mOld].u[
grid],gf[mOld].getGridVelocity(grid),
fn[nab1][grid],iparam,rparam,
318 utImplicit[grid],&gf[mOld].
cg[grid]);
325 for(
grid=0;
grid<gf[mOld].cg.numberOfComponentGrids();
grid++ )
327 MappedGrid &
c = gf[mOld].cg[
grid];
329 Range Na(0,parameters.dbase.get<
int >(
"numberOfComponents")-1);
332 if( parameters.gridIsMoving(
grid) )
334 const realArray & gridVelocity = gf[mOld].getGridVelocity(
grid);
335 const int na=parameters.dbase.get<
int >(
"uc"), nb=na+c.numberOfDimensions()-1;
336 for(
int n=na;
n<=nb;
n++ )
338 fn[nab1][
grid](
I1,
I2,
I3,
n)+=gridVelocity(I1,I2,I3,0)*e.x(c,I1,I2,I3,
n,t0-dt0)+
339 gridVelocity(I1,I2,I3,1)*e.y(c,I1,I2,I3,
n,t0-dt0);
340 if( c.numberOfDimensions()>2 )
341 fn[nab1][
grid](I1,I2,I3,
n)+=gridVelocity(I1,I2,I3,2)*e.z(c,I1,I2,I3,
n,t0-dt0);
344 display(
fn[nab1][
grid],sPrintF(
"METHOD:init: ut(t-dt) grid=%i from TZ at t=%e\n",grid,gf[mOld].t),debugFile,
"%5.2f ");
351 if( numberOfExtraPressureTimeLevels>0 )
354 for(
int i=0;
i<numberOfExtraPressureTimeLevels;
i++ )
359 realCompositeGridFunction & pp = previousPressure[
i];
361 for(
grid=0;
grid<gf[mCur].cg.numberOfComponentGrids();
grid++ )
363 e.gd( pp[
grid],0,0,0,0,all,all,all,parameters.dbase.get<
int >(
"pc"),tp);
369 if( debug() & 4 || debug() & 64 )
371 for(
grid=0;
grid<gf[mCur].cg.numberOfComponentGrids();
grid++ )
374 display(gf[mOld].u[
grid],sPrintF(buff,
"\n ****METHOD: Init:gf[mOld].u grid=%i : du/dt(t) t=%9.3e",grid,gf[mOld].t),
376 display(
fn[nab1][grid],sPrintF(buff,
"\n ****METHOD: Init:fn[nab1] grid=%i : du/dt(t) t=%9.3e",grid,gf[mOld].t),
378 if( parameters.isMovingGridProblem() )
380 display(gf[mOld].getGridVelocity(grid),sPrintF(
"adams:init: t=-dt: gridVelocity[%i] at t=%9.3e\n",grid,gf[mOld].t),debugFile,
"%5.2f ");
381 display(gf[mCur].getGridVelocity(grid),sPrintF(
"adams:init: t=0 : gridVelocity[%i] at t=%9.3e\n",grid,gf[mCur].t),debugFile,
"%5.2f ");
383 if( debug() & 64 && parameters.isMovingGridProblem() )
385 display(gf[mOld].
cg[grid].vertex(),sPrintF(
"adams:init: gf[mOld].cg[%i].vertex at t=%9.3e\n",grid,gf[mOld].t),debugFile,
"%7.4f ");
386 display(gf[mCur].
cg[grid].vertex(),sPrintF(
"adams:init: gf[mCur].cg[%i].vertex at t=%9.3e\n",grid,gf[mCur].t),debugFile,
"%7.4f ");
394 if( parameters.isMovingGridProblem() )
396 determineErrors( gf[mOld].u,gf[mOld].gridVelocity, gf[mOld].t, 0, error,
397 sPrintF(
" adams:init: errors in u at t=%9.3e (t0-dt0=%9.3e)\n",gf[mOld].t,t0-dt0) );
398 fn[nab1].updateToMatchGrid(gf[mOld].
cg);
399 determineErrors(
fn[nab1],gf[mOld].gridVelocity, gf[mOld].t, 1, error,
400 sPrintF(
" adams:init: errors in ut (fn[nab1]) at t=%9.3e (t0-dt0=%9.3e)\n",gf[mOld].t,t0-dt0) );
411 printF(
" **************** METHOD: still need correct initial values for du/dt(t-dt) ****** \n");
412 printF(
" **************** use values from du/dt(t) ****** \n");
414 if( parameters.useConservativeVariables() )
415 gf[mCur].primitiveToConservative();
422 printF(
" PC: init: gf[mOld].u.numberOfGrids=%i \n",gf[mOld].
u.numberOfGrids());
423 printF(
" PC: init: gf[mOld].cg.numberOfComponentGrids=%i \n",gf[mOld].
cg.numberOfComponentGrids());
425 printF(
" PC: init: gf[mCur].u.numberOfGrids=%i \n",gf[mCur].
u.numberOfGrids());
426 printF(
" PC: init: gf[mCur].cg.numberOfComponentGrids=%i \n",gf[mCur].
cg.numberOfComponentGrids());
431 gf[mOld].form=gf[mCur].form;
435 rparam[0]=gf[mOld].t;
436 rparam[1]=gf[mOld].t;
438 rparam[2]=gf[mCur].t;
440 iparam[1]=gf[mOld].cg.refinementLevelNumber(
grid);
441 iparam[2]=numberOfStepsTaken;
442 getUt(gf[mOld].
u[
grid],gf[mOld].getGridVelocity(grid),
fn[nab1][grid],iparam,rparam,
443 utImplicit[grid],&gf[mOld].
cg[grid]);
447 MappedGrid &
c = gf[mOld].cg[
grid];
450 if( orderOfPredictorCorrector==4 )
452 for(
int m=0;
m<=1;
m++ )
454 const int nab=(mOld+
m+1) % 4;
464 if(
false && orderOfAccuracy==4 )
466 const int uc = parameters.dbase.get<
int >(
"uc");
467 const int pc = parameters.dbase.get<
int >(
"pc");
468 OGFunction &
e = *(parameters.dbase.get<OGFunction* >(
"exactSolution"));
470 const int numberOfGhostLines=2;
471 Range
V(uc,uc+gf[mOld].
cg.numberOfDimensions()-1);
472 const int numberOfPreviousValuesOfPressureToSave= orderOfPredictorCorrector==2 ? 1 : 3;
473 for(
int m=0;
m<numberOfPreviousValuesOfPressureToSave;
m++ )
475 real tp=t0-(
m+2)*dt0;
477 const int nab=(nab0+
m);
478 for(
grid=0;
grid<gf[mOld].cg.numberOfComponentGrids();
grid++ )
480 MappedGrid &
c = gf[mOld].cg[
grid];
482 realArray & fng =
fn[nab][
grid];
483 realArray & uOld = gf[mOld].u[
grid];
485 realSerialArray fnLocal; getLocalArrayWithGhostBoundaries(fng,fnLocal);
486 realSerialArray uOldLocal; getLocalArrayWithGhostBoundaries(uOld,uOldLocal);
488 realSerialArray & fnLocal = fng;
489 realSerialArray & uOldLocal = uOld;
492 const IntegerArray & gridIndexRange = c.gridIndexRange();
501 if( parameters.dbase.get<
bool >(
"twilightZoneFlow") )
505 fprintf(debugFile,
" Set p at old time for fourth-order: nab=%i, t=%9.3e\n",nab,tp);
506 display(
fn[nab][
grid],
"fn[nab][grid] before assigning p for fourth order",debugFile,
"%5.2f ");
507 e.gd(
fn[nab][grid],0,0,0,0,
I1,I2,
I3,pc,tp);
508 display(
fn[nab][grid],
"fn[nab][grid] after assigning p for fourth order",debugFile,
"%5.2f ");
513 bool ok = ParallelUtility::getLocalArrayBounds(fng,fnLocal,
I1,I2,
I3);
515 fnLocal(
I1,I2,
I3,pc)=uOldLocal(
I1,I2,
I3,pc);
521 for( axis=0; axis<c.numberOfDimensions(); axis++ )
523 for( side=0; side<=1; side++ )
525 const int is=1-2*
side;
526 if( c.boundaryCondition(side,axis)>0 )
530 Iv[
axis]=Range(gridIndexRange(side,axis)-2,gridIndexRange(side,axis)-1);
532 Iv[
axis]=Range(gridIndexRange(side,axis)+1,gridIndexRange(side,axis)+2);
534 if( parameters.dbase.get<
bool >(
"twilightZoneFlow") )
544 bool ok = ParallelUtility::getLocalArrayBounds(fng,fnLocal,
I1,I2,
I3);
551 Iv[
axis]=Range(gridIndexRange(0,axis),gridIndexRange(1,axis));
595 #beginMacro moveTheGridsMacro(METHOD,utImplicit,predictorOrder,tb,ub,tc,uc,td,ud)
597 if( movingGridProblem() )
599 checkArrays(
" METHOD : before move grids");
602 printf(
" METHOD: before moveTheGridsMacro: t0=%9.3e, gf[mNew].t=%9.3e, gf[mNew].gridVelocityTime=%9.3e\n",
603 t0,gf[mNew].t,gf[mNew].gridVelocityTime);
606 moveGrids( t0,t0,t0+dt0,dt0,gf[mCur],gf[mCur],gf[mNew] );
608 checkArrayIDs(sPrintF(
" METHOD : after move grids t=%9.3e",gf[mCur].t));
610 if( parameters.isAdaptiveGridProblem() )
613 parameters.dbase.get<Ogen* >(
"gridGenerator")->updateRefinement(gf[mNew].
cg);
618 if( twilightZoneFlow() )
620 fprintf(debugFile,
"\n ---> METHOD : Errors in u after moveGrids t=%e \n",gf[mCur].t);
621 determineErrors( gf[mCur] );
627 gf[mNew].cg.rcData->interpolant->updateToMatchGrid( gf[mNew].
cg );
628 parameters.dbase.get<RealArray>(
"timing")(parameters.dbase.get<
int>(
"timeForUpdateInterpolant"))+=getCPU()-cpu0;
631 gf[mNew].u.getOperators()->updateToMatchGrid(gf[mNew].cg);
632 parameters.dbase.get<RealArray>(
"timing")(parameters.dbase.get<
int>(
"timeForUpdateOperators"))+=getCPU()-cpu0;
634 if( debug() & 4 ) printf(
"METHOD : step: update gf[mNew] for moving grids, gf[mNew].t=%9.3e,...\n",gf[mNew].t);
638 if( twilightZoneFlow() )
640 fprintf(debugFile,
"\n ---> METHOD: Errors in u before updateForMovingGrids t=%e \n",gf[mCur].t);
641 fprintf(debugFile,
"*** mCur=%i mNew=%i numberOfGridFunctions=%i *** \n",
642 mCur,mNew,numberOfGridFunctions);
644 determineErrors( gf[mCur] );
648 updateForMovingGrids(gf[mNew]);
651 checkArrayIDs(sPrintF(
" METHOD : after updateForMovingGrids t=%9.3e",gf[mCur].t));
655 if( twilightZoneFlow() )
657 fprintf(debugFile,
"\n ---> METHOD: Errors in u after updateForMovingGrids t=%e \n",gf[mCur].t);
658 determineErrors( gf[mCur] );
663 if( parameters.useConservativeVariables() )
664 gf[mCur].primitiveToConservative();
667 if( useNewExposedPoints && parameters.dbase.get<
int>(
"simulateGridMotion")==0 )
674 if( twilightZoneFlow() )
676 fprintf(debugFile,
"\n ---> METHOD: Errors in u BEFORE interp exposed t=%e \n",gf[mCur].t);
677 determineErrors( gf[mCur] );
685 ExposedPoints exposedPoints;
686 exposedPoints.setAssumeInterpolationNeighboursAreAssigned(parameters.dbase.get<
int >(
"extrapolateInterpolationNeighbours"));
687 exposedPoints.initialize(gf[mCur].cg,gf[mNew].cg,parameters.dbase.get<
int >(
"stencilWidthForExposedPoints"));
688 exposedPoints.interpolate(gf[mCur].u,(twilightZoneFlow() ? parameters.dbase.get<OGFunction* >(
"exactSolution") : NULL),t0);
692 if( twilightZoneFlow() )
694 fprintf(debugFile,
"\n ---> METHOD: Errors in u AFTER interp exposed t=%e \n",gf[mCur].t);
695 determineErrors( gf[mCur] );
699 if( predictorOrder==0 )
701 OV_ABORT(
"METHOD: moveTheGrids: ERROR: predictorOrder=0");
704 if( predictorOrder>=2 )
721 if( gf[mCur].t<=0. || debug() & 4 )
723 printF(
" --- INFO: Fixup exposed points of u(t-dt) and recompute du/dt(t-dt) t=%9.3e, tb=%9.3e ----- \n"
724 " The extra work involved in recomputing du/dt(t-dt) can be avoided by using "
725 "the option 'first order predictor'.\n",gf[mCur].t,tb);
728 ExposedPoints exposedPoints;
733 exposedPoints.setAssumeInterpolationNeighboursAreAssigned(parameters.dbase.get<
int >(
"extrapolateInterpolationNeighbours"));
735 exposedPoints.initialize(gf[mOld].cg,gf[mNew].cg,parameters.dbase.get<
int >(
"stencilWidthForExposedPoints"));
736 exposedPoints.interpolate(gf[mOld].u,(twilightZoneFlow() ? parameters.dbase.get<OGFunction* >(
"exactSolution") : NULL),gf[mOld].t);
739 for(
grid=0;
grid<gf[mOld].cg.numberOfComponentGrids();
grid++ )
742 if( gridWasAdapted || exposedPoints.getNumberOfExposedPoints(
grid)>0 )
745 printf(
" ---- METHOD: recompute du/dt(t-dt) for grid=%i t-dt = %9.3e (%i exposed)-----\n",
grid,gf[mOld].t,
746 exposedPoints.getNumberOfExposedPoints(
grid));
749 rparam[0]=gf[mOld].t;
750 rparam[1]=gf[mOld].t;
751 rparam[2]=gf[mCur].t;
753 iparam[1]=gf[mOld].cg.refinementLevelNumber(
grid);
754 iparam[2]=numberOfStepsTaken;
756 getUt(gf[mOld].u[
grid],gf[mOld].getGridVelocity(grid),ub[grid],iparam,rparam,
757 utImplicit[grid],&gf[mNew].cg[grid]);
763 if( twilightZoneFlow() )
765 fprintf(debugFile,
" ***METHOD: gf[mOld] after interp exposed, gf[mOld].t=%e",gf[mOld].t);
766 for(
grid=0;
grid<gf[mOld].cg.numberOfComponentGrids();
grid++ )
768 display(gf[mOld].u[
grid],sPrintF(
"\n ****gf[mOld].u[grid=%i]",grid),debugFile,
"%7.1e ");
770 determineErrors( gf[mOld] );
772 fprintf(debugFile,
" ***METHOD: du/dt(t-dt) after interp exposed, gf[mOld].t=%e",gf[mOld].t);
773 for(
grid=0;
grid<gf[mOld].cg.numberOfComponentGrids();
grid++ )
775 display(ub[
grid],sPrintF(
"\n ****ub[grid=%i]: du/dt(t-dt)",grid),debugFile,
"%7.1e ");
777 determineErrors( ub,gf[mOld].gridVelocity, gf[mOld].t, 1, error );
782 if( predictorOrder>=3 )
784 OV_ABORT(
"METHOD: moveTheGridsMacro:Error: finish me for predictorOrder>=3");
790 checkSolution(gf[mCur].u,
"METHOD: After interp exposed points",
true);
793 else if( parameters.dbase.get<
int>(
"simulateGridMotion")==0 )
796 interpolateExposedPoints(gf[mCur].cg,gf[mNew].cg,gf[mCur].
u,
797 (twilightZoneFlow() ? parameters.dbase.get<OGFunction* >(
"exactSolution") : NULL),t0,
798 false,Overture::nullIntArray(),Overture::nullIntegerDistributedArray(),
799 parameters.dbase.get<
int >(
"stencilWidthForExposedPoints") );
803 if( twilightZoneFlow() &&
false )
806 OGFunction &
e = *(parameters.dbase.get<OGFunction* >(
"exactSolution"));
809 MappedGrid &
c = gf[mNew].cg[
grid];
818 parameters.dbase.get<RealArray>(
"timing")(parameters.dbase.get<
int>(
"timeForInterpolateExposedPoints"))+=getCPU()-cpu0;
821 checkArrayIDs(sPrintF(
" METHOD : after moving grids update t=%9.3e",gf[mCur].t));
826 if( twilightZoneFlow() )
828 fprintf(debugFile,
"\n ---> METHOD: Errors in u after move grids t=%e \n",gf[mCur].t);
829 determineErrors( gf[mCur] );
834 printf(
" METHOD: AFTER moveTheGridsMacro: t0=%9.3e, gf[mNew].t=%9.3e, gf[mNew].gridVelocityTime=%9.3e\n",
835 t0,gf[mNew].t,gf[mNew].gridVelocityTime);