[25834] | 1 | Index: ../trunk-jpl/src/c/analyses/EnthalpyAnalysis.cpp
|
---|
| 2 | ===================================================================
|
---|
| 3 | --- ../trunk-jpl/src/c/analyses/EnthalpyAnalysis.cpp (revision 24917)
|
---|
| 4 | +++ ../trunk-jpl/src/c/analyses/EnthalpyAnalysis.cpp (revision 24918)
|
---|
| 5 | @@ -590,7 +590,6 @@
|
---|
| 6 | ElementMatrix* Ke = element->NewElementMatrix();
|
---|
| 7 | IssmDouble* basis = xNew<IssmDouble>(numnodes);
|
---|
| 8 | IssmDouble* dbasis = xNew<IssmDouble>(3*numnodes);
|
---|
| 9 | - IssmDouble* Bprime = xNew<IssmDouble>(3*numnodes);
|
---|
| 10 | IssmDouble K[3][3];
|
---|
| 11 |
|
---|
| 12 | /*Retrieve all inputs and parameters*/
|
---|
| 13 | @@ -666,11 +665,15 @@
|
---|
| 14 | K[2][0]=h/(2.*vel)*fabs(vz*vx); K[2][1]=h/(2.*vel)*fabs(vz*vy); K[2][2]=h/(2.*vel)*fabs(vz*vz);
|
---|
| 15 | for(int i=0;i<3;i++) for(int j=0;j<3;j++) K[i][j] = D_scalar*K[i][j];
|
---|
| 16 |
|
---|
| 17 | - GetBAdvecprime(Bprime,element,xyz_list,gauss);
|
---|
| 18 | - TripleMultiply(Bprime,3,numnodes,1,
|
---|
| 19 | - &K[0][0],3,3,0,
|
---|
| 20 | - Bprime,3,numnodes,0,
|
---|
| 21 | - &Ke->values[0],1);
|
---|
| 22 | + for(int i=0;i<numnodes;i++){
|
---|
| 23 | + for(int j=0;j<numnodes;j++){
|
---|
| 24 | + Ke->values[i*numnodes+j] += (
|
---|
| 25 | + dbasis[0*numnodes+i] *(K[0][0]*dbasis[0*numnodes+j] + K[0][1]*dbasis[1*numnodes+j]+ K[0][2]*dbasis[2*numnodes+j]) +
|
---|
| 26 | + dbasis[1*numnodes+i] *(K[1][0]*dbasis[0*numnodes+j] + K[1][1]*dbasis[1*numnodes+j]+ K[1][2]*dbasis[2*numnodes+j]) +
|
---|
| 27 | + dbasis[2*numnodes+i] *(K[2][0]*dbasis[0*numnodes+j] + K[2][1]*dbasis[1*numnodes+j]+ K[2][2]*dbasis[2*numnodes+j])
|
---|
| 28 | + );
|
---|
| 29 | + }
|
---|
| 30 | + }
|
---|
| 31 | }
|
---|
| 32 | /*SUPG*/
|
---|
| 33 | else if(stabilization==2){
|
---|
| 34 | @@ -714,7 +717,6 @@
|
---|
| 35 | xDelete<IssmDouble>(xyz_list);
|
---|
| 36 | xDelete<IssmDouble>(basis);
|
---|
| 37 | xDelete<IssmDouble>(dbasis);
|
---|
| 38 | - xDelete<IssmDouble>(Bprime);
|
---|
| 39 | delete gauss;
|
---|
| 40 | return Ke;
|
---|
| 41 | }/*}}}*/
|
---|
| 42 | @@ -757,11 +759,7 @@
|
---|
| 43 |
|
---|
| 44 | D=gauss->weight*Jdet*rho_water*mixed_layer_capacity*thermal_exchange_vel/(heatcapacity*rho_ice);
|
---|
| 45 | if(reCast<bool,IssmDouble>(dt)) D=dt*D;
|
---|
| 46 | - TripleMultiply(basis,numnodes,1,0,
|
---|
| 47 | - &D,1,1,0,
|
---|
| 48 | - basis,1,numnodes,0,
|
---|
| 49 | - &Ke->values[0],1);
|
---|
| 50 | -
|
---|
| 51 | + for(int i=0;i<numnodes;i++) for(int j=0;j<numnodes;j++) Ke->values[i*numnodes+j] += D*basis[i]*basis[j];
|
---|
| 52 | }
|
---|
| 53 |
|
---|
| 54 | /*Clean up and return*/
|
---|