Changeset 13438


Ignore:
Timestamp:
09/25/12 12:45:08 (12 years ago)
Author:
Eric.Larour
Message:

CHG:
-added test3015 to check on AD mode runs for prognostic mode and fos_forward driver.
-added RequestedOutputs in prognostic_core solution.
-fixed segfault in IoModel.cpp due to requested_independents not being initialized to 0.

Location:
issm/trunk-jpl
Files:
4 added
12 edited

Legend:

Unmodified
Added
Removed
  • issm/trunk-jpl/src/c/EnumDefinitions/EnumDefinitions.h

    r13427 r13438  
    152152        PrognosticStabilizationEnum,
    153153        PrognosticVertexPairingEnum,
     154        PrognosticNumRequestedOutputsEnum,
     155        PrognosticRequestedOutputsEnum,
    154156        QmuIsdakotaEnum,
    155157        QmuMassFluxSegmentsEnum,
  • issm/trunk-jpl/src/c/classes/IoModel.cpp

    r13432 r13438  
    9292        xDelete<IssmDouble*>(this->data);
    9393        xDelete<bool>(this->independents);
    94         delete this->independent_objects;
     94        if(this->independent_objects)delete this->independent_objects;
    9595        xDelete<bool>(this->my_elements);
    9696        xDelete<bool>(this->my_nodes);
     
    252252                #endif
    253253        }
     254        else this->independent_objects=NULL;
     255
    254256
    255257}
  • issm/trunk-jpl/src/c/modules/EnumToStringx/EnumToStringx.cpp

    r13430 r13438  
    157157                case PrognosticStabilizationEnum : return "PrognosticStabilization";
    158158                case PrognosticVertexPairingEnum : return "PrognosticVertexPairing";
     159                case PrognosticNumRequestedOutputsEnum : return "PrognosticNumRequestedOutputs";
     160                case PrognosticRequestedOutputsEnum : return "PrognosticRequestedOutputs";
    159161                case QmuIsdakotaEnum : return "QmuIsdakota";
    160162                case QmuMassFluxSegmentsEnum : return "QmuMassFluxSegments";
  • issm/trunk-jpl/src/c/modules/ModelProcessorx/CreateParameters.cpp

    r13283 r13438  
    127127        if(numoutputs)parameters->AddObject(new IntVecParam(DiagnosticRequestedOutputsEnum,requestedoutputs,numoutputs));
    128128        iomodel->DeleteData(requestedoutputs,DiagnosticRequestedOutputsEnum);
     129
    129130        iomodel->FetchData(&requestedoutputs,&numoutputs,NULL,TransientRequestedOutputsEnum);
    130131        parameters->AddObject(new IntParam(TransientNumRequestedOutputsEnum,numoutputs));
    131132        if(numoutputs)parameters->AddObject(new IntVecParam(TransientRequestedOutputsEnum,requestedoutputs,numoutputs));
    132133        iomodel->DeleteData(requestedoutputs,TransientRequestedOutputsEnum);
     134
    133135        iomodel->FetchData(&requestedoutputs,&numoutputs,NULL,SteadystateRequestedOutputsEnum);
    134136        parameters->AddObject(new IntParam(SteadystateNumRequestedOutputsEnum,numoutputs));
     
    136138        iomodel->DeleteData(requestedoutputs,SteadystateRequestedOutputsEnum);
    137139       
     140        iomodel->FetchData(&requestedoutputs,&numoutputs,NULL,PrognosticRequestedOutputsEnum);
     141        parameters->AddObject(new IntParam(PrognosticNumRequestedOutputsEnum,numoutputs));
     142        if(numoutputs)parameters->AddObject(new IntVecParam(PrognosticRequestedOutputsEnum,requestedoutputs,numoutputs));
     143        iomodel->DeleteData(requestedoutputs,PrognosticRequestedOutputsEnum);
     144
    138145        /*Before returning, create parameters in case we are running Qmu or control types runs: */
    139146        #ifdef _HAVE_CONTROL_
  • issm/trunk-jpl/src/c/modules/StringToEnumx/StringToEnumx.cpp

    r13430 r13438  
    161161              else if (strcmp(name,"PrognosticStabilization")==0) return PrognosticStabilizationEnum;
    162162              else if (strcmp(name,"PrognosticVertexPairing")==0) return PrognosticVertexPairingEnum;
     163              else if (strcmp(name,"PrognosticNumRequestedOutputs")==0) return PrognosticNumRequestedOutputsEnum;
     164              else if (strcmp(name,"PrognosticRequestedOutputs")==0) return PrognosticRequestedOutputsEnum;
    163165              else if (strcmp(name,"QmuIsdakota")==0) return QmuIsdakotaEnum;
    164166              else if (strcmp(name,"QmuMassFluxSegments")==0) return QmuMassFluxSegmentsEnum;
     
    259261              else if (strcmp(name,"Approximation")==0) return ApproximationEnum;
    260262              else if (strcmp(name,"NoneApproximation")==0) return NoneApproximationEnum;
    261               else if (strcmp(name,"HutterApproximation")==0) return HutterApproximationEnum;
    262               else if (strcmp(name,"MacAyealApproximation")==0) return MacAyealApproximationEnum;
    263263         else stage=3;
    264264   }
    265265   if(stage==3){
    266               if (strcmp(name,"MacAyealPattynApproximation")==0) return MacAyealPattynApproximationEnum;
     266              if (strcmp(name,"HutterApproximation")==0) return HutterApproximationEnum;
     267              else if (strcmp(name,"MacAyealApproximation")==0) return MacAyealApproximationEnum;
     268              else if (strcmp(name,"MacAyealPattynApproximation")==0) return MacAyealPattynApproximationEnum;
    267269              else if (strcmp(name,"MacAyealStokesApproximation")==0) return MacAyealStokesApproximationEnum;
    268270              else if (strcmp(name,"L1L2Approximation")==0) return L1L2ApproximationEnum;
     
    382384              else if (strcmp(name,"TemperaturePicard")==0) return TemperaturePicardEnum;
    383385              else if (strcmp(name,"TemperatureSurface")==0) return TemperatureSurfaceEnum;
    384               else if (strcmp(name,"TemperatureBasal")==0) return TemperatureBasalEnum;
    385               else if (strcmp(name,"ThicknessAbsMisfit")==0) return ThicknessAbsMisfitEnum;
    386386         else stage=4;
    387387   }
    388388   if(stage==4){
    389               if (strcmp(name,"Type")==0) return TypeEnum;
     389              if (strcmp(name,"TemperatureBasal")==0) return TemperatureBasalEnum;
     390              else if (strcmp(name,"ThicknessAbsMisfit")==0) return ThicknessAbsMisfitEnum;
     391              else if (strcmp(name,"Type")==0) return TypeEnum;
    390392              else if (strcmp(name,"Vel")==0) return VelEnum;
    391393              else if (strcmp(name,"Velocity")==0) return VelocityEnum;
     
    505507              else if (strcmp(name,"GenericOption")==0) return GenericOptionEnum;
    506508              else if (strcmp(name,"OptionCell")==0) return OptionCellEnum;
    507               else if (strcmp(name,"OptionChar")==0) return OptionCharEnum;
    508               else if (strcmp(name,"OptionStruct")==0) return OptionStructEnum;
    509509         else stage=5;
    510510   }
    511511   if(stage==5){
    512               if (strcmp(name,"OptionDouble")==0) return OptionDoubleEnum;
     512              if (strcmp(name,"OptionChar")==0) return OptionCharEnum;
     513              else if (strcmp(name,"OptionStruct")==0) return OptionStructEnum;
     514              else if (strcmp(name,"OptionDouble")==0) return OptionDoubleEnum;
    513515              else if (strcmp(name,"OptionLogical")==0) return OptionLogicalEnum;
    514516              else if (strcmp(name,"Paterson")==0) return PatersonEnum;
  • issm/trunk-jpl/src/c/solutions/diagnostic_core.cpp

    r13051 r13438  
    105105                RequestedOutputsx(femmodel->results,femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,requested_outputs,numoutputs);
    106106        }
     107       
     108        if(solution_type==DiagnosticSolutionEnum)RequestedDependentsx(femmodel->results,femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters);
    107109
    108110        /*Free ressources:*/
  • issm/trunk-jpl/src/c/solutions/prognostic_core.cpp

    r13434 r13438  
    1818        bool issmbgradients,ispdd,isdelta18o;
    1919        int  solution_type;
     20        int  *requested_outputs = NULL;
     21        int  numoutputs=0;
    2022
    2123        /*activate formulation: */
     
    2830        femmodel->parameters->FindParam(&isdelta18o,SurfaceforcingsIsdelta18oEnum);
    2931        femmodel->parameters->FindParam(&solution_type,SolutionTypeEnum);
     32        femmodel->parameters->FindParam(&numoutputs,PrognosticNumRequestedOutputsEnum);
     33        if(numoutputs) femmodel->parameters->FindParam(&requested_outputs,&numoutputs,PrognosticRequestedOutputsEnum);
    3034
    3135        if(issmbgradients){
     
    4751                if(VerboseSolution()) _pprintLine_("   saving results");
    4852                InputToResultx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,ThicknessEnum);
     53                RequestedOutputsx(femmodel->results,femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,requested_outputs,numoutputs);
    4954        }
    5055       
     56        if(solution_type==PrognosticSolutionEnum)RequestedDependentsx(femmodel->results,femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters);
    5157       
    52         if(solution_type==PrognosticSolutionEnum)RequestedDependentsx(femmodel->results,femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters);
     58        /*Free ressources:*/
     59        xDelete<int>(requested_outputs);
    5360}
  • issm/trunk-jpl/src/m/classes/prognostic.m

    r13020 r13438  
    1212                 vertex_pairing         = NaN;
    1313                 penalty_factor         = 0;
     14                 requested_outputs       = NaN;
    1415        end
    1516        methods
     
    4546                        md = checkfield(md,'prognostic.stabilization','values',[0 1 2 3]);
    4647                        md = checkfield(md,'prognostic.min_thickness','>',0);
     48                        if ~isempty(md.prognostic.requested_outputs),
     49                                md = checkfield(md,'prognostic.requested_outputs','size',[NaN 1]);
     50                        end
     51
    4752
    4853                end % }}}
     
    5762                        fielddisplay(obj,'penalty_factor','offset used by penalties: penalty = Kmax*10^offset');
    5863                        fielddisplay(obj,'vertex_pairing','pairs of vertices that are penalized');
     64                        fielddisplay(obj,'requested_outputs','additional outputs requested');
    5965
    6066                end % }}}
     
    6672                        WriteData(fid,'object',obj,'fieldname','vertex_pairing','format','DoubleMat','mattype',3);
    6773                        WriteData(fid,'object',obj,'fieldname','penalty_factor','format','Double');
     74                        WriteData(fid,'object',obj,'fieldname','requested_outputs','format','DoubleMat','mattype',3);
    6875                end % }}}
    6976        end
  • issm/trunk-jpl/src/m/enum/EnumDefinitions.py

    r13427 r13438  
    14091409        return StringToEnum('PrognosticVertexPairing')[0]
    14101410
     1411def PrognosticNumRequestedOutputsEnum():
     1412        """
     1413        PROGNOSTICNUMREQUESTEDOUTPUTSENUM - Enum of PrognosticNumRequestedOutputs
     1414
     1415           Usage:
     1416              macro=PrognosticNumRequestedOutputsEnum()
     1417        """
     1418
     1419        return StringToEnum('PrognosticNumRequestedOutputs')[0]
     1420
     1421def PrognosticRequestedOutputsEnum():
     1422        """
     1423        PROGNOSTICREQUESTEDOUTPUTSENUM - Enum of PrognosticRequestedOutputs
     1424
     1425           Usage:
     1426              macro=PrognosticRequestedOutputsEnum()
     1427        """
     1428
     1429        return StringToEnum('PrognosticRequestedOutputs')[0]
     1430
    14111431def QmuIsdakotaEnum():
    14121432        """
     
    48574877        """
    48584878
    4859         return 484
    4860 
     4879        return 486
     4880
  • issm/trunk-jpl/src/m/enum/MaximumNumberOfEnums.m

    r13427 r13438  
    99%      macro=MaximumNumberOfEnums()
    1010
    11 macro=484;
     11macro=486;
  • issm/trunk-jpl/test/NightlyRun/ad.m

    r13433 r13438  
    44md=setflowequation(md,'macayeal','all');
    55md.cluster=generic('name',oshostname(),'np',3);
    6 md.diagnostic.requested_outputs=StressTensorEnum;
     6
    77md.autodiff.isautodiff=true;
    8 md.verbose=verbose('autodiff',true);
    9 
     8index=1;
    109md.autodiff.independents={...
    11         independent('name','Thickness','type','vertex','nods',md.mesh.numberofvertices,'fos_forward_index',1), ...
    12         independent('name','Surface','type','vertex','nods',md.mesh.numberofvertices)...
     10        independent('name','Thickness','type','vertex','nods',md.mesh.numberofvertices,'fos_forward_index',index)
    1311        };
    1412
     
    1816md.autodiff.driver='fos_forward';
    1917
    20 md=solve(md,PrognosticSolutionEnum);
    21 %md=solve(md,TransientSolutionEnum);
     18md=solve(md,TransientSolutionEnum);
  • issm/trunk-jpl/test/NightlyRun/runme.m

    r13336 r13438  
    106106        test_ids=intersect(test_ids,[1401:1499]);
    107107elseif strcmpi(benchmark,'adolc'),
    108         test_ids=intersect(test_ids,[3001:3010]);
     108        test_ids=intersect(test_ids,[3001:3020]);
    109109elseif strcmpi(benchmark,'validation'),
    110110        test_ids=intersect(test_ids,[1001:1999]);
Note: See TracChangeset for help on using the changeset viewer.