Changeset 25611
- Timestamp:
- 09/29/20 11:26:14 (5 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk-jpl/src/c/analyses/StressbalanceAnalysis.cpp
r25610 r25611 2728 2728 /*Fetch number of nodes and dof for this finite element*/ 2729 2729 int numnodes = basalelement->GetNumberOfNodes(); 2730 int numdof = numnodes*2;2731 2730 2732 2731 /*Initialize Element matrix and vectors*/ 2733 2732 ElementMatrix* Ke = basalelement->NewElementMatrix(MLHOApproximationEnum); 2734 IssmDouble* B = xNew<IssmDouble>(3*numdof); 2735 IssmDouble* Bprime = xNew<IssmDouble>(3*numdof); 2736 IssmDouble* D = xNewZeroInit<IssmDouble>(3*3); 2733 IssmDouble* dbasis = xNew<IssmDouble>(3*numnodes); 2737 2734 2738 2735 /*Retrieve all inputs and parameters*/ … … 2749 2746 2750 2747 element->JacobianDeterminant(&Jdet,xyz_list,gauss); 2751 this->GetBSSA(B,basalelement,2,xyz_list,gauss_base); 2752 this->GetBSSAprime(Bprime,basalelement,2,xyz_list,gauss_base); 2748 basalelement->NodalFunctionsDerivatives(dbasis,xyz_list,gauss_base); 2753 2749 2754 2750 element->material->ViscosityL1L2(&viscosity,xyz_list,gauss,vx_input,vy_input,surface_input); 2755 2751 2756 for(int i=0;i<3;i++) D[i*3+i]=2*viscosity*gauss->weight*Jdet; 2757 2758 TripleMultiply(B,3,numdof,1, 2759 D,3,3,0, 2760 Bprime,3,numdof,0, 2761 &Ke->values[0],1); 2752 for(int i=0;i<numnodes;i++){ 2753 for(int j=0;j<numnodes;j++){ 2754 Ke->values[2*i*2*numnodes+2*j] += gauss->weight*Jdet*viscosity*( 2755 4.*dbasis[0*numnodes+j]*dbasis[0*numnodes+i] + dbasis[1*numnodes+j]*dbasis[1*numnodes+i] 2756 ); 2757 Ke->values[2*i*2*numnodes+2*j+1] += gauss->weight*Jdet*viscosity*( 2758 2.*dbasis[1*numnodes+j]*dbasis[0*numnodes+i] + dbasis[0*numnodes+j]*dbasis[1*numnodes+i] 2759 ); 2760 Ke->values[(2*i+1)*2*numnodes+2*j] += gauss->weight*Jdet*viscosity*( 2761 2.*dbasis[0*numnodes+j]*dbasis[1*numnodes+i] + dbasis[1*numnodes+j]*dbasis[0*numnodes+i] 2762 ); 2763 Ke->values[(2*i+1)*2*numnodes+2*j+1] += gauss->weight*Jdet*viscosity*( 2764 dbasis[0*numnodes+j]*dbasis[0*numnodes+i] + 4.*dbasis[1*numnodes+j]*dbasis[1*numnodes+i] 2765 ); 2766 } 2767 } 2762 2768 } 2763 2769 … … 2770 2776 basalelement->DeleteMaterials(); delete basalelement; 2771 2777 xDelete<IssmDouble>(xyz_list); 2772 xDelete<IssmDouble>(D); 2773 xDelete<IssmDouble>(Bprime); 2774 xDelete<IssmDouble>(B); 2778 xDelete<IssmDouble>(dbasis); 2775 2779 return Ke; 2776 2780 }/*}}}*/
Note:
See TracChangeset
for help on using the changeset viewer.