Changeset 26132
- Timestamp:
- 03/23/21 11:58:46 (4 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk-jpl/src/c/analyses/StressbalanceAnalysis.cpp
r26090 r26132 2737 2737 2738 2738 /*Intermediaries*/ 2739 IssmDouble viscosity,Jdet ;2739 IssmDouble viscosity,Jdet,thickness,n; 2740 2740 IssmDouble *xyz_list = NULL; 2741 2741 … … 2748 2748 /*Initialize Element matrix and vectors*/ 2749 2749 ElementMatrix* Ke = basalelement->NewElementMatrix(MLHOApproximationEnum); 2750 IssmDouble* dbasis = xNew<IssmDouble>(3*numnodes); 2750 IssmDouble* dbasis = xNew<IssmDouble>(2*numnodes); // like SSA 2751 IssmDouble* basis = xNew<IssmDouble>(numnodes); // like SSA 2751 2752 2752 2753 /*Retrieve all inputs and parameters*/ 2753 2754 element->GetVerticesCoordinates(&xyz_list); 2754 Input* surface_input = element->GetInput(SurfaceEnum); _assert_(surface_input); 2755 Input* vx_input = element->GetInput(VxEnum); _assert_(vx_input); 2756 Input* vy_input = element->GetInput(VyEnum); _assert_(vy_input); 2755 Input* thickness_input= element->GetInput(ThicknessEnum); _assert_(thickness_input); 2756 Input* surface_input = element->GetInput(SurfaceEnum); _assert_(surface_input); 2757 Input* vx_input = element->GetInput(VxEnum); _assert_(vx_input); 2758 Input* vy_input = element->GetInput(VyEnum); _assert_(vy_input); 2759 Input* n_input = element->GetInput(MaterialsRheologyNEnum); _assert_(n_input); 2757 2760 2758 2761 /* Start looping on the number of gaussian points: */ … … 2764 2767 element->JacobianDeterminant(&Jdet,xyz_list,gauss); 2765 2768 basalelement->NodalFunctionsDerivatives(dbasis,xyz_list,gauss_base); 2766 2769 element->NodalFunctions(basis, gauss); 2770 2771 thickness_input->GetInputValue(&thickness, gauss); 2772 n_input->GetInputValue(&n,gauss); 2767 2773 element->material->ViscosityL1L2(&viscosity,xyz_list,gauss,vx_input,vy_input,surface_input); 2768 2769 for(int i=0;i<numnodes;i++){ 2774 2775 for(int i=0;i<numnodes;i++){//shape functions on tria element 2770 2776 for(int j=0;j<numnodes;j++){ 2771 Ke->values[ 2*i*2*numnodes+2*j] += gauss->weight*Jdet*viscosity*(2777 Ke->values[(i+0)*2*2*numnodes+j+0] += gauss->weight*Jdet*viscosity*thickness*( 2772 2778 4.*dbasis[0*numnodes+j]*dbasis[0*numnodes+i] + dbasis[1*numnodes+j]*dbasis[1*numnodes+i] 2773 ); 2774 Ke->values[2*i*2*numnodes+2*j+1] += gauss->weight*Jdet*viscosity*( 2779 );//K11 2780 Ke->values[(i+0)*2*2*numnodes+j+3] += gauss->weight*Jdet*viscosity*thickness*( 2781 4.*dbasis[0*numnodes+j]*dbasis[0*numnodes+i] + dbasis[1*numnodes+j]*dbasis[1*numnodes+i] 2782 )*(n+1)/(n+2);//K12 2783 Ke->values[(i+0)*2*2*numnodes+j+6] += gauss->weight*Jdet*viscosity*thickness*( 2775 2784 2.*dbasis[1*numnodes+j]*dbasis[0*numnodes+i] + dbasis[0*numnodes+j]*dbasis[1*numnodes+i] 2776 ); 2777 Ke->values[(2*i+1)*2*numnodes+2*j] += gauss->weight*Jdet*viscosity*( 2785 );//K13 2786 Ke->values[(i+0)*2*2*numnodes+j+9] += gauss->weight*Jdet*viscosity*thickness*( 2787 2.*dbasis[1*numnodes+j]*dbasis[0*numnodes+i] + dbasis[0*numnodes+j]*dbasis[1*numnodes+i] 2788 )*(n+1)/(n+2);//K14 2789 2790 Ke->values[(i+3)*2*2*numnodes+j+0] += gauss->weight*Jdet*viscosity*thickness*( 2791 4.*dbasis[0*numnodes+j]*dbasis[0*numnodes+i] + dbasis[1*numnodes+j]*dbasis[1*numnodes+i] 2792 )*(n+1)/(n+2);//K21 2793 Ke->values[(i+3)*2*2*numnodes+j+3] += gauss->weight*Jdet*viscosity*thickness*( 2794 4.*dbasis[0*numnodes+j]*dbasis[0*numnodes+i] + dbasis[1*numnodes+j]*dbasis[1*numnodes+i] 2795 )*2*pow(n+1,2)/((2*n+3)*(n+2)) 2796 + 2797 gauss->weight*Jdet*viscosity*basis[j]*basis[i]*pow(n+1,2)/(thickness*(2*n+1)) 2798 ;//K22 2799 Ke->values[(i+3)*2*2*numnodes+j+6] += gauss->weight*Jdet*viscosity*thickness*( 2800 2.*dbasis[1*numnodes+j]*dbasis[0*numnodes+i] + dbasis[0*numnodes+j]*dbasis[1*numnodes+i] 2801 )*(n+1)/(n+2);//K23 2802 Ke->values[(i+3)*2*2*numnodes+j+9] += gauss->weight*Jdet*viscosity*thickness*( 2803 2.*dbasis[1*numnodes+j]*dbasis[0*numnodes+i] + dbasis[0*numnodes+j]*dbasis[1*numnodes+i] 2804 )*2*pow(n+1,2)/((2*n+3)*(n+2));//K24 2805 2806 Ke->values[(i+6)*2*2*numnodes+j+0] += gauss->weight*Jdet*viscosity*thickness*( 2778 2807 2.*dbasis[0*numnodes+j]*dbasis[1*numnodes+i] + dbasis[1*numnodes+j]*dbasis[0*numnodes+i] 2779 ); 2780 Ke->values[(2*i+1)*2*numnodes+2*j+1] += gauss->weight*Jdet*viscosity*( 2781 dbasis[0*numnodes+j]*dbasis[0*numnodes+i] + 4.*dbasis[1*numnodes+j]*dbasis[1*numnodes+i] 2782 ); 2808 );//K31 2809 Ke->values[(i+6)*2*2*numnodes+j+3] += gauss->weight*Jdet*viscosity*thickness*( 2810 2.*dbasis[0*numnodes+j]*dbasis[1*numnodes+i] + dbasis[1*numnodes+j]*dbasis[0*numnodes+i] 2811 )*(n+1)/(n+2);//K32 2812 Ke->values[(i+6)*2*2*numnodes+j+6] += gauss->weight*Jdet*viscosity*thickness*( 2813 4.*dbasis[1*numnodes+j]*dbasis[1*numnodes+i] + dbasis[0*numnodes+j]*dbasis[0*numnodes+i] 2814 );//K33 2815 Ke->values[(i+6)*2*2*numnodes+j+9] += gauss->weight*Jdet*viscosity*thickness*( 2816 4.*dbasis[1*numnodes+j]*dbasis[1*numnodes+i] + dbasis[0*numnodes+j]*dbasis[0*numnodes+i] 2817 )*(n+1)/(n+2);//K34 2818 2819 Ke->values[(i+9)*2*2*numnodes+j+0] += gauss->weight*Jdet*viscosity*thickness*( 2820 2.*dbasis[0*numnodes+j]*dbasis[1*numnodes+i] + dbasis[1*numnodes+j]*dbasis[0*numnodes+i] 2821 )*(n+1)/(n+2);//K41 2822 Ke->values[(i+9)*2*2*numnodes+j+3] += gauss->weight*Jdet*viscosity*thickness*( 2823 2.*dbasis[0*numnodes+j]*dbasis[1*numnodes+i] + dbasis[1*numnodes+j]*dbasis[0*numnodes+i] 2824 )*2*pow(n+1,2)/((2*n+3)*(n+2));//K42 2825 Ke->values[(i+9)*2*2*numnodes+j+6] += gauss->weight*Jdet*viscosity*thickness*( 2826 4.*dbasis[1*numnodes+j]*dbasis[1*numnodes+i] + dbasis[0*numnodes+j]*dbasis[0*numnodes+i] 2827 )*(n+1)/(n+2);//K43 2828 Ke->values[(i+9)*2*2*numnodes+j+9] += gauss->weight*Jdet*viscosity*thickness*( 2829 4.*dbasis[1*numnodes+j]*dbasis[1*numnodes+i] + dbasis[0*numnodes+j]*dbasis[0*numnodes+i] 2830 )*2*pow(n+1,2)/((2*n+3)*(n+2)) 2831 + 2832 gauss->weight*Jdet*viscosity*basis[j]*basis[i]*pow(n+1,2)/(thickness*(2*n+1)) 2833 ;//K44 2783 2834 } 2784 2835 } … … 2794 2845 xDelete<IssmDouble>(xyz_list); 2795 2846 xDelete<IssmDouble>(dbasis); 2847 xDelete<IssmDouble>(basis); 2796 2848 return Ke; 2797 2849 }/*}}}*/
Note:
See TracChangeset
for help on using the changeset viewer.