source: issm/oecreview/Archive/16133-16554/ISSM-16214-16215.diff@ 16556

Last change on this file since 16556 was 16556, checked in by Mathieu Morlighem, 11 years ago

NEW: added Archive/16133-16554

File size: 18.5 KB
  • ../trunk-jpl/src/c/analyses/thermal_core.cpp

     
    2222        femmodel->parameters->FindParam(&solution_type,SolutionTypeEnum);
    2323
    2424        if(dakota_analysis && solution_type!=TransientSolutionEnum){
     25                InputDuplicatex(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,QmuVxMeshEnum,VxMeshEnum);
     26                InputDuplicatex(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,QmuVyMeshEnum,VyMeshEnum);
     27                InputDuplicatex(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,QmuVzMeshEnum,VzMeshEnum);
     28                InputDuplicatex(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,QmuTemperatureEnum,TemperatureEnum);
     29                InputDuplicatex(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,QmuMeltingEnum,BasalforcingsMeltingRateEnum);
     30                InputDuplicatex(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,QmuMaterialsRheologyBEnum,MaterialsRheologyBEnum);
    2531                femmodel->SetCurrentConfiguration(ThermalAnalysisEnum);
    2632                ResetConstraintsx(femmodel);
    2733        }
  • ../trunk-jpl/src/c/analyses/transient_core.cpp

     
    5858
    5959        /*for qmu analysis, reinitialize velocity so that fake sensitivities do not show up as a result of a different restart of the convergence at each trial.*/
    6060        if(dakota_analysis){
    61                 InputDuplicatex(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,QmuVxEnum,VxEnum);
    62                 InputDuplicatex(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,QmuVyEnum,VyEnum);
    63                 InputDuplicatex(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,QmuVzEnum,VzEnum);
    64                 InputDuplicatex(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,QmuPressureEnum,PressureEnum);
    65                 InputDuplicatex(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,QmuThicknessEnum,ThicknessEnum);
    66                 InputDuplicatex(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,QmuSurfaceEnum,SurfaceEnum);
    67                 InputDuplicatex(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,QmuBedEnum,BedEnum);
     61                if(isstressbalance){
     62                        InputDuplicatex(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,QmuVxEnum,VxEnum);
     63                        InputDuplicatex(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,QmuVyEnum,VyEnum);
     64                        InputDuplicatex(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,QmuVzEnum,VzEnum);
     65                        InputDuplicatex(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,QmuPressureEnum,PressureEnum);
     66                }
     67                if(ismasstransport | isgroundingline){
     68                        InputDuplicatex(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,QmuThicknessEnum,ThicknessEnum);
     69                        InputDuplicatex(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,QmuSurfaceEnum,SurfaceEnum);
     70                        InputDuplicatex(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,QmuBedEnum,BedEnum);
     71                        InputDuplicatex(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,QmuMaskIceLevelsetEnum,MaskIceLevelsetEnum);
     72                }
     73                if(isgroundingline) InputDuplicatex(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,QmuMaskGroundediceLevelsetEnum,MaskGroundediceLevelsetEnum);
    6874                if(dim==2)InputDuplicatex(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,QmuMaterialsRheologyBEnum,MaterialsRheologyBbarEnum);
    6975                if(isthermal && dim==3){
    7076                        //Update Vertex Position after updating Thickness and Bed
  • ../trunk-jpl/src/c/analyses/masstransport_core.cpp

     
    1313
    1414        /*parameters: */
    1515        bool  save_results;
    16         bool  issmbgradients,ispdd,isdelta18o,isFS,isfreesurface;
     16        bool  issmbgradients,ispdd,isdelta18o,isFS,isfreesurface,dakota_analysis;
    1717        int   solution_type;
    1818        int  *requested_outputs = NULL;
    1919        int   numoutputs        = 0;
     
    2828        femmodel->parameters->FindParam(&isdelta18o,SurfaceforcingsIsdelta18oEnum);
    2929        femmodel->parameters->FindParam(&isFS,FlowequationIsFSEnum);
    3030        femmodel->parameters->FindParam(&isfreesurface,MasstransportIsfreesurfaceEnum);
     31        femmodel->parameters->FindParam(&dakota_analysis,QmuIsdakotaEnum);
    3132        femmodel->parameters->FindParam(&solution_type,SolutionTypeEnum);
    3233        femmodel->parameters->FindParam(&numoutputs,MasstransportNumRequestedOutputsEnum);
    3334        if(numoutputs) femmodel->parameters->FindParam(&requested_outputs,&numoutputs,MasstransportRequestedOutputsEnum);
    3435
     36        /*for qmu analysis, reinitialize velocity so that fake sensitivities do not show up as a result of a different restart of the convergence at each trial.*/
     37        if(dakota_analysis && solution_type==MasstransportSolutionEnum){
     38                InputDuplicatex(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,QmuSurfaceEnum,SurfaceEnum);
     39                InputDuplicatex(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,QmuThicknessEnum,ThicknessEnum);
     40                InputDuplicatex(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,QmuBedEnum,BedEnum);
     41        }
     42
    3543        if(issmbgradients){
    3644          if(VerboseSolution())_printf_("       call smb gradients module\n\n");
    3745          SmbGradientsx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters);
  • ../trunk-jpl/src/c/shared/Enum/EnumDefinitions.h

     
    142142        InversionVyObsEnum,
    143143        InversionVzObsEnum,
    144144        MaskIceLevelsetEnum,
     145        QmuMaskIceLevelsetEnum,
    145146        MaterialsBetaEnum,
    146147        MaterialsHeatcapacityEnum,
    147148        MaterialsLatentheatEnum,
     
    576577        SubelementMigrationEnum,
    577578        SubelementMigration2Enum,
    578579        MaskGroundediceLevelsetEnum,
     580        QmuMaskGroundediceLevelsetEnum,
    579581        /*}}}*/
    580582        /*Solver{{{*/
    581583        FSSolverEnum,
  • ../trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp

     
    150150                case InversionVyObsEnum : return "InversionVyObs";
    151151                case InversionVzObsEnum : return "InversionVzObs";
    152152                case MaskIceLevelsetEnum : return "MaskIceLevelset";
     153                case QmuMaskIceLevelsetEnum : return "QmuMaskIceLevelset";
    153154                case MaterialsBetaEnum : return "MaterialsBeta";
    154155                case MaterialsHeatcapacityEnum : return "MaterialsHeatcapacity";
    155156                case MaterialsLatentheatEnum : return "MaterialsLatentheat";
     
    560561                case SubelementMigrationEnum : return "SubelementMigration";
    561562                case SubelementMigration2Enum : return "SubelementMigration2";
    562563                case MaskGroundediceLevelsetEnum : return "MaskGroundediceLevelset";
     564                case QmuMaskGroundediceLevelsetEnum : return "QmuMaskGroundediceLevelset";
    563565                case FSSolverEnum : return "FSSolver";
    564566                case AdjointEnum : return "Adjoint";
    565567                case ColinearEnum : return "Colinear";
  • ../trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp

     
    153153              else if (strcmp(name,"InversionVyObs")==0) return InversionVyObsEnum;
    154154              else if (strcmp(name,"InversionVzObs")==0) return InversionVzObsEnum;
    155155              else if (strcmp(name,"MaskIceLevelset")==0) return MaskIceLevelsetEnum;
     156              else if (strcmp(name,"QmuMaskIceLevelset")==0) return QmuMaskIceLevelsetEnum;
    156157              else if (strcmp(name,"MaterialsBeta")==0) return MaterialsBetaEnum;
    157158              else if (strcmp(name,"MaterialsHeatcapacity")==0) return MaterialsHeatcapacityEnum;
    158159              else if (strcmp(name,"MaterialsLatentheat")==0) return MaterialsLatentheatEnum;
     
    258259              else if (strcmp(name,"SurfaceforcingsIssmbgradients")==0) return SurfaceforcingsIssmbgradientsEnum;
    259260              else if (strcmp(name,"SurfaceforcingsMonthlytemperatures")==0) return SurfaceforcingsMonthlytemperaturesEnum;
    260261              else if (strcmp(name,"SurfaceforcingsHref")==0) return SurfaceforcingsHrefEnum;
    261               else if (strcmp(name,"SurfaceforcingsSmbref")==0) return SurfaceforcingsSmbrefEnum;
    262262         else stage=3;
    263263   }
    264264   if(stage==3){
    265               if (strcmp(name,"SurfaceforcingsBPos")==0) return SurfaceforcingsBPosEnum;
     265              if (strcmp(name,"SurfaceforcingsSmbref")==0) return SurfaceforcingsSmbrefEnum;
     266              else if (strcmp(name,"SurfaceforcingsBPos")==0) return SurfaceforcingsBPosEnum;
    266267              else if (strcmp(name,"SurfaceforcingsBNeg")==0) return SurfaceforcingsBNegEnum;
    267268              else if (strcmp(name,"ThermalIsenthalpy")==0) return ThermalIsenthalpyEnum;
    268269              else if (strcmp(name,"ThermalIsdynamicbasalspc")==0) return ThermalIsdynamicbasalspcEnum;
     
    381382              else if (strcmp(name,"Input")==0) return InputEnum;
    382383              else if (strcmp(name,"IntInput")==0) return IntInputEnum;
    383384              else if (strcmp(name,"IntParam")==0) return IntParamEnum;
    384               else if (strcmp(name,"IntVecParam")==0) return IntVecParamEnum;
    385385         else stage=4;
    386386   }
    387387   if(stage==4){
    388               if (strcmp(name,"TransientParam")==0) return TransientParamEnum;
     388              if (strcmp(name,"IntVecParam")==0) return IntVecParamEnum;
     389              else if (strcmp(name,"TransientParam")==0) return TransientParamEnum;
    389390              else if (strcmp(name,"IceFrontType")==0) return IceFrontTypeEnum;
    390391              else if (strcmp(name,"SSA2dIceFront")==0) return SSA2dIceFrontEnum;
    391392              else if (strcmp(name,"SSA3dIceFront")==0) return SSA3dIceFrontEnum;
     
    504505              else if (strcmp(name,"Waterfraction")==0) return WaterfractionEnum;
    505506              else if (strcmp(name,"Watercolumn")==0) return WatercolumnEnum;
    506507              else if (strcmp(name,"BasalFriction")==0) return BasalFrictionEnum;
    507               else if (strcmp(name,"ViscousHeating")==0) return ViscousHeatingEnum;
    508508         else stage=5;
    509509   }
    510510   if(stage==5){
    511               if (strcmp(name,"QmuTemperature")==0) return QmuTemperatureEnum;
     511              if (strcmp(name,"ViscousHeating")==0) return ViscousHeatingEnum;
     512              else if (strcmp(name,"QmuTemperature")==0) return QmuTemperatureEnum;
    512513              else if (strcmp(name,"HydrologyWaterVx")==0) return HydrologyWaterVxEnum;
    513514              else if (strcmp(name,"HydrologyWaterVy")==0) return HydrologyWaterVyEnum;
    514515              else if (strcmp(name,"StressTensor")==0) return StressTensorEnum;
     
    572573              else if (strcmp(name,"SubelementMigration")==0) return SubelementMigrationEnum;
    573574              else if (strcmp(name,"SubelementMigration2")==0) return SubelementMigration2Enum;
    574575              else if (strcmp(name,"MaskGroundediceLevelset")==0) return MaskGroundediceLevelsetEnum;
     576              else if (strcmp(name,"QmuMaskGroundediceLevelset")==0) return QmuMaskGroundediceLevelsetEnum;
    575577              else if (strcmp(name,"FSSolver")==0) return FSSolverEnum;
    576578              else if (strcmp(name,"Adjoint")==0) return AdjointEnum;
    577579              else if (strcmp(name,"Colinear")==0) return ColinearEnum;
  • ../trunk-jpl/src/c/modules/ModelProcessorx/Masstransport/UpdateElementsMasstransport.cpp

     
    1515        bool   issmbgradients;
    1616        bool   ispdd;
    1717        bool   isdelta18o;
     18        bool   isgroundingline;
    1819
    1920        /*Fetch data needed: */
    2021        iomodel->Constant(&stabilization,MasstransportStabilizationEnum);
     
    2223        iomodel->Constant(&ispdd,SurfaceforcingsIspddEnum);
    2324        iomodel->Constant(&isdelta18o,SurfaceforcingsIsdelta18oEnum);
    2425        iomodel->Constant(&issmbgradients,SurfaceforcingsIssmbgradientsEnum);
     26        iomodel->Constant(&isgroundingline,TransientIsgroundinglineEnum);
    2527
    2628        /*Finite element type*/
    2729        finiteelement = P1Enum;
     
    5759                elements->InputDuplicate(BedEnum,QmuBedEnum);
    5860                elements->InputDuplicate(ThicknessEnum,QmuThicknessEnum);
    5961                elements->InputDuplicate(SurfaceEnum,QmuSurfaceEnum);
    60                 elements->InputDuplicate(BasalforcingsMeltingRateEnum,QmuMeltingEnum);
    61                 elements->InputDuplicate(VxEnum,QmuVxEnum);
    62                 elements->InputDuplicate(VyEnum,QmuVyEnum);
     62                elements->InputDuplicate(MaskIceLevelsetEnum,QmuMaskIceLevelsetEnum);
     63                if(isgroundingline) elements->InputDuplicate(MaskGroundediceLevelsetEnum,QmuMaskGroundediceLevelsetEnum);
    6364        }
    6465
    6566        if(iomodel->dim==3){
    6667                iomodel->FetchDataToInput(elements,MeshElementonbedEnum);
    6768                iomodel->FetchDataToInput(elements,MeshElementonsurfaceEnum);
    68                 iomodel->FetchDataToInput(elements,PressureEnum);
    6969                iomodel->FetchDataToInput(elements,TemperatureEnum);
    7070                iomodel->FetchDataToInput(elements,VzEnum);
    71                 if(dakota_analysis){
    72                         elements->InputDuplicate(PressureEnum,QmuPressureEnum);
    73                         elements->InputDuplicate(TemperatureEnum,QmuTemperatureEnum);
    74                         elements->InputDuplicate(VzEnum,QmuVzEnum);
    75                 }
    7671        }
    7772        if(issmbgradients){
    78                 iomodel->FetchDataToInput(elements,SurfaceforcingsHrefEnum);
    79                 iomodel->FetchDataToInput(elements,SurfaceforcingsSmbrefEnum);
    80                 iomodel->FetchDataToInput(elements,SurfaceforcingsBPosEnum);
    81                 iomodel->FetchDataToInput(elements,SurfaceforcingsBNegEnum);
     73                iomodel->FetchDataToInput(elements,SurfaceforcingsHrefEnum);
     74                iomodel->FetchDataToInput(elements,SurfaceforcingsSmbrefEnum);
     75                iomodel->FetchDataToInput(elements,SurfaceforcingsBPosEnum);
     76                iomodel->FetchDataToInput(elements,SurfaceforcingsBNegEnum);
    8277        }
    8378        if(ispdd){
    8479                iomodel->FetchDataToInput(elements,ThermalSpctemperatureEnum);
  • ../trunk-jpl/src/c/modules/ModelProcessorx/Stressbalance/UpdateElementsStressbalance.cpp

     
    100100        iomodel->FetchDataToInput(elements,LoadingforceXEnum);
    101101        iomodel->FetchDataToInput(elements,LoadingforceYEnum);
    102102        iomodel->FetchDataToInput(elements,DamageDEnum);
     103        iomodel->FetchDataToInput(elements,PressureEnum);
     104        if(dakota_analysis)elements->InputDuplicate(PressureEnum,QmuPressureEnum);
    103105
    104106        if(iomodel->dim==3){
    105107                iomodel->FetchDataToInput(elements,MeshElementonbedEnum);
  • ../trunk-jpl/src/c/modules/ModelProcessorx/Thermal/UpdateElementsThermal.cpp

     
    4747        iomodel->Constant(&dakota_analysis,QmuIsdakotaEnum);
    4848        if(dakota_analysis){
    4949                elements->InputDuplicate(TemperatureEnum,QmuTemperatureEnum);
    50                 elements->InputDuplicate(PressureEnum,QmuPressureEnum);
    5150                elements->InputDuplicate(BasalforcingsMeltingRateEnum,QmuMeltingEnum);
    5251        }
    5352}
  • ../trunk-jpl/src/c/classes/Elements/Tria.cpp

     
    19811981                                name==QmuSurfaceEnum ||
    19821982                                name==QmuTemperatureEnum ||
    19831983                                name==QmuMeltingEnum ||
     1984                                name==QmuMaskGroundediceLevelsetEnum ||
     1985                                name==QmuMaskIceLevelsetEnum ||
    19841986                                name==GiaWEnum ||
    19851987                                name==GiadWdtEnum
    19861988                ){
     
    24992501                        if(!iomodel->Data(VxEnum)){
    25002502                                for(i=0;i<3;i++)nodeinputs[i]=0;
    25012503                                this->inputs->AddInput(new TriaInput(VxEnum,nodeinputs,P1Enum));
    2502                                 if(dakota_analysis) this->inputs->AddInput(new TriaInput(QmuVxEnum,nodeinputs,P1Enum));
     2504                                if(dakota_analysis)this->inputs->AddInput(new TriaInput(QmuVxEnum,nodeinputs,P1Enum));
    25032505                        }
    25042506                        if(!iomodel->Data(VyEnum)){
    25052507                                for(i=0;i<3;i++)nodeinputs[i]=0;
    25062508                                this->inputs->AddInput(new TriaInput(VyEnum,nodeinputs,P1Enum));
    2507                                 if(dakota_analysis) this->inputs->AddInput(new TriaInput(QmuVyEnum,nodeinputs,P1Enum));
     2509                                if(dakota_analysis)this->inputs->AddInput(new TriaInput(QmuVyEnum,nodeinputs,P1Enum));
    25082510                        }
    25092511                        if(!iomodel->Data(VzEnum)){
    25102512                                for(i=0;i<3;i++)nodeinputs[i]=0;
    25112513                                this->inputs->AddInput(new TriaInput(VzEnum,nodeinputs,P1Enum));
    2512                                 if(dakota_analysis) this->inputs->AddInput(new TriaInput(QmuVzEnum,nodeinputs,P1Enum));
     2514                                if(dakota_analysis)this->inputs->AddInput(new TriaInput(QmuVzEnum,nodeinputs,P1Enum));
    25132515                        }
    25142516                        if(!iomodel->Data(PressureEnum)){
    25152517                                for(i=0;i<3;i++)nodeinputs[i]=0;
  • ../trunk-jpl/src/c/classes/Elements/Penta.cpp

     
    27542754                                name==QmuSurfaceEnum ||
    27552755                                name==QmuTemperatureEnum ||
    27562756                                name==QmuMeltingEnum ||
     2757                                name==QmuMaskGroundediceLevelsetEnum ||
     2758                                name==QmuMaskIceLevelsetEnum ||
    27572759                                name==GiaWEnum ||
    27582760                                name==GiadWdtEnum ||
    27592761                                name==SedimentHeadEnum ||
Note: See TracBrowser for help on using the repository browser.