fixed: set parameters in ASMuxD(mx)::evalSolution

This commit is contained in:
Arne Morten Kvarving 2020-07-17 12:32:11 +02:00
parent 885148c092
commit fa9ab988ea
4 changed files with 24 additions and 4 deletions

View File

@ -2295,8 +2295,11 @@ bool ASMu2D::evalSolution (Matrix& sField, const IntegrandBase& integrand,
std::cout <<"\n"<< fe;
#endif
// Cartesian coordinates of current integration point
utl::Point X4(Xnod*fe.N,{fe.u,fe.v});
// Now evaluate the solution field
if (!integrand.evalSol(solPt,fe,Xnod*fe.N,MNPC[iel]))
if (!integrand.evalSol(solPt,fe,X4,MNPC[iel]))
return false;
else if (sField.empty())
sField.resize(solPt.size(),nPoints,true);

View File

@ -32,6 +32,7 @@
#include "Fields.h"
#include "SplineUtils.h"
#include "Utilities.h"
#include "Point.h"
#include "Profiler.h"
#include "Vec3Oper.h"
#include "Vec3.h"
@ -953,7 +954,13 @@ bool ASMu2Dmx::evalSolution (Matrix& sField, const IntegrandBase& integrand,
// Now evaluate the solution field
Vector solPt;
if (!integrand.evalSol(solPt,fe,Xnod*fe.basis(geoBasis),
// Cartesian coordinates of current integration point
fe.u = gpar[0][i];
fe.v = gpar[1][i];
utl::Point X4(Xnod*fe.basis(geoBasis),{fe.u,fe.v});
if (!integrand.evalSol(solPt,fe,X4,
MNPC[els[geoBasis-1]-1],elem_sizes,nb))
return false;
else if (sField.empty())

View File

@ -1865,8 +1865,11 @@ bool ASMu3D::evalSolution (Matrix& sField, const IntegrandBase& integrand,
std::cout <<"\n"<< fe;
#endif
// Cartesian coordinates of current integration point
utl::Point X4(Xnod*fe.N, {fe.u, fe.v, fe.w});
// Now evaluate the solution field
if (!integrand.evalSol(solPt,fe,Xnod*fe.N,MNPC[iel]))
if (!integrand.evalSol(solPt,fe,X4,MNPC[iel]))
return false;
else if (sField.empty())
sField.resize(solPt.size(),nPoints,true);

View File

@ -31,6 +31,7 @@
#include "Fields.h"
#include "SplineUtils.h"
#include "Utilities.h"
#include "Point.h"
#include "Profiler.h"
#include "Vec3Oper.h"
#include "Vec3.h"
@ -893,9 +894,15 @@ bool ASMu3Dmx::evalSolution (Matrix& sField, const IntegrandBase& integrand,
d2Nxdu2[b],fe.grad(b+1),false);
}
// Cartesian coordinates of current integration point
fe.u = gpar[0][i];
fe.v = gpar[1][i];
fe.w = gpar[2][i];
utl::Point X4(Xnod*fe.basis(geoBasis), {fe.u, fe.v, fe.w});
// Now evaluate the solution field
Vector solPt;
if (!integrand.evalSol(solPt,fe,Xnod*fe.basis(geoBasis),
if (!integrand.evalSol(solPt,fe,X4,
MNPC[els[geoBasis-1]-1],elem_sizes,nb))
return false;
else if (sField.empty())