source:
issm/oecreview/Archive/15392-16133/ISSM-15474-15475.diff
Last change on this file was 16134, checked in by , 12 years ago | |
---|---|
File size: 4.7 KB |
-
../trunk-jpl/src/c/classes/Elements/Penta.cpp
6917 6917 GaussPenta *gauss=NULL; 6918 6918 6919 6919 /*Stabilization*/ 6920 bool stabilization = false;6920 bool stabilization = true; 6921 6921 IssmDouble dbasis[3][6]; 6922 6922 IssmDouble dmu[3]; 6923 6923 IssmDouble mu; … … 6943 6943 rigidity=material->GetB(); 6944 6944 diameter=MinEdgeLength(xyz_list); 6945 6945 6946 if(stabilization){ 6947 gauss=new GaussPenta(); 6948 for(int iv=0;iv<6;iv++){ 6949 gauss->GaussVertex(iv); 6950 GetNodalFunctionsP1Derivatives(&dbasis[0][0],&xyz_list[0][0],gauss); 6951 for(i=0;i<6;i++){ 6952 for(j=0;j<3;j++){ 6953 dnodalbasis[i][iv][j] = dbasis[j][i]; 6954 } 6955 } 6956 } 6957 delete gauss; 6958 } 6959 6946 6960 /* Start looping on the number of gaussian points: */ 6947 6961 gauss=new GaussPenta(3,2); 6948 6962 for(int ig=gauss->begin();ig<gauss->end();ig++){ … … 6971 6985 if(stabilization){ 6972 6986 GetNodalFunctionsP1Derivatives(&dbasis[0][0],&xyz_list[0][0],gauss); 6973 6987 dmu[0]=0.; dmu[1]=0.; dmu[2]=0.; 6974 mu = viscosity; 6975 for(i=0;i<6;i++){ 6976 for(p=0;p<6;p++){ 6977 for(j=0;j<3;j++){ 6978 dnodalbasis[i][p][j] = dbasis[j][i]; 6979 } 6980 } 6981 } 6988 mu = 2.*viscosity; 6982 6989 for(p=0;p<6;p++) for(i=0;i<4;i++) for(j=0;j<4;j++){ 6983 6990 SU[p][i][j]=0.; 6984 6991 SW[p][i][j]=0.; … … 7017 7024 } 7018 7025 7019 7026 } 7020 7021 7022 //viscosity = 1000*rigidity;7023 //D_scalar_stab=-gauss->weight*Jdet*1./3.*pow(diameter,2)/(8.*2.*viscosity)*stokesreconditioning;7024 //if(id==24){7025 //printf("tau %g\n",1./3.*pow(diameter,2)/(8.*2.*viscosity));7026 //}7027 //GetBConduct(&B_stab[0][0],&xyz_list[0][0],gauss);7028 7029 //D_stab[0][0]=D_scalar_stab; D_stab[0][1]=0; D_stab[0][2]=0;7030 //D_stab[1][0]=0; D_stab[1][1]=D_scalar_stab; D_stab[1][2]=0;7031 //D_stab[2][0]=0; D_stab[2][1]=0; D_stab[2][2]=D_scalar_stab;7032 7033 //TripleMultiply(&B_stab[0][0],3,6,1,7034 // &D_stab[0][0],3,3,0,7035 // &B_stab[0][0],3,6,0,7036 // &Ke_temp_stab[0][0],0);7037 7038 //for(i=0;i<NUMVERTICES;i++) for(j=0;j<NUMVERTICES;j++) Ke->values[numdof*(i*4+3)+j*4+3]+=Ke_temp_stab[i][j];7039 7040 7027 } 7041 7028 7042 // if(id==24){7043 // _error_("");7044 // }7045 7046 //Ke->Echo();7047 //_error_("stop");7048 7029 /*Transform Coordinate System*/ 7049 7030 TransformStiffnessMatrixCoord(Ke,nodes,NUMVERTICES,XYZPEnum); 7050 7031 if(id==24){ … … 7943 7924 /*Find minimal length*/ 7944 7925 diameter=MinEdgeLength(xyz_list); 7945 7926 7927 if(stabilization){ 7928 gauss=new GaussPenta(); 7929 for(int iv=0;iv<6;iv++){ 7930 gauss->GaussVertex(iv); 7931 GetNodalFunctionsP1Derivatives(&dbasis[0][0],&xyz_list[0][0],gauss); 7932 for(i=0;i<6;i++){ 7933 for(j=0;j<3;j++){ 7934 dnodalbasis[i][iv][j] = dbasis[j][i]; 7935 } 7936 } 7937 } 7938 delete gauss; 7939 } 7940 7946 7941 /* Start looping on the number of gaussian points: */ 7947 gauss=new GaussPenta( 2,3);7942 gauss=new GaussPenta(3,2); 7948 7943 for(int ig=gauss->begin();ig<gauss->end();ig++){ 7949 7944 7950 7945 gauss->GaussPoint(ig); … … 7969 7964 if(stabilization){ 7970 7965 GetNodalFunctionsP1Derivatives(&dbasis[0][0],&xyz_list[0][0],gauss); 7971 7966 dmu[0]=0.; dmu[1]=0.; dmu[2]=0.; 7972 mu = viscosity; 7973 for(i=0;i<6;i++){ 7974 for(p=0;p<6;p++){ 7975 for(j=0;j<3;j++){ 7976 dnodalbasis[i][p][j] = dbasis[j][i]; 7977 } 7978 } 7979 } 7980 //dNodalBasisdx(1:n,p,:) = dBasisdx(1:n,:) 7967 mu = 2.*viscosity; 7981 7968 for(p=0;p<6;p++) for(i=0;i<4;i++) for(j=0;j<4;j++){ 7982 7969 SW[p][i][j]=0.; 7983 7970 } … … 7988 7975 SW[p][i][i] += -dmu[j]*dbasis[j][p]; 7989 7976 SW[p][j][i] += -dmu[j]*dbasis[i][p]; 7990 7977 for(ii=0;ii<6;ii++){ 7991 //SW[p][i][i] += -mu*dnodalbasis[p][ii][j]*dbasis[j][ii]; 7992 //SW[p][j][i] += -mu*dnodalbasis[p][ii][i]*dbasis[j][ii]; 7993 SW[p][i][i] += -mu*dnodalbasis[p][ii][j]; 7994 SW[p][j][i] += -mu*dnodalbasis[p][ii][i]; 7978 SW[p][i][i] += -mu*dnodalbasis[p][ii][j]*dbasis[j][ii]; 7979 SW[p][j][i] += -mu*dnodalbasis[p][ii][i]*dbasis[j][ii]; 7995 7980 } 7996 7981 } 7997 7982 } … … 8006 7991 } 8007 7992 8008 7993 } 8009 ///*Add stabilization*/8010 //D_scalar_stab=-gauss->weight*Jdet*1./3.*pow(diameter,2)/(8.*2.*viscosity)*stokesreconditioning;8011 //GetNodalFunctionsP1Derivatives(&dh1dh6[0][0],&xyz_list[0][0],gauss);8012 8013 //for(i=0;i<NUMVERTICES;i++){8014 // Pe_gaussian[i*NDOF4+3]+=-rho_ice*gravity*D_scalar_stab*dh1dh6[2][i];8015 // Pe_gaussian[i*NDOF4+3]+=forcex*D_scalar_stab*dh1dh6[0][i];8016 // Pe_gaussian[i*NDOF4+3]+=forcey*D_scalar_stab*dh1dh6[1][i];8017 // Pe_gaussian[i*NDOF4+3]+=forcez*D_scalar_stab*dh1dh6[2][i];8018 //}8019 7994 } 8020 7995 8021 7996 /*Transform coordinate system*/ 8022 7997 TransformLoadVectorCoord(pe,nodes,NUMVERTICES,XYZPEnum); 8023 7998 8024 if(id==24){8025 printarray(pe->values,24,1);8026 _error_("STOP");8027 }8028 8029 7999 /*Clean up and return*/ 8030 8000 delete gauss; 8031 8001 return pe;
Note:
See TracBrowser
for help on using the repository browser.