Changeset 25936
- Timestamp:
- 01/13/21 15:09:59 (4 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk-jpl/src/c/analyses/StressbalanceAnalysis.cpp
r25882 r25936 4140 4140 mk = 1.0 /3.0; 4141 4141 element->ElementSizes(&hx,&hy,&hz); 4142 hk = max(max(hx, hy), hz); 4143 // if(!element->IsOnDirichletBoundary()) { 4144 Tau = - mk * hk * hk * 0.125 / viscosity; 4145 4142 // hk = max(max(hx, hy), hz); 4143 hk = max(hx, hy); 4144 Tau = - mk * hk * hk * 0.125 / viscosity; 4146 4145 4147 4146 for (int q=0;q<dim;q++){ … … 4149 4148 for (int p=0;p<dim;p++){ 4150 4149 for(int i=0;i<vnumnodes;i++){ 4151 SU[q* vnumnodes*(dim+1)+i*dim+p] = (-gradViscos[p])*vdbasis[q*vnumnodes+i];4150 SU[q*numdof+i*dim+p] = (-gradViscos[p])*vdbasis[q*vnumnodes+i]; 4152 4151 } 4153 4152 } … … 4155 4154 for(int i=0;i<vnumnodes;i++){ 4156 4155 for (int p=0;p<dim;p++){ 4157 SU[q* vnumnodes*(dim+1)+i*dim+q] += (-gradViscos[p])*vdbasis[p*vnumnodes+i];4156 SU[q*numdof+i*dim+q] += (-gradViscos[p])*vdbasis[p*vnumnodes+i]; 4158 4157 } 4159 4158 } 4160 4159 /* column 4 for the pressure */ 4161 for(int i=0;i< vnumnodes;i++){4162 SU[q* vnumnodes*(dim+1)+dim*vnumnodes+i] = FSreconditioning*vdbasis[q*vnumnodes+i];4160 for(int i=0;i<pnumnodes;i++){ 4161 SU[q*numdof+dim*vnumnodes+i] = FSreconditioning*vdbasis[q*vnumnodes+i]; 4163 4162 } 4164 4163 } … … 4226 4225 int vnumnodes = element->NumberofNodesVelocity(); 4227 4226 int pnumnodes = element->NumberofNodesPressure(); 4227 int numdof = vnumnodes*dim + pnumnodes; 4228 4228 4229 4229 /*Prepare coordinate system list*/ … … 4291 4291 mk = 1.0 /3.0; 4292 4292 element->ElementSizes(&hx,&hy,&hz); 4293 hk = max(max(hx, hy), hz); 4294 // if(!element->IsOnDirichletBoundary()) { 4295 Tau = - mk * hk * hk * 0.125 / viscosity; 4296 // } 4297 // else { 4298 // Tau = 0.0; 4299 // } 4293 // hk = max(max(hx, hy), hz); 4294 hk = max(hx, hy); 4295 Tau = - mk * hk * hk * 0.125 / viscosity; 4300 4296 4301 4297 for (int q=0;q<dim;q++){ … … 4303 4299 for (int p=0;p<dim;p++){ 4304 4300 for(int i=0;i<vnumnodes;i++){ 4305 SU[q* vnumnodes*(dim+1)+i*dim+p] = (-gradViscos[p])*vdbasis[q*vnumnodes+i];4301 SU[q*numdof+i*dim+p] = (-gradViscos[p])*vdbasis[q*vnumnodes+i]; 4306 4302 } 4307 4303 } … … 4309 4305 for(int i=0;i<vnumnodes;i++){ 4310 4306 for (int p=0;p<dim;p++){ 4311 SU[q* vnumnodes*(dim+1)+i*dim+q] += (-gradViscos[p])*vdbasis[p*vnumnodes+i];4307 SU[q*numdof+i*dim+q] += (-gradViscos[p])*vdbasis[p*vnumnodes+i]; 4312 4308 } 4313 4309 } 4314 4310 /* column 4 for the pressure */ 4315 for(int i=0;i< vnumnodes;i++){4316 SU[q* vnumnodes*(dim+1)+dim*vnumnodes+i] = FSreconditioning*vdbasis[q*vnumnodes+i];4311 for(int i=0;i<pnumnodes;i++){ 4312 SU[q*numdof+dim*vnumnodes+i] = FSreconditioning*vdbasis[q*vnumnodes+i]; 4317 4313 } 4318 4314 } 4319 4320 4315 for(i=0;i<vnumnodes;i++){ 4321 4316 pe->values[i*dim+0] += +rho_ice*forcex *Jdet*gauss->weight*vbasis[i]; … … 4326 4321 } 4327 4322 4328 for(int i=0;i< vnumnodes*(dim+1);i++){4329 pe->values[i] += Tau*Jdet*gauss->weight*rho_ice*(-gravity)*SU[(dim-1)* (dim+1)*vnumnodes+i];4323 for(int i=0;i<numdof;i++){ 4324 pe->values[i] += Tau*Jdet*gauss->weight*rho_ice*(-gravity)*SU[(dim-1)*numdof+i]; 4330 4325 } 4331 4326 } … … 5159 5154 for(int i=0;i<vnumnodes;i++){ 5160 5155 for(int d=0;d<dim;d++){ 5161 nsigma[d*vnumnodes+i] = 2.0 * viscosity * bed_normal[d]*vdbasisn[i];5156 nsigma[d*vnumnodes+i] = 1.0 * viscosity * bed_normal[d]*vdbasisn[i]; 5162 5157 } 5163 5158 } … … 5172 5167 for (int q=0; q<dim; q++) { 5173 5168 /* gamma*(n*u)*(n*v) */ 5174 Ke->values[(dim*i+p)*numdof+dim*j+q] += gauss->weight*Jdet * ( -gamma) * bed_normal[q] * vbasis[j]*bed_normal[p] * vbasis[i];5169 Ke->values[(dim*i+p)*numdof+dim*j+q] += gauss->weight*Jdet * (gamma) * bed_normal[q] * vbasis[j]*bed_normal[p] * vbasis[i]; 5175 5170 /* sigma(u)*(n*v) */ 5176 5171 Ke->values[(dim*i+p)*numdof+dim*j+q] += (- gauss->weight*Jdet)* nsigma[p*vnumnodes+i] * bed_normal[q] * vbasis[j];
Note:
See TracChangeset
for help on using the changeset viewer.