Changeset 24918


Ignore:
Timestamp:
05/29/20 13:06:21 (5 years ago)
Author:
Mathieu Morlighem
Message:

CHG: getting rid of triplemultiply

File:
1 edited

Legend:

Unmodified
Added
Removed
  • issm/trunk-jpl/src/c/analyses/EnthalpyAnalysis.cpp

    r24861 r24918  
    591591        IssmDouble*    basis    = xNew<IssmDouble>(numnodes);
    592592        IssmDouble*    dbasis   = xNew<IssmDouble>(3*numnodes);
    593         IssmDouble*    Bprime   = xNew<IssmDouble>(3*numnodes);
    594593        IssmDouble     K[3][3];
    595594
     
    667666                        for(int i=0;i<3;i++) for(int j=0;j<3;j++) K[i][j] = D_scalar*K[i][j];
    668667
    669                         GetBAdvecprime(Bprime,element,xyz_list,gauss);
    670                         TripleMultiply(Bprime,3,numnodes,1,
    671                                                 &K[0][0],3,3,0,
    672                                                 Bprime,3,numnodes,0,
    673                                                 &Ke->values[0],1);
     668                        for(int i=0;i<numnodes;i++){
     669                                for(int j=0;j<numnodes;j++){
     670                                        Ke->values[i*numnodes+j] += (
     671                                                                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]) +
     672                                                                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]) +
     673                                                                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])
     674                                                                );
     675                                }
     676                        }
    674677                }
    675678                /*SUPG*/
     
    715718        xDelete<IssmDouble>(basis);
    716719        xDelete<IssmDouble>(dbasis);
    717         xDelete<IssmDouble>(Bprime);
    718720        delete gauss;
    719721        return Ke;
     
    758760                D=gauss->weight*Jdet*rho_water*mixed_layer_capacity*thermal_exchange_vel/(heatcapacity*rho_ice);
    759761                if(reCast<bool,IssmDouble>(dt)) D=dt*D;
    760                 TripleMultiply(basis,numnodes,1,0,
    761                                         &D,1,1,0,
    762                                         basis,1,numnodes,0,
    763                                         &Ke->values[0],1);
    764 
     762                for(int i=0;i<numnodes;i++) for(int j=0;j<numnodes;j++) Ke->values[i*numnodes+j] += D*basis[i]*basis[j];
    765763        }
    766764
Note: See TracChangeset for help on using the changeset viewer.