Changeset 15182


Ignore:
Timestamp:
05/30/13 18:08:42 (12 years ago)
Author:
bdef
Message:

CHG: treatment of the residual input is changed to avoid division multiplication by the basis function

File:
1 edited

Legend:

Unmodified
Added
Removed
  • issm/trunk-jpl/src/c/classes/Elements/Tria.cpp

    r15161 r15182  
    62006200
    62016201        /*Intermediaries */
     6202        IssmDouble connectivity;
    62026203        IssmDouble Jdet;
    62036204        IssmDouble xyz_list[NUMVERTICES][3];
    62046205        IssmDouble dt,scalar,water_head;
    6205         IssmDouble residual_load,transfer;
     6206        IssmDouble transfer,residual;
    62066207        IssmDouble epl_storing;
    62076208        IssmDouble basis[numdof];
     
    62336234
    62346235                /*Loading term*/
    6235                 residual_input->GetInputValue(&residual_load,gauss);
    62366236                transfer_input->GetInputValue(&transfer,gauss);
    6237                 scalar = Jdet*gauss->weight*(residual_load+transfer);
     6237                scalar = Jdet*gauss->weight*transfer;
    62386238                if(reCast<bool,IssmDouble>(dt)) scalar = scalar*dt;
    62396239                for(int i=0;i<numdof;i++) pe->values[i]+=scalar*basis[i];
     
    62476247        }
    62486248
     6249        /*      Add residual if necessary*/
     6250        delete gauss;
     6251        gauss=new GaussTria();
     6252        for(int iv=0;iv<NUMVERTICES;iv++){
     6253                gauss->GaussVertex(iv);
     6254
     6255                connectivity = IssmDouble(nodes[iv]->GetConnectivity());
     6256                residual_input->GetInputValue(&residual,gauss);
     6257                pe->values[iv]+=residual/connectivity;
     6258        }
    62496259        /*Clean up and return*/
    62506260        delete gauss;
     
    63876397        IssmDouble  values[numdof];
    63886398        IssmDouble  residual[numdof];
    6389         IssmDouble  intbasis[numdof];   
    63906399        IssmDouble  penalty_factor, dt;
    63916400        IssmDouble  kmax, kappa, h_max;
     
    64026411        /*If converged keep the residual in mind*/
    64036412        this->inputs->GetInputValue(&converged,ConvergedEnum);
    6404         GetInputListOnVertices(&intbasis[0],BasisIntegralEnum);
    64056413
    64066414        if(converged){
     
    64136421                        this->GetHydrologyDCInefficientHmax(&h_max,nodes[i]);
    64146422                        if(values[i]>h_max){
    6415                                 residual[i]=kappa*(values[i]-h_max)/intbasis[i];
    6416                                 if(reCast<bool,IssmDouble>(dt))residual[i]=residual[i]/dt;
     6423                                residual[i]=kappa*(values[i]-h_max);
     6424                                if(reCast<bool,IssmDouble>(dt))residual[i]=residual[i];
    64176425                        }
    64186426                        else
    64196427                                residual[i]=0.0;
    64206428                }
    6421                 if(this->id==1)printf("residual, %g \n", residual[1]);
    6422                 if(this->id==1)printf("hSed, %g \n", values[1]);
    64236429        }
    64246430        /*Add input to the element: */
Note: See TracChangeset for help on using the changeset viewer.