diff --git a/Plugin/DisplacementRaise.cpp b/Plugin/DisplacementRaise.cpp index 70b07153aef020aa375b98e845ebddba21cb09ef..9202582d9dd1fe858cab71ce46fb5548ba181579 100644 --- a/Plugin/DisplacementRaise.cpp +++ b/Plugin/DisplacementRaise.cpp @@ -1,4 +1,4 @@ -// $Id: DisplacementRaise.cpp,v 1.6 2003-11-18 21:04:41 geuzaine Exp $ +// $Id: DisplacementRaise.cpp,v 1.7 2003-11-19 01:52:32 geuzaine Exp $ // // Copyright (C) 1997-2003 C. Geuzaine, J.-F. Remacle // @@ -102,9 +102,9 @@ static void displacementRaiseList(Post_View * iView, List_T * iList, int iNbElm, // should we treat multiple time steps by generating new views // (cf. time dependent CutMaps)? if(dTimeStep < 0 || dTimeStep > dView->NbTimeStep - 1){ - dTimeStep = 0; Msg(WARNING, "Invalid TimeStep (%d) in View[%d]: choosing TimeStep 0", dTimeStep, dView->Index); + dTimeStep = 0; } iView->Changed = 1; diff --git a/Plugin/SphericalRaise.cpp b/Plugin/SphericalRaise.cpp index 7308993bf93b1a555661ea402a87948f07d926e5..5c9921bce0fba55b5dcb4ef8fb98d328b1dde2a9 100644 --- a/Plugin/SphericalRaise.cpp +++ b/Plugin/SphericalRaise.cpp @@ -1,4 +1,4 @@ -// $Id: SphericalRaise.cpp,v 1.7 2003-11-14 21:20:55 geuzaine Exp $ +// $Id: SphericalRaise.cpp,v 1.8 2003-11-19 01:52:32 geuzaine Exp $ // // Copyright (C) 1997-2003 C. Geuzaine, J.-F. Remacle // @@ -33,6 +33,7 @@ StringXNumber SphericalRaiseOptions_Number[] = { {GMSH_FULLRC, "Yc", NULL, 0.}, {GMSH_FULLRC, "Zc", NULL, 0.}, {GMSH_FULLRC, "Raise", NULL, 1.}, + {GMSH_FULLRC, "TimeStep", NULL, 0.}, {GMSH_FULLRC, "iView", NULL, -1.} }; @@ -61,15 +62,16 @@ void GMSH_SphericalRaisePlugin::getInfos(char *author, char *copyright, strcpy(author, "C. Geuzaine (geuz@geuz.org)"); strcpy(copyright, "DGR (www.multiphysics.com)"); strcpy(help_text, - "Plugin(SphericalRaise) transforms the coordinates\n" - "of the elements in the view 'iView' according to\n" - "the elements' associated values. Instead of\n" - "elevating the nodes along the X, Y and Z axes\n" - "as in View['iView'].RaiseX, View['iView'].RaiseY\n" + "Plugin(SphericalRaise) transforms the\n" + "coordinates of the elements in the view 'iView'\n" + "using the values associated with the\n" + "'TimeStep'-th time step. Instead of elevating\n" + "the nodes along the X, Y and Z axes as in\n" + "View['iView'].RaiseX, View['iView'].RaiseY\n" "and View['iView'].RaiseZ, the raise is applied\n" " along the radius of a sphere centered at ('Xc',\n" - "'Yc', 'Zc'). If 'iView' < 0, the plugin is run on\n" - "the current view.\n"); + "'Yc', 'Zc'). If 'iView' < 0, the plugin is run\n" + "on the current view.\n"); } int GMSH_SphericalRaisePlugin::getNbOptions() const @@ -88,7 +90,8 @@ void GMSH_SphericalRaisePlugin::CatchErrorMessage(char *errorMessage) const } static void sphericalRaiseList(Post_View * v, List_T * list, int nbelm, - int nbvert, double center[3], double raise) + int nbvert, int timeStep, double center[3], + double raise) { double *x, *y, *z, *val, d[3], coef; int nb, i, j; @@ -98,6 +101,12 @@ static void sphericalRaiseList(Post_View * v, List_T * list, int nbelm, else return; + if(timeStep < 0 || timeStep > v->NbTimeStep - 1){ + Msg(WARNING, "Invalid TimeStep (%d) in View[%d]: choosing TimeStep 0", + timeStep, v->Index); + timeStep = 0; + } + // for each element // for each node // compute d=(x-Xc,y-Yc,z-Zc) @@ -116,7 +125,7 @@ static void sphericalRaiseList(Post_View * v, List_T * list, int nbelm, d[1] = y[j] - center[1]; d[2] = z[j] - center[2]; norme(d); - coef = raise * val[j]; + coef = raise * val[nbvert * timeStep + j]; x[j] += coef * d[0]; y[j] += coef * d[1]; z[j] += coef * d[2]; @@ -124,16 +133,17 @@ static void sphericalRaiseList(Post_View * v, List_T * list, int nbelm, } } -static void sphericalRaise(Post_View * v, double center[3], double raise) +static void sphericalRaise(Post_View * v, int timeStep, double center[3], + double raise) { - sphericalRaiseList(v, v->SP, v->NbSP, 1, center, raise); - sphericalRaiseList(v, v->SL, v->NbSL, 2, center, raise); - sphericalRaiseList(v, v->ST, v->NbST, 3, center, raise); - sphericalRaiseList(v, v->SQ, v->NbSQ, 4, center, raise); - sphericalRaiseList(v, v->SS, v->NbSS, 4, center, raise); - sphericalRaiseList(v, v->SH, v->NbSH, 8, center, raise); - sphericalRaiseList(v, v->SI, v->NbSI, 6, center, raise); - sphericalRaiseList(v, v->SY, v->NbSY, 5, center, raise); + sphericalRaiseList(v, v->SP, v->NbSP, 1, timeStep, center, raise); + sphericalRaiseList(v, v->SL, v->NbSL, 2, timeStep, center, raise); + sphericalRaiseList(v, v->ST, v->NbST, 3, timeStep, center, raise); + sphericalRaiseList(v, v->SQ, v->NbSQ, 4, timeStep, center, raise); + sphericalRaiseList(v, v->SS, v->NbSS, 4, timeStep, center, raise); + sphericalRaiseList(v, v->SH, v->NbSH, 8, timeStep, center, raise); + sphericalRaiseList(v, v->SI, v->NbSI, 6, timeStep, center, raise); + sphericalRaiseList(v, v->SY, v->NbSY, 5, timeStep, center, raise); } Post_View *GMSH_SphericalRaisePlugin::execute(Post_View * v) @@ -145,8 +155,8 @@ Post_View *GMSH_SphericalRaisePlugin::execute(Post_View * v) center[1] = SphericalRaiseOptions_Number[1].def; center[2] = SphericalRaiseOptions_Number[2].def; raise = SphericalRaiseOptions_Number[3].def; - - int iView = (int)SphericalRaiseOptions_Number[4].def; + int timeStep = (int)SphericalRaiseOptions_Number[4].def; + int iView = (int)SphericalRaiseOptions_Number[5].def; if(v && iView < 0) vv = v; @@ -159,7 +169,7 @@ Post_View *GMSH_SphericalRaisePlugin::execute(Post_View * v) } } - sphericalRaise(vv, center, raise); + sphericalRaise(vv, timeStep, center, raise); return vv; }