Commit 88e69f41 authored by Anthony Royer's avatar Anthony Royer

Merge branch 'master' into msh4

parents 7c5bece1 430ff6e7
Pipeline #1877 failed with stage
in 39 seconds
......@@ -955,6 +955,10 @@ struct StringXFunction2Nbr F_Function[] = { /* #Par #Arg */
{"Yn" , (CAST)F_Yn , 0, 2 },
{"dJn" , (CAST)F_dJn , 0, 2 },
{"dYn" , (CAST)F_dYn , 0, 2 },
{"JnSph" , (CAST)F_JnSph , 0, 2 },
{"YnSph" , (CAST)F_YnSph , 0, 2 },
{"dJnSph" , (CAST)F_dJnSph , 0, 2 },
{"dYnSph" , (CAST)F_dYnSph , 0, 2 },
// F_ExtMath
{"Hypot" , (CAST)F_Hypot , 0, 2 },
......@@ -1146,7 +1150,7 @@ struct StringXFunction2Nbr F_Function[] = { /* #Par #Arg */
{"AcousticFieldSoftCylinderABC", (CAST)F_AcousticFieldSoftCylinderABC, 5, 1 },
{"DrAcousticFieldSoftCylinder", (CAST)F_DrAcousticFieldSoftCylinder, 2, 1 },
{"RCSSoftCylinder", (CAST)F_RCSSoftCylinder, 2, 1 },
{"AcousticFieldHardCylinder", (CAST)F_AcousticFieldHardCylinder, 2, 1 },
{"AcousticFieldHardCylinder", (CAST)F_AcousticFieldHardCylinder, -1, 1 },
{"AcousticFieldHardCylinderABC", (CAST)F_AcousticFieldHardCylinderABC, 5, 1 },
{"DthetaAcousticFieldHardCylinder", (CAST)F_DthetaAcousticFieldHardCylinder, 2, 1 },
{"RCSHardCylinder", (CAST)F_RCSHardCylinder, 2, 1 },
......
......@@ -133,6 +133,10 @@ void F_JnComplex (F_ARG) ;
void F_Yn (F_ARG) ;
void F_dJn (F_ARG) ;
void F_dYn (F_ARG) ;
void F_JnSph (F_ARG) ;
void F_YnSph (F_ARG) ;
void F_dJnSph (F_ARG) ;
void F_dYnSph (F_ARG) ;
/* F_ExtMath */
......
......@@ -1686,7 +1686,7 @@ void F_AcousticFieldSoftCylinder(F_ARG)
std::complex<double> I(0,1);
double vr=0, vi=0;
#if defined(_OPENMP)
//#pragma omp parallel for reduction(+: vr,vi)
#pragma omp parallel for reduction(+: vr,vi)
#endif
for(int n = nStart ; n < nEnd ; n++){
std::complex<double> HnkR( jn(n,kR), yn(n,kR) );
......@@ -1944,49 +1944,48 @@ void F_RCSSoftCylinder(F_ARG)
void F_AcousticFieldHardCylinder(F_ARG)
{
cplx I = {0.,1.}, Hnkr, dHnkR, tmp, *HnkRtab;
double k, R, r, kr, kR, theta, cost ;
int n, ns ;
theta = atan2(A->Val[1], A->Val[0]) ;
r = sqrt(A->Val[0]*A->Val[0] + A->Val[1]*A->Val[1]) ;
k = Fct->Para[0] ;
R = Fct->Para[1] ;
kr = k*r;
kR = k*R;
V->Val[0] = 0.;
V->Val[MAX_DIM] = 0. ;
ns = (int)k + 10;
HnkRtab = (cplx*)Malloc(ns*sizeof(cplx));
double theta = atan2(A->Val[1], A->Val[0]);
double r = sqrt(A->Val[0]*A->Val[0] + A->Val[1]*A->Val[1]);
double k = Fct->Para[0];
double R = Fct->Para[1];
double kr = k*r;
double kR = k*R;
for (n = 0 ; n < ns ; n++){
HnkRtab[n].r = jn(n,kR);
HnkRtab[n].i = yn(n,kR);
// 3rd parameter : change the incidence angle
if(Fct->NbrParameters > 2){
double thetaInc = Fct->Para[2];
theta += thetaInc;
}
for (n = 0 ; n < ns ; n++){
Hnkr.r = jn(n,kr);
Hnkr.i = yn(n,kr);
dHnkR = DHn(HnkRtab, n, kR);
tmp = Cdiv( Cprod( Cpow(I,n) , Cprodr( dHnkR.r, Hnkr) ) , dHnkR );
cost = cos(n*theta);
V->Val[0] += cost * tmp.r * (!n ? 0.5 : 1.);
V->Val[MAX_DIM] += cost * tmp.i * (!n ? 0.5 : 1.);
// 4th/5th parameters : change the range of modes
int nStart = 0;
int nEnd = (int)(kR) + 10;
if(Fct->NbrParameters > 3){
int nStartNew = Fct->Para[3];
int nEndNew = Fct->Para[4];
nStart = nStartNew;
nEnd = nEndNew;
}
std::complex<double> *HnkRtab;
HnkRtab = new std::complex<double>[nEnd];
for (int n=nStart; n<nEnd; n++){
HnkRtab[n] = std::complex<double>(jn(n,kR),yn(n,kR));
}
Free(HnkRtab);
std::complex<double> I(0,1), val;
for (int n=nStart; n<nEnd; n++){
std::complex<double> Hnkr( jn(n,kr), yn(n,kr) );
std::complex<double> dHnkR = (!n ? -HnkRtab[1] : HnkRtab[n-1] - (double)n/kR * HnkRtab[n]);
std::complex<double> tmp1 = std::pow(I,n) * Hnkr/dHnkR;
double tmp2 = - (!n ? 1. : 2.) * cos(n*theta) * std::real(dHnkR);
val += tmp1 * tmp2;
}
V->Val[0] *= -2;
V->Val[MAX_DIM] *= -2;
delete HnkRtab;
V->Val[0] = std::real(val);
V->Val[MAX_DIM] = std::imag(val);
V->Type = SCALAR ;
}
......
......@@ -302,3 +302,55 @@ void F_dYn(F_ARG)
}
V->Type = SCALAR;
}
/* ------------------------------------------------------------------------ */
/* Spherical Bessel functions jn, yn and their derivatives */
/* ------------------------------------------------------------------------ */
void F_JnSph(F_ARG)
{
if(A->Type != SCALAR || (A+1)->Type != SCALAR)
Message::Error("Non scalar argument(s) for function 'JnSph' (spherical Bessel function)");
int n = (int)A->Val[0];
double x = (A+1)->Val[0];
V->Type = SCALAR;
V->Val[0] = Spherical_j_n(n, x);
}
void F_YnSph(F_ARG)
{
if(A->Type != SCALAR || (A+1)->Type != SCALAR)
Message::Error("Non scalar argument(s) for function 'YnSph' (spherical Bessel function)");
int n = (int)A->Val[0];
double x = (A+1)->Val[0];
V->Type = SCALAR;
V->Val[0] = Spherical_y_n(n, x);
}
void F_dJnSph(F_ARG)
{
if(A->Type != SCALAR || (A+1)->Type != SCALAR)
Message::Error("Non scalar argument(s) for function 'dJnSph' (derivative of spherical Bessel function)");
int n = (int)A->Val[0];
double x = (A+1)->Val[0];
V->Type = SCALAR;
V->Val[0] = (n/x) * Spherical_j_n(n, x) - Spherical_j_n(n+1, x);
}
void F_dYnSph(F_ARG)
{
if(A->Type != SCALAR || (A+1)->Type != SCALAR)
Message::Error("Non scalar argument(s) for function 'dYnSph' (derivative of spherical Bessel function)");
int n = (int)A->Val[0];
double x = (A+1)->Val[0];
V->Type = SCALAR;
V->Val[0] = (n/x) * Spherical_y_n(n, x) - Spherical_y_n(n+1, x);
}
......@@ -103,6 +103,7 @@ void Geo_CreateNormal(int Type, double *x, double *y, double *z, double *N)
switch (Type) {
case LINE :
case LINE_2 :
nx = y[1] - y[0] ;
ny = x[0] - x[1] ;
norm = sqrt(SQU(nx)+SQU(ny)) ;
......@@ -112,7 +113,9 @@ void Geo_CreateNormal(int Type, double *x, double *y, double *z, double *N)
break ;
case TRIANGLE :
case TRIANGLE_2 :
case QUADRANGLE :
case QUADRANGLE_2 :
x1x0 = x[1] - x[0] ;
y1y0 = y[1] - y[0] ;
z1z0 = z[1] - z[0] ;
......
......@@ -814,25 +814,21 @@ static PetscErrorCode PrintMatrix(Mat A, const char* filename, const char* varna
// in Kernel/LinAlg_PETSC.cpp
std::string tmp(filename);
PetscInt m,n, m_max = 600;
PetscInt m,n;
_try(PetscObjectSetName((PetscObject)A, varname));
// ASCII (if the matrix is not too large)
_try(MatGetSize(A, &m, &n));
if(m < m_max){
PetscViewer viewer;
_try(PetscViewerASCIIOpen(PETSC_COMM_WORLD, filename, &viewer));
_try(PetscViewerSetFormat(viewer, PETSC_VIEWER_ASCII_MATLAB));
_try(MatView(A, viewer));
PetscViewer viewer;
_try(PetscViewerASCIIOpen(PETSC_COMM_WORLD, filename, &viewer));
_try(PetscViewerSetFormat(viewer, PETSC_VIEWER_ASCII_MATLAB));
_try(MatView(A, viewer));
#if (PETSC_VERSION_RELEASE == 0 || ((PETSC_VERSION_MAJOR == 3) && (PETSC_VERSION_MINOR >= 2)))
_try(PetscViewerDestroy(&viewer));
_try(PetscViewerDestroy(&viewer));
#else
_try(PetscViewerDestroy(viewer));
_try(PetscViewerDestroy(viewer));
#endif
}
else{
Message::Warning("Matrix is too large, no ASCII Output (m=%d>%d)", m, m_max);
}
// BINARY
// Add the petscfolder/bin/matlab path to your matlab paths and
// type the following command in matlab, for real arithmetic :
......
......@@ -10,6 +10,7 @@
#include <math.h>
#include "Pos_Element.h"
#include "GeoData.h"
#include "GeoEntity.h"
#include "Get_Geometry.h"
#include "Get_DofOfElement.h"
#include "Cal_Value.h"
......@@ -353,10 +354,10 @@ void Cut_PostElement(struct PostElement * PE, struct Geo_Element * GE,
void Fill_PostElement(struct Geo_Element * GE, List_T * PE_L,
int Index, int Depth, int Skin, List_T * EvaluationPoints_L,
int DecomposeInSimplex)
int DecomposeInSimplex, int HighOrder)
{
struct PostElement * PE ;
int Nbr_EP, i_EP;
int Nbr_EP, i_EP, Type, NbrNodes;
if(!Depth){
......@@ -386,94 +387,130 @@ void Fill_PostElement(struct Geo_Element * GE, List_T * PE_L,
switch(GE->Type){
case POINT :
PE = Create_PostElement(Index, POINT, 1, 1) ; /* node 1 */
PE->NumNodes[0] = GE->NumNodes[0] ;
PE->u[0] = 0. ; PE->v[0] = 0. ; PE->w[0] = 0. ;
POS_CUT_FILL ;
break ;
PE = Create_PostElement(Index, POINT, 1, 1) ; /* node 1 */
PE->NumNodes[0] = GE->NumNodes[0] ;
PE->u[0] = 0. ; PE->v[0] = 0. ; PE->w[0] = 0. ;
POS_CUT_FILL ;
break ;
case LINE :
case LINE_2 :
PE = Create_PostElement(Index, LINE, 2, 1) ; /* nodes 1 2 */
PE->NumNodes[0] = GE->NumNodes[0] ;
PE->NumNodes[1] = GE->NumNodes[1] ;
PE->u[0] =-1. ; PE->v[0] = 0. ; PE->w[0] = 0. ;
PE->u[1] = 1. ; PE->v[1] = 0. ; PE->w[1] = 0. ;
POS_CUT_FILL ;
break ;
Type = (HighOrder) ? LINE_2 : LINE;
NbrNodes = (HighOrder) ? NbrNodes_Line_2 : NbrNodes_Line;
PE = Create_PostElement(Index, Type, NbrNodes, 1) ;
for(int i=0; i<NbrNodes; i++){
PE->NumNodes[i] = GE->NumNodes[i] ;
PE->u[i] = Nodes_Line_2[i][0] ;
PE->v[i] = Nodes_Line_2[i][1] ;
PE->w[i] = Nodes_Line_2[i][2] ;
}
POS_CUT_FILL ;
break ;
case LINE :
PE = Create_PostElement(Index, LINE, 2, 1) ; /* nodes 1 2 */
PE->NumNodes[0] = GE->NumNodes[0] ;
PE->NumNodes[1] = GE->NumNodes[1] ;
PE->u[0] =-1. ; PE->v[0] = 0. ; PE->w[0] = 0. ;
PE->u[1] = 1. ; PE->v[1] = 0. ; PE->w[1] = 0. ;
POS_CUT_FILL ;
break ;
case TRIANGLE :
case TRIANGLE_2 :
PE = Create_PostElement(Index, TRIANGLE, 3, 1) ; /* nodes 1 2 3 */
PE->NumNodes[0] = GE->NumNodes[0] ;
PE->NumNodes[1] = GE->NumNodes[1] ;
PE->NumNodes[2] = GE->NumNodes[2] ;
PE->u[0] = 0. ; PE->v[0] = 0. ; PE->w[0] = 0. ;
PE->u[1] = 1. ; PE->v[1] = 0. ; PE->w[1] = 0. ;
PE->u[2] = 0. ; PE->v[2] = 1. ; PE->w[2] = 0. ;
POS_CUT_FILL ;
break ;
Type = (HighOrder) ? TRIANGLE_2 : TRIANGLE;
NbrNodes = (HighOrder) ? NbrNodes_Triangle_2 : NbrNodes_Triangle;
PE = Create_PostElement(Index, Type, NbrNodes, 1) ;
for(int i=0; i<NbrNodes; i++){
PE->NumNodes[i] = GE->NumNodes[i] ;
PE->u[i] = Nodes_Triangle_2[i][0] ;
PE->v[i] = Nodes_Triangle_2[i][1] ;
PE->w[i] = Nodes_Triangle_2[i][2] ;
}
POS_CUT_FILL ;
break ;
case TRIANGLE :
PE = Create_PostElement(Index, TRIANGLE, 3, 1) ; /* nodes 1 2 3 */
PE->NumNodes[0] = GE->NumNodes[0] ;
PE->NumNodes[1] = GE->NumNodes[1] ;
PE->NumNodes[2] = GE->NumNodes[2] ;
PE->u[0] = 0. ; PE->v[0] = 0. ; PE->w[0] = 0. ;
PE->u[1] = 1. ; PE->v[1] = 0. ; PE->w[1] = 0. ;
PE->u[2] = 0. ; PE->v[2] = 1. ; PE->w[2] = 0. ;
POS_CUT_FILL ;
break ;
case QUADRANGLE :
case QUADRANGLE_2 :
case QUADRANGLE_2_8N:
if(DecomposeInSimplex){
PE = Create_PostElement(Index, TRIANGLE, 3, 1); /* nodes 1 2 4 */
PE->NumNodes[0] = GE->NumNodes[0] ;
PE->NumNodes[1] = GE->NumNodes[1] ;
PE->NumNodes[2] = GE->NumNodes[3] ;
PE->u[0] =-1. ; PE->v[0] =-1. ; PE->w[0] = 0. ;
PE->u[1] = 1. ; PE->v[1] =-1. ; PE->w[1] = 0. ;
PE->u[2] =-1. ; PE->v[2] = 1. ; PE->w[2] = 0. ;
POS_CUT_FILL;
if(DecomposeInSimplex){
PE = Create_PostElement(Index, TRIANGLE, 3, 1); /* nodes 1 2 4 */
PE->NumNodes[0] = GE->NumNodes[0] ;
PE->NumNodes[1] = GE->NumNodes[1] ;
PE->NumNodes[2] = GE->NumNodes[3] ;
PE->u[0] =-1. ; PE->v[0] =-1. ; PE->w[0] = 0. ;
PE->u[1] = 1. ; PE->v[1] =-1. ; PE->w[1] = 0. ;
PE->u[2] =-1. ; PE->v[2] = 1. ; PE->w[2] = 0. ;
POS_CUT_FILL;
PE = Create_PostElement(Index, TRIANGLE, 3, 1); /* nodes 2 3 4 */
PE->NumNodes[0] = GE->NumNodes[1] ;
PE->NumNodes[1] = GE->NumNodes[2] ;
PE->NumNodes[2] = GE->NumNodes[3] ;
PE->u[0] = 1. ; PE->v[0] =-1. ; PE->w[0] = 0. ;
PE->u[1] = 1. ; PE->v[1] = 1. ; PE->w[1] = 0. ;
PE->u[2] =-1. ; PE->v[2] = 1. ; PE->w[2] = 0. ;
POS_CUT_FILL;
}
else{
if (!EvaluationPoints_L) {
PE = Create_PostElement(Index, QUADRANGLE, 4, 1) ; /* nodes 1 2 3 4 */
PE->NumNodes[0] = GE->NumNodes[0] ;
PE->NumNodes[1] = GE->NumNodes[1] ;
PE->NumNodes[2] = GE->NumNodes[2] ;
PE->NumNodes[3] = GE->NumNodes[3] ;
PE->u[0] = -1. ; PE->v[0] = -1. ; PE->w[0] = 0. ;
PE->u[1] = 1. ; PE->v[1] = -1. ; PE->w[1] = 0. ;
PE->u[2] = 1. ; PE->v[2] = 1. ; PE->w[2] = 0. ;
PE->u[3] = -1. ; PE->v[3] = 1. ; PE->w[3] = 0. ;
}
else { /* Only for Quadrangles now, to be extended... */
Nbr_EP = List_Nbr(EvaluationPoints_L)/3;
PE = Create_PostElement(Index, QUADRANGLE, Nbr_EP, 1) ;
for (i_EP=0 ; i_EP<Nbr_EP ; i_EP++) {
List_Read(EvaluationPoints_L, i_EP*3+0, &PE->u[i_EP]);
List_Read(EvaluationPoints_L, i_EP*3+1, &PE->v[i_EP]);
List_Read(EvaluationPoints_L, i_EP*3+2, &PE->w[i_EP]);
}
}
POS_CUT_FILL ;
}
break ;
PE = Create_PostElement(Index, TRIANGLE, 3, 1); /* nodes 2 3 4 */
PE->NumNodes[0] = GE->NumNodes[1] ;
PE->NumNodes[1] = GE->NumNodes[2] ;
PE->NumNodes[2] = GE->NumNodes[3] ;
PE->u[0] = 1. ; PE->v[0] =-1. ; PE->w[0] = 0. ;
PE->u[1] = 1. ; PE->v[1] = 1. ; PE->w[1] = 0. ;
PE->u[2] =-1. ; PE->v[2] = 1. ; PE->w[2] = 0. ;
POS_CUT_FILL;
}
else{
if (!EvaluationPoints_L) {
PE = Create_PostElement(Index, QUADRANGLE, 4, 1) ; /* nodes 1 2 3 4 */
PE->NumNodes[0] = GE->NumNodes[0] ;
PE->NumNodes[1] = GE->NumNodes[1] ;
PE->NumNodes[2] = GE->NumNodes[2] ;
PE->NumNodes[3] = GE->NumNodes[3] ;
PE->u[0] = -1. ; PE->v[0] = -1. ; PE->w[0] = 0. ;
PE->u[1] = 1. ; PE->v[1] = -1. ; PE->w[1] = 0. ;
PE->u[2] = 1. ; PE->v[2] = 1. ; PE->w[2] = 0. ;
PE->u[3] = -1. ; PE->v[3] = 1. ; PE->w[3] = 0. ;
}
else { /* Only for Quadrangles now, to be extended... */
Nbr_EP = List_Nbr(EvaluationPoints_L)/3;
PE = Create_PostElement(Index, QUADRANGLE, Nbr_EP, 1) ;
for (i_EP=0 ; i_EP<Nbr_EP ; i_EP++) {
List_Read(EvaluationPoints_L, i_EP*3+0, &PE->u[i_EP]);
List_Read(EvaluationPoints_L, i_EP*3+1, &PE->v[i_EP]);
List_Read(EvaluationPoints_L, i_EP*3+2, &PE->w[i_EP]);
}
}
POS_CUT_FILL ;
}
break ;
case TETRAHEDRON_2 :
Type = (HighOrder) ? TETRAHEDRON_2 : TETRAHEDRON;
NbrNodes = (HighOrder) ? NbrNodes_Tetrahedron_2 : NbrNodes_Tetrahedron;
PE = Create_PostElement(Index, Type, NbrNodes, 1) ;
for(int i=0; i<NbrNodes; i++){
PE->NumNodes[i] = GE->NumNodes[i] ;
PE->u[i] = Nodes_Tetrahedron_2[i][0] ;
PE->v[i] = Nodes_Tetrahedron_2[i][1] ;
PE->w[i] = Nodes_Tetrahedron_2[i][2] ;
}
POS_CUT_FILL ;
break ;
case TETRAHEDRON :
case TETRAHEDRON_2 :
PE = Create_PostElement(Index, TETRAHEDRON, 4, 1) ; /* nodes 1 2 3 4 */
PE->NumNodes[0] = GE->NumNodes[0] ;
PE->NumNodes[1] = GE->NumNodes[1] ;
PE->NumNodes[2] = GE->NumNodes[2] ;
PE->NumNodes[3] = GE->NumNodes[3] ;
PE->u[0] = 0. ; PE->v[0] = 0. ; PE->w[0] = 0. ;
PE->u[1] = 1. ; PE->v[1] = 0. ; PE->w[1] = 0. ;
PE->u[2] = 0. ; PE->v[2] = 1. ; PE->w[2] = 0. ;
PE->u[3] = 0. ; PE->v[3] = 0. ; PE->w[3] = 1. ;
POS_CUT_FILL;
break ;
PE = Create_PostElement(Index, TETRAHEDRON, 4, 1) ; /* nodes 1 2 3 4 */
PE->NumNodes[0] = GE->NumNodes[0] ;
PE->NumNodes[1] = GE->NumNodes[1] ;
PE->NumNodes[2] = GE->NumNodes[2] ;
PE->NumNodes[3] = GE->NumNodes[3] ;
PE->u[0] = 0. ; PE->v[0] = 0. ; PE->w[0] = 0. ;
PE->u[1] = 1. ; PE->v[1] = 0. ; PE->w[1] = 0. ;
PE->u[2] = 0. ; PE->v[2] = 1. ; PE->w[2] = 0. ;
PE->u[3] = 0. ; PE->v[3] = 0. ; PE->w[3] = 1. ;
POS_CUT_FILL;
break ;
case HEXAHEDRON :
if(DecomposeInSimplex){
......
......@@ -27,7 +27,7 @@ struct PostElement * PartialCopy_PostElement(struct PostElement *PostElement);
void Fill_PostElement(struct Geo_Element *GE, List_T *PostElement_L,
int Index, int Depth, int Skin, List_T * EvaluationPoints_L,
int DecomposeInSimplex) ;
int DecomposeInSimplex, int HighOrder) ;
void Cut_PostElement(struct PostElement * PE, struct Geo_Element * GE,
List_T * PE_L, int Index, int Depth, int Skin,
int DecomposeInSimplex) ;
......
......@@ -31,7 +31,7 @@
extern struct Problem Problem_S ;
extern struct CurrentData Current ;
extern int Flag_BIN ;
extern int Flag_BIN, Flag_GMSH_VERSION;
extern FILE *PostStream ;
......@@ -338,7 +338,7 @@ void Pos_PrintOnElementsOf(struct PostQuantity *NCPQ_P,
Fill_PostElement(Element.GeoElement, PostElement_L, iGeo,
Depth, PSO_P->Skin,
PSO_P->EvaluationPoints,
DecomposeInSimplex) ;
DecomposeInSimplex, 0) ;
}
Message::ProgressMeter(iGeo + 1, NbrGeo, "Post-processing (Generate)");
if(Message::GetErrorCount()) break;
......@@ -406,10 +406,11 @@ void Pos_PrintOnElementsOf(struct PostQuantity *NCPQ_P,
(Group_P->Type == ELEMENTLIST &&
Check_IsEntityInExtendedGroup(Group_P, Element.GeoElement->Num, 0))
) {
int HighOrder = (PSO_P->Format == FORMAT_GMSH && (PSO_P->StoreInField >= 0 || PSO_P->StoreInMeshBasedField >= 0 || Flag_GMSH_VERSION == 2 || Flag_BIN)) ? 1 : 0;
Fill_PostElement(Element.GeoElement, PostElement_L, iGeo,
PSO_P->Depth, PSO_P->Skin,
PSO_P->EvaluationPoints,
DecomposeInSimplex) ;
DecomposeInSimplex, HighOrder) ;
}
}
......@@ -531,11 +532,11 @@ void Pos_PrintOnElementsOf(struct PostQuantity *NCPQ_P,
if (PSO_P->StoreMaxInRegister >= 0)
Cal_StoreInRegister(&ValueMax.Val, PSO_P->StoreMaxInRegister) ;
if (PSO_P->StoreMaxXinRegister >= 0)
Cal_StoreInRegister(&ValueMax.Val, PSO_P->StoreMaxXinRegister) ;
Cal_StoreInRegister(&ValueMax.ValX, PSO_P->StoreMaxXinRegister) ;
if (PSO_P->StoreMaxYinRegister >= 0)
Cal_StoreInRegister(&ValueMax.Val, PSO_P->StoreMaxYinRegister) ;
Cal_StoreInRegister(&ValueMax.ValY, PSO_P->StoreMaxYinRegister) ;
if (PSO_P->StoreMaxZinRegister >= 0)
Cal_StoreInRegister(&ValueMax.Val, PSO_P->StoreMaxZinRegister) ;
Cal_StoreInRegister(&ValueMax.ValZ, PSO_P->StoreMaxZinRegister) ;
}
/* Perform Smoothing */
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment