Changeset 18827


Ignore:
Timestamp:
11/21/14 15:39:33 (10 years ago)
Author:
hongjuy
Message:

CHG: added support for LA FS in adjoint

File:
1 edited

Legend:

Unmodified
Added
Removed
  • issm/trunk-jpl/src/c/cores/adjointstressbalance_core.cpp

    r17971 r18827  
    1616        bool save_results;
    1717        bool conserve_loads   = true;
     18        int fe_FS;
    1819
    1920        /*retrieve parameters:*/
    2021        femmodel->parameters->FindParam(&isFS,FlowequationIsFSEnum);
    2122        femmodel->parameters->FindParam(&save_results,SaveResultsEnum);
     23        femmodel->parameters->FindParam(&fe_FS,FlowequationFeFSEnum);
    2224
    2325        /*Compute velocities*/
    2426        if(VerboseSolution()) _printf0_("   computing velocities\n");
    2527        femmodel->SetCurrentConfiguration(StressbalanceAnalysisEnum);
    26         solutionsequence_nonlinear(femmodel,conserve_loads);
     28
     29        if(VerboseSolution()) _printf0_("   computing velocities\n");
     30        femmodel->SetCurrentConfiguration(StressbalanceAnalysisEnum);
     31        if(isFS){
     32                if (fe_FS==LATaylorHoodEnum || fe_FS==LACrouzeixRaviartEnum)
     33                 solutionsequence_la(femmodel);
     34                else
     35                 solutionsequence_nonlinear(femmodel,conserve_loads);
     36        }
     37        else{
     38                solutionsequence_nonlinear(femmodel,conserve_loads);
     39        }
    2740
    2841        /*Call SurfaceAreax, because some it might be needed by PVector*/
     
    3750        if(save_results || true){
    3851                if(VerboseSolution()) _printf0_("   saving results\n");
    39                 if (isFS){
    40                         //int outputs[4] = {AdjointxEnum,AdjointyEnum,AdjointzEnum,AdjointpEnum};
    41                         //femmodel->RequestedOutputsx(&femmodel->results,&outputs[0],4);
    42                         int outputs[3] = {AdjointxEnum,AdjointyEnum,AdjointpEnum};
    43                         femmodel->RequestedOutputsx(&femmodel->results,&outputs[0],3);
     52                if(isFS){
     53                        if(fe_FS==LATaylorHoodEnum || fe_FS==LACrouzeixRaviartEnum){
     54                                int outputs[2] = {AdjointxEnum,AdjointyEnum};
     55                                femmodel->RequestedOutputsx(&femmodel->results,&outputs[0],2);
     56                        }
     57                        else{
     58                                int outputs[3] = {AdjointxEnum,AdjointyEnum,AdjointpEnum};
     59                                femmodel->RequestedOutputsx(&femmodel->results,&outputs[0],3);
     60                        }
    4461                }
    4562                else{
Note: See TracChangeset for help on using the changeset viewer.