From 016434a3454e22ca8232fc975597968f67d4b983 Mon Sep 17 00:00:00 2001 From: ageay Date: Mon, 21 Mar 2011 10:29:17 +0000 Subject: [PATCH] TET10 formulae. --- src/INTERP_KERNEL/InterpolationUtils.hxx | 35 ++++++++++++++++-------- 1 file changed, 24 insertions(+), 11 deletions(-) diff --git a/src/INTERP_KERNEL/InterpolationUtils.hxx b/src/INTERP_KERNEL/InterpolationUtils.hxx index c0c8bf9c2..0266cd3eb 100644 --- a/src/INTERP_KERNEL/InterpolationUtils.hxx +++ b/src/INTERP_KERNEL/InterpolationUtils.hxx @@ -241,8 +241,21 @@ namespace INTERP_KERNEL /*! * Given xsi,eta,z in refCoo (length==3) return 10 coeffs in weightedPos. */ - inline void computeWeightedCoeffsInTetra10FromRefBase(const double *refCoo, double *bc) + inline void computeWeightedCoeffsInTetra10FromRefBase(const double *refCoo, double *weightedPos) { + //http://www.cadfamily.com/download/CAE/ABAQUS/The%20Finite%20Element%20Method%20-%20A%20practical%20course%20abaqus.pdf page 217 + //L1=1-refCoo[0]-refCoo[1]-refCoo[2] + //L2=refCoo[0] L3=refCoo[1] L4=refCoo[2] + weightedPos[0]=(-2.*(refCoo[0]+refCoo[1]+refCoo[2])+1)*(1-refCoo[0]-refCoo[1]-refCoo[2]);//(2*L1-1)*L1 + weightedPos[1]=(2.*refCoo[0]-1.)*refCoo[0];//(2*L2-1)*L2 + weightedPos[2]=(2.*refCoo[1]-1.)*refCoo[1];//(2*L3-1)*L3 + weightedPos[3]=(2.*refCoo[2]-1.)*refCoo[2];//(2*L4-1)*L4 + weightedPos[4]=4.*(1-refCoo[0]-refCoo[1]-refCoo[2])*refCoo[0];//4*L1*L2 + weightedPos[5]=4.*refCoo[0]*refCoo[1];//4*L2*L3 + weightedPos[6]=4.*(1-refCoo[0]-refCoo[1]-refCoo[2])*refCoo[1];//4*L1*L3 + weightedPos[7]=4.*(1-refCoo[0]-refCoo[1]-refCoo[2])*refCoo[2];//4*L1*L4 + weightedPos[8]=4.*refCoo[0]*refCoo[2];//4*L2*L4 + weightedPos[9]=4.*refCoo[1]*refCoo[2];//4*L3*L4 } /*! @@ -477,16 +490,16 @@ namespace INTERP_KERNEL } case 10: {//TETRA10 - double matrix2[130]={1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., - 1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1., 0., - 1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1., - 1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.5, 0., - 1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.5, 0.5, - 1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,0.5, - 1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1., - 1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.5, 0., - 1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.5, 0.5, - 1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,0.5}; + double matrix2[130]={1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1., 0., 0., + 1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1., 0., + 1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1., + 1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.5, 0., 0., + 1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.5, 0.5, 0., + 1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,0.5, 0., + 1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.5, + 1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.5, 0., 0.5, + 1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.5, 0.5}; for(int i=0;i<10;i++) { matrix2[13*i+1]=n[i][0]; -- 2.39.2