Changeset 24989


Ignore:
Timestamp:
06/09/20 01:00:37 (5 years ago)
Author:
Eric.Larour
Message:

CHG: had to redesign the InputUpdateFromDakotax module to work with each
variable partitioning vector. This called for an extra marshalled variablepartitiions_npart vector
to keep track of each variable's number of partitions (because now it's arbitrary).

Location:
issm/trunk-jpl/src
Files:
1 added
9 edited

Legend:

Unmodified
Added
Removed
  • issm/trunk-jpl/src/c/modules/InputUpdateFromDakotax/InputUpdateFromDakotax.cpp

    r24988 r24989  
    1010#include "../InputUpdateFromVectorDakotax/InputUpdateFromVectorDakotax.h"
    1111
    12 void InputUpdateFromDakotax(FemModel* femmodel,double* variables,char* *variables_descriptors,int numvariables){
     12void InputUpdateFromDakotax(FemModel* femmodel,double* variables,char* *variables_descriptors,int numdakotavariables){
    1313
    1414        int     i,j,k,l;
     
    2020        IssmDouble **variable_partitions         = NULL;
    2121        IssmDouble * variable_partition         = NULL;
     22        int * variable_partitions_npart         = NULL;
    2223        int          variable_partitions_num;
    23         int         *partitions_m   = NULL;
    24         int         *partitions_n   = NULL;
    2524        int          npart;
    26         int          dummy; //should match numvariables
     25        int variablecount=0;
    2726
    2827        double *distributed_values = NULL;
     
    3231
    3332        /*retrieve parameters: */
    34         femmodel->parameters->FindParam(&variable_partitions,&variable_partitions_num,&partitions_m,&partitions_n,QmuVariablePartitionsEnum);
     33        femmodel->parameters->FindParam(&variable_partitions,&variable_partitions_num,NULL,NULL,QmuVariablePartitionsEnum);
     34        femmodel->parameters->FindParam(&variable_partitions_npart,NULL,NULL,QmuVariablePartitionsNpartEnum);
    3535       
    3636        numberofvertices=femmodel->vertices->NumberOfVertices();
     
    3939        /*Go through all dakota descriptors, ex: "rho_ice","thermal_conductivity","thickness1","thickness2", etc ..., and
    4040         * for each descriptor, take the variable value and plug it into the inputs: */
    41 
    42         for(i=0;i<numvariables;i++){
     41        for(i=0;i<numdakotavariables;i++){ //these are the dakota variables, for all partitions.
    4342
    4443                descriptor=variables_descriptors[i];
     
    4847               
    4948                        /*recover partition vector: */
    50                         variable_partition=variable_partitions[i];
    51                         //_printf_("variable_partition_M: " << variable_partition_M << " variable_partition_N " << variable_partition_N << "\n");
    52                         npart=partitions_m[i];
     49                        variable_partition=variable_partitions[variablecount];
     50                        npart=variable_partitions_npart[variablecount];
    5351
    5452                        /*Variable is scaled. Determine root name of variable (ex: scaled_DragCoefficient_1 -> DragCoefficient). Allocate distributed_values and fill the
     
    136134                        InputUpdateFromConstantx(femmodel,variables[i],StringToEnumx(descriptor));
    137135                }
     136                variablecount++;
    138137        }
    139138
     
    143142                xDelete<IssmDouble>(matrix);
    144143        }
    145         xDelete<int>(partitions_m);
    146         xDelete<int>(partitions_n);
    147144        xDelete<IssmDouble*>(variable_partitions);
    148145
  • issm/trunk-jpl/src/c/modules/ModelProcessorx/Dakota/CreateParametersDakota.cpp

    r24988 r24989  
    3838        int         *ndims_array                = NULL;
    3939        int          num_partitions;
     40        int*         intarray = NULL;
     41        int M,N;
    4042
    4143        /*recover parameters: */
     
    7779                iomodel->FetchData(&array,&mdims_array,&ndims_array,&num_partitions,"md.qmu.variablepartitions");
    7880                parameters->AddObject(new DoubleMatArrayParam(QmuVariablePartitionsEnum,array,num_partitions,mdims_array,ndims_array));
    79 
     81                iomodel->FetchData(&intarray,&M,&N,"md.qmu.variablepartitions_npart");
     82                parameters->AddObject(new IntMatParam(QmuVariablePartitionsNpartEnum,intarray,M,N));
    8083
    8184                /*Deal with data needed because of qmu variables*/
     
    128131                xDelete<int>(ndims_array);
    129132                xDelete<IssmDouble*>(array);
     133                xDelete<int>(intarray);
    130134
    131135        }
  • issm/trunk-jpl/src/c/shared/Enum/Enum.vim

    r24987 r24989  
    299299syn keyword cConstant QmuVariableDescriptorsEnum
    300300syn keyword cConstant QmuVariablePartitionsEnum
     301syn keyword cConstant QmuVariablePartitionsNpartEnum
    301302syn keyword cConstant RestartFileNameEnum
    302303syn keyword cConstant ResultsEnum
  • issm/trunk-jpl/src/c/shared/Enum/EnumDefinitions.h

    r24987 r24989  
    293293        QmuVariableDescriptorsEnum,
    294294        QmuVariablePartitionsEnum,
     295        QmuVariablePartitionsNpartEnum,
    295296        RestartFileNameEnum,
    296297        ResultsEnum,
  • issm/trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp

    r24987 r24989  
    301301                case QmuVariableDescriptorsEnum : return "QmuVariableDescriptors";
    302302                case QmuVariablePartitionsEnum : return "QmuVariablePartitions";
     303                case QmuVariablePartitionsNpartEnum : return "QmuVariablePartitionsNpart";
    303304                case RestartFileNameEnum : return "RestartFileName";
    304305                case ResultsEnum : return "Results";
  • issm/trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp

    r24987 r24989  
    307307              else if (strcmp(name,"QmuVariableDescriptors")==0) return QmuVariableDescriptorsEnum;
    308308              else if (strcmp(name,"QmuVariablePartitions")==0) return QmuVariablePartitionsEnum;
     309              else if (strcmp(name,"QmuVariablePartitionsNpart")==0) return QmuVariablePartitionsNpartEnum;
    309310              else if (strcmp(name,"RestartFileName")==0) return RestartFileNameEnum;
    310311              else if (strcmp(name,"Results")==0) return ResultsEnum;
     
    382383              else if (strcmp(name,"SmbIsthermal")==0) return SmbIsthermalEnum;
    383384              else if (strcmp(name,"SmbIsturbulentflux")==0) return SmbIsturbulentfluxEnum;
    384               else if (strcmp(name,"SmbK")==0) return SmbKEnum;
    385385         else stage=4;
    386386   }
    387387   if(stage==4){
    388               if (strcmp(name,"SmbNumRequestedOutputs")==0) return SmbNumRequestedOutputsEnum;
     388              if (strcmp(name,"SmbK")==0) return SmbKEnum;
     389              else if (strcmp(name,"SmbNumRequestedOutputs")==0) return SmbNumRequestedOutputsEnum;
    389390              else if (strcmp(name,"SmbPfac")==0) return SmbPfacEnum;
    390391              else if (strcmp(name,"SmbRdl")==0) return SmbRdlEnum;
     
    505506              else if (strcmp(name,"BaseSlopeY")==0) return BaseSlopeYEnum;
    506507              else if (strcmp(name,"Bed")==0) return BedEnum;
    507               else if (strcmp(name,"BedSlopeX")==0) return BedSlopeXEnum;
    508508         else stage=5;
    509509   }
    510510   if(stage==5){
    511               if (strcmp(name,"BedSlopeY")==0) return BedSlopeYEnum;
     511              if (strcmp(name,"BedSlopeX")==0) return BedSlopeXEnum;
     512              else if (strcmp(name,"BedSlopeY")==0) return BedSlopeYEnum;
    512513              else if (strcmp(name,"CalvingCalvingrate")==0) return CalvingCalvingrateEnum;
    513514              else if (strcmp(name,"CalvingHabFraction")==0) return CalvingHabFractionEnum;
     
    628629              else if (strcmp(name,"HydrologyWatercolumnMax")==0) return HydrologyWatercolumnMaxEnum;
    629630              else if (strcmp(name,"HydrologyWaterVx")==0) return HydrologyWaterVxEnum;
    630               else if (strcmp(name,"HydrologyWaterVy")==0) return HydrologyWaterVyEnum;
    631631         else stage=6;
    632632   }
    633633   if(stage==6){
    634               if (strcmp(name,"Ice")==0) return IceEnum;
     634              if (strcmp(name,"HydrologyWaterVy")==0) return HydrologyWaterVyEnum;
     635              else if (strcmp(name,"Ice")==0) return IceEnum;
    635636              else if (strcmp(name,"IceMaskNodeActivation")==0) return IceMaskNodeActivationEnum;
    636637              else if (strcmp(name,"Input")==0) return InputEnum;
     
    751752              else if (strcmp(name,"SmbFAC")==0) return SmbFACEnum;
    752753              else if (strcmp(name,"SmbGdn")==0) return SmbGdnEnum;
    753               else if (strcmp(name,"SmbGdnini")==0) return SmbGdniniEnum;
    754754         else stage=7;
    755755   }
    756756   if(stage==7){
    757               if (strcmp(name,"SmbGsp")==0) return SmbGspEnum;
     757              if (strcmp(name,"SmbGdnini")==0) return SmbGdniniEnum;
     758              else if (strcmp(name,"SmbGsp")==0) return SmbGspEnum;
    758759              else if (strcmp(name,"SmbGspini")==0) return SmbGspiniEnum;
    759760              else if (strcmp(name,"SmbHref")==0) return SmbHrefEnum;
     
    874875              else if (strcmp(name,"WaterfractionDrainage")==0) return WaterfractionDrainageEnum;
    875876              else if (strcmp(name,"WaterfractionDrainageIntegrated")==0) return WaterfractionDrainageIntegratedEnum;
    876               else if (strcmp(name,"Waterfraction")==0) return WaterfractionEnum;
    877877         else stage=8;
    878878   }
    879879   if(stage==8){
    880               if (strcmp(name,"Waterheight")==0) return WaterheightEnum;
     880              if (strcmp(name,"Waterfraction")==0) return WaterfractionEnum;
     881              else if (strcmp(name,"Waterheight")==0) return WaterheightEnum;
    881882              else if (strcmp(name,"WeightsSurfaceObservation")==0) return WeightsSurfaceObservationEnum;
    882883              else if (strcmp(name,"Outputdefinition1")==0) return Outputdefinition1Enum;
     
    997998              else if (strcmp(name,"BalancethicknessApparentMassbalance")==0) return BalancethicknessApparentMassbalanceEnum;
    998999              else if (strcmp(name,"BalancethicknessSoftAnalysis")==0) return BalancethicknessSoftAnalysisEnum;
    999               else if (strcmp(name,"BalancethicknessSoftSolution")==0) return BalancethicknessSoftSolutionEnum;
    10001000         else stage=9;
    10011001   }
    10021002   if(stage==9){
    1003               if (strcmp(name,"BalancethicknessSolution")==0) return BalancethicknessSolutionEnum;
     1003              if (strcmp(name,"BalancethicknessSoftSolution")==0) return BalancethicknessSoftSolutionEnum;
     1004              else if (strcmp(name,"BalancethicknessSolution")==0) return BalancethicknessSolutionEnum;
    10041005              else if (strcmp(name,"BalancethicknessSpcthickness")==0) return BalancethicknessSpcthicknessEnum;
    10051006              else if (strcmp(name,"BalancevelocityAnalysis")==0) return BalancevelocityAnalysisEnum;
     
    11201121              else if (strcmp(name,"HydrologyPismAnalysis")==0) return HydrologyPismAnalysisEnum;
    11211122              else if (strcmp(name,"HydrologyShaktiAnalysis")==0) return HydrologyShaktiAnalysisEnum;
    1122               else if (strcmp(name,"HydrologyShreveAnalysis")==0) return HydrologyShreveAnalysisEnum;
    11231123         else stage=10;
    11241124   }
    11251125   if(stage==10){
    1126               if (strcmp(name,"HydrologySolution")==0) return HydrologySolutionEnum;
     1126              if (strcmp(name,"HydrologyShreveAnalysis")==0) return HydrologyShreveAnalysisEnum;
     1127              else if (strcmp(name,"HydrologySolution")==0) return HydrologySolutionEnum;
    11271128              else if (strcmp(name,"Hydrologydc")==0) return HydrologydcEnum;
    11281129              else if (strcmp(name,"Hydrologypism")==0) return HydrologypismEnum;
     
    12431244              else if (strcmp(name,"P1xP4")==0) return P1xP4Enum;
    12441245              else if (strcmp(name,"P2")==0) return P2Enum;
    1245               else if (strcmp(name,"P2bubble")==0) return P2bubbleEnum;
    12461246         else stage=11;
    12471247   }
    12481248   if(stage==11){
    1249               if (strcmp(name,"P2bubblecondensed")==0) return P2bubblecondensedEnum;
     1249              if (strcmp(name,"P2bubble")==0) return P2bubbleEnum;
     1250              else if (strcmp(name,"P2bubblecondensed")==0) return P2bubblecondensedEnum;
    12501251              else if (strcmp(name,"P2xP1")==0) return P2xP1Enum;
    12511252              else if (strcmp(name,"P2xP4")==0) return P2xP4Enum;
     
    13661367              else if (strcmp(name,"SealevelWeights")==0) return SealevelWeightsEnum;
    13671368              else if (strcmp(name,"StrainRate")==0) return StrainRateEnum;
    1368               else if (strcmp(name,"StressTensor")==0) return StressTensorEnum;
    13691369         else stage=12;
    13701370   }
    13711371   if(stage==12){
    1372               if (strcmp(name,"StressbalanceViscosityOvershoot")==0) return StressbalanceViscosityOvershootEnum;
     1372              if (strcmp(name,"StressTensor")==0) return StressTensorEnum;
     1373              else if (strcmp(name,"StressbalanceViscosityOvershoot")==0) return StressbalanceViscosityOvershootEnum;
    13731374              else if (strcmp(name,"SubelementMigration4")==0) return SubelementMigration4Enum;
    13741375              else if (strcmp(name,"TimesteppingTimeAdapt")==0) return TimesteppingTimeAdaptEnum;
  • issm/trunk-jpl/src/m/classes/qmu.m

    r24988 r24989  
    1919                variabledescriptors         = {};
    2020                variablepartitions          = {};
     21                variablepartitions_npart    = [];
    2122                responsedescriptors         = {};
    2223                mass_flux_profile_directory = NaN;
     
    173174                        end
    174175                        fielddisplay(self,'variablepartitions','');
     176                        fielddisplay(self,'variablepartitions_npart','');
    175177                        fielddisplay(self,'variabledescriptors','');
    176178                        fielddisplay(self,'responsedescriptors','');
     
    196198                        WriteData(fid,prefix,'object',self,'fieldname','variabledescriptors','format','StringArray');
    197199                        WriteData(fid,prefix,'object',self,'fieldname','variablepartitions','format','MatArray');
     200                        WriteData(fid,prefix,'object',self,'fieldname','variablepartitions_npart','format','IntMat','mattype',3);
    198201                        WriteData(fid,prefix,'object',self,'fieldname','responsedescriptors','format','StringArray');
    199202                        if ~isempty(self.mass_flux_segments),
  • issm/trunk-jpl/src/m/qmu/preqmu.m

    r24988 r24989  
    9090variable_fieldnames=fieldnames(md.qmu.variables(ivar));
    9191variablepartitions={};
     92variablepartitions_npart=[];
    9293for i=1:length(variable_fieldnames),
    9394        field_name=variable_fieldnames{i};
     
    9596        if fieldvariable.isscaled();
    9697                variablepartitions{end+1}=fieldvariable.partition;
     98                variablepartitions_npart(end+1)=qmupart2npart(fieldvariable.partition);
    9799        else
    98100                variablepartitions{end+1}=[];
     101                variablepartitions_npart(end+1)=0;
    99102        end
    100103end
     
    105108md.qmu.variabledescriptors=variabledescriptors;
    106109md.qmu.variablepartitions=variablepartitions;
     110md.qmu.variablepartitions_npart=variablepartitions_npart;
    107111md.qmu.responsedescriptors=responsedescriptors;
    108112
  • issm/trunk-jpl/src/m/qmu/setupdesign/QmuSetupVariables.m

    r24988 r24989  
    1212        partition=variables.partition;
    1313        %figure out number of partitions:
    14         npart=qmupart2npart(partition)
     14        npart=qmupart2npart(partition);
    1515
    1616        if isa(variables,'uniform_uncertain'),
Note: See TracChangeset for help on using the changeset viewer.