Changeset 25019


Ignore:
Timestamp:
06/11/20 17:02:35 (5 years ago)
Author:
Eric.Larour
Message:

CHG: implemented new way of updating transient inputs using normal uncertain variables that are time distributed.

Location:
issm/trunk-jpl/src
Files:
10 edited

Legend:

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

    r24989 r25019  
    2121        IssmDouble * variable_partition         = NULL;
    2222        int * variable_partitions_npart         = NULL;
     23        int * variable_partitions_nt         = NULL;
    2324        int          variable_partitions_num;
    2425        int          npart;
     26        int          nt;
    2527        int variablecount=0;
    2628
     
    3335        femmodel->parameters->FindParam(&variable_partitions,&variable_partitions_num,NULL,NULL,QmuVariablePartitionsEnum);
    3436        femmodel->parameters->FindParam(&variable_partitions_npart,NULL,NULL,QmuVariablePartitionsNpartEnum);
     37        femmodel->parameters->FindParam(&variable_partitions_nt,NULL,NULL,QmuVariablePartitionsNtEnum);
    3538       
    3639        numberofvertices=femmodel->vertices->NumberOfVertices();
     
    4952                        variable_partition=variable_partitions[variablecount];
    5053                        npart=variable_partitions_npart[variablecount];
     54                        nt=variable_partitions_nt[variablecount];
    5155
    5256                        /*Variable is scaled. Determine root name of variable (ex: scaled_DragCoefficient_1 -> DragCoefficient). Allocate distributed_values and fill the
     
    5761                        *strstr(root,"_")='\0';
    5862
    59                         distributed_values=xNew<double>(npart);
    60                         for(j=0;j<npart;j++){
     63                        distributed_values=xNew<double>(npart*nt);
     64                        for(j=0;j<npart*nt;j++){
    6165                                distributed_values[j]=variables[i+j];
    6266                        }
     
    7276                        //_printf_("nrows: " << nrows << " numberofvertices: " << numberofvertices << " numberofelements: " << numberofelements << "\n");
    7377
    74                         if (nrows==numberofvertices || nrows==(numberofvertices+1)){
    75                                 for(k=0;k<numberofvertices;k++){
    76                                         if (variable_partition[k]==-1)continue;
    77                                         else{
    78                                                 for(l=0;l<ncols;l++){
    79                                                         *(parameter+ncols*k+l)=*(parameter+ncols*k+l)*distributed_values[(int)variable_partition[k]];
     78                        if(ncols!=nt){
     79                                /*we are trying to update a col sized transient input by scaling with a matrix of col size nt. This can only work if nt==1, otherwise, error out: */
     80                                if (nt!=1) _error_("InputUpdateFromDakotax error message: transient input being updated should be the same col size as the number of time step in the qmu variable specificationi");
     81                        }
     82
     83                        if(nt==1){
     84                                /*scale all the columns by the same vector:*/
     85                                if (nrows==numberofvertices || nrows==(numberofvertices+1)){
     86                                        for(k=0;k<numberofvertices;k++){
     87                                                if (variable_partition[k]==-1)continue;
     88                                                else{
     89                                                        for(l=0;l<ncols;l++){
     90                                                                *(parameter+ncols*k+l)=*(parameter+ncols*k+l)*distributed_values[(int)variable_partition[k]];
     91                                                        }
    8092                                                }
    8193                                        }
    8294                                }
     95                                else if (nrows==numberofelements || nrows==(numberofelements+1)){
     96                                        for(k=0;k<numberofelements;k++){
     97                                                if (variable_partition[k]==-1)continue;
     98                                                else{
     99                                                        for(l=0;l<ncols;l++){
     100                                                                *(parameter+ncols*k+l)=*(parameter+ncols*k+l)*distributed_values[(int)variable_partition[k]];
     101                                                        }
     102                                                }
     103                                        }
     104
     105                                }
     106                                else _error_("partitioning vector should be either elements or vertex sized!");
     107
    83108                        }
    84                         else if (nrows==numberofelements || nrows==(numberofelements+1)){
    85                                 for(k=0;k<numberofelements;k++){
    86                                         if (variable_partition[k]==-1)continue;
    87                                         else{
    88                                                 for(l=0;l<ncols;l++){
    89                                                         *(parameter+ncols*k+l)=*(parameter+ncols*k+l)*distributed_values[(int)variable_partition[k]];
     109                        else{
     110                                /*scale all the columns by the scalar matrix:*/
     111                                if (nrows==numberofvertices || nrows==(numberofvertices+1)){
     112                                        for(k=0;k<numberofvertices;k++){
     113                                                if (variable_partition[k]==-1)continue;
     114                                                else{
     115                                                        for(l=0;l<ncols;l++){
     116                                                                *(parameter+ncols*k+l)=*(parameter+ncols*k+l)*distributed_values[(int)variable_partition[k]*nt+l];
     117                                                        }
    90118                                                }
    91119                                        }
    92120                                }
     121                                else if (nrows==numberofelements || nrows==(numberofelements+1)){
     122                                        for(k=0;k<numberofelements;k++){
     123                                                if (variable_partition[k]==-1)continue;
     124                                                else{
     125                                                        for(l=0;l<ncols;l++){
     126                                                                *(parameter+ncols*k+l)=*(parameter+ncols*k+l)*distributed_values[(int)variable_partition[k]*nt+l];
     127                                                        }
     128                                                }
     129                                        }
    93130
     131                                }
     132                                else _error_("partitioning vector should be either elements or vertex sized!");
    94133                        }
    95                         else _error_("partitioning vector should be either elements or vertex sized!");
    96134
    97135                        #ifdef _DEBUG_
     
    118156
    119157                        /*increment i to skip the distributed values just collected: */
    120                         i+=npart-1; //careful, the for loop will add 1.
     158                        i+=npart*nt-1; //careful, the for loop will add 1.
    121159                       
    122160                        /*Free allocations: */
     
    143181        }
    144182        xDelete<IssmDouble*>(variable_partitions);
     183        xDelete<int>(variable_partitions_npart);
     184        xDelete<int>(variable_partitions_nt);
    145185
    146186}
  • issm/trunk-jpl/src/c/modules/ModelProcessorx/Dakota/CreateParametersDakota.cpp

    r24998 r25019  
    7878                iomodel->FetchData(&intarray,&M,&N,"md.qmu.variablepartitions_npart");
    7979                parameters->AddObject(new IntMatParam(QmuVariablePartitionsNpartEnum,intarray,M,N));
     80                xDelete<int>(intarray); iomodel->FetchData(&intarray,&M,&N,"md.qmu.variablepartitions_nt");
     81                parameters->AddObject(new IntMatParam(QmuVariablePartitionsNtEnum,intarray,M,N));
    8082
    8183                /*free arrays: {{{*/
  • issm/trunk-jpl/src/c/shared/Enum/Enum.vim

    r24998 r25019  
    297297syn keyword cConstant QmuVariablePartitionsEnum
    298298syn keyword cConstant QmuVariablePartitionsNpartEnum
     299syn keyword cConstant QmuVariablePartitionsNtEnum
    299300syn keyword cConstant QmuResponsePartitionsEnum
    300301syn keyword cConstant QmuResponsePartitionsNpartEnum
  • issm/trunk-jpl/src/c/shared/Enum/EnumDefinitions.h

    r24998 r25019  
    291291        QmuVariablePartitionsEnum,
    292292        QmuVariablePartitionsNpartEnum,
     293        QmuVariablePartitionsNtEnum,
    293294        QmuResponsePartitionsEnum,
    294295        QmuResponsePartitionsNpartEnum,
  • issm/trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp

    r24998 r25019  
    299299                case QmuVariablePartitionsEnum : return "QmuVariablePartitions";
    300300                case QmuVariablePartitionsNpartEnum : return "QmuVariablePartitionsNpart";
     301                case QmuVariablePartitionsNtEnum : return "QmuVariablePartitionsNt";
    301302                case QmuResponsePartitionsEnum : return "QmuResponsePartitions";
    302303                case QmuResponsePartitionsNpartEnum : return "QmuResponsePartitionsNpart";
  • issm/trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp

    r24998 r25019  
    305305              else if (strcmp(name,"QmuVariablePartitions")==0) return QmuVariablePartitionsEnum;
    306306              else if (strcmp(name,"QmuVariablePartitionsNpart")==0) return QmuVariablePartitionsNpartEnum;
     307              else if (strcmp(name,"QmuVariablePartitionsNt")==0) return QmuVariablePartitionsNtEnum;
    307308              else if (strcmp(name,"QmuResponsePartitions")==0) return QmuResponsePartitionsEnum;
    308309              else if (strcmp(name,"QmuResponsePartitionsNpart")==0) return QmuResponsePartitionsNpartEnum;
     
    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

    r25006 r25019  
    1717                variablepartitions          = {};
    1818                variablepartitions_npart    = [];
     19                variablepartitions_nt    = [];
    1920                responsedescriptors         = {};
    2021                responsepartitions          = {};
     
    174175                        fielddisplay(self,'variablepartitions','');
    175176                        fielddisplay(self,'variablepartitions_npart','');
     177                        fielddisplay(self,'variablepartitions_nt','');
    176178                        fielddisplay(self,'variabledescriptors','');
    177179                        fielddisplay(self,'responsedescriptors','');
     
    195197                        WriteData(fid,prefix,'object',self,'fieldname','variablepartitions','format','MatArray');
    196198                        WriteData(fid,prefix,'object',self,'fieldname','variablepartitions_npart','format','IntMat','mattype',3);
     199                        WriteData(fid,prefix,'object',self,'fieldname','variablepartitions_nt','format','IntMat','mattype',3);
    197200                        WriteData(fid,prefix,'object',self,'fieldname','responsedescriptors','format','StringArray');
    198201                        WriteData(fid,prefix,'object',self,'fieldname','responsepartitions','format','MatArray');
  • issm/trunk-jpl/src/m/classes/qmu/normal_uncertain.m

    r24870 r25019  
    1818                stddev          = NaN;
    1919                partition       = [];
     20                nsteps        = 0;
    2021        end
    2122        methods
     
    3536                        if self.isscaled(),
    3637                                self.partition=getfieldvalue(options,'partition');
    37                                 npart=partition_npart(self.partition);
    38                                 if npart~=length(self.mean),
    39                                         error(['normal_uncertain constructor: for the scaled variable' self.descriptor ' the mean field is not currently a vector of values for all the partitions described in the partition vector']);
     38                                self.nsteps=getfieldvalue(options,'nsteps',1);
     39                                npart=qmupart2npart(self.partition);
     40                                if npart~=size(self.mean,1),
     41                                        error(['normal_uncertain constructor: for the scaled variable ' self.descriptor ' the row size of the mean field should be identifical to the number of partitions']);
    4042                                end
    41                                 if npart~=length(self.stddev),
    42                                         error(['normal_uncertain constructor: for the scaled variable' self.descriptor ' the stddev field is not currently a vector of values for all the partitions described in the partition vector']);
     43                                if npart~=size(self.stddev,1),
     44                                        error(['normal_uncertain constructor: for the scaled variable ' self.descriptor ' the row size of the stddev field should be identifical to the number of partitions']);
    4345                                end
     46                                if self.nsteps~=size(self.mean,2),
     47                                        error(['normal_uncertain constructor: for the scaled variable ' self.descriptor ' the col size of the mean field should be identifical to the number of time steps']);
     48                                end
     49                                if npart~=size(self.stddev,1),
     50                                        error(['normal_uncertain constructor: for the scaled variable ' self.descriptor ' the col size of the stddev field should be identifical to the number of time steps']);
     51                                end
     52
    4453                        end
    45 
    4654
    4755                end %}}}
     
    5462                                fielddisplay(self,'partition','partition vector defining where sampling will occur');
    5563                        end
     64                        fielddisplay(self,'nsteps','number of time steps');
    5665                end
    5766                %}}}
     
    6574                                end
    6675                                %better have a partition vector that has as many partitions as stddev's size:
    67                                 if length(self.stddev)~=partition_npart(self.partition),
    68                                         error('normal_uncertain error message: stddev and partition should be vectors of identical size');
     76                                if size(self.stddev,1)~=partition_npart(self.partition),
     77                                        error('normal_uncertain error message: row size of stddev and partition size should be identical');
    6978                                end
    70                                 if length(self.mean)~=partition_npart(self.partition),
    71                                         error('normal_uncertain error message: mean and partition should be vectors of identical size');
     79                                if size(self.mean,1)~=partition_npart(self.partition),
     80                                        error('normal_uncertain error message: row size of mean and partition size should be identical');
     81                                end
     82                                %we need as steps in stddev and mean as there are time steps:
     83                                if size(self.stddev,2)~=self.nsteps,
     84                                        error('normal_uncertain error message: col size of stddev and number of time steps should be identical');
     85                                end
     86                                if size(self.mean,2)~=self.nsteps,
     87                                        error('normal_uncertain error message: col size of mean and number of time steps should be identical');
    7288                                end
    7389
  • issm/trunk-jpl/src/m/qmu/preqmu.m

    r25015 r25019  
    8888
    8989%build a MatArray of variable partitions:
     90variable_fieldnames=fieldnames(md.qmu.variables(ivar));
    9091variablepartitions={};
    9192variablepartitions_npart=[];
    92 variable_fieldnames=fieldnames(md.qmu.variables(ivar));
     93variablepartitions_nt=[];
    9394for i=1:length(variable_fieldnames),
    9495        field_name=variable_fieldnames{i};
     
    9798                variablepartitions{end+1}=fieldvariable.partition;
    9899                variablepartitions_npart(end+1)=qmupart2npart(fieldvariable.partition);
     100                variablepartitions_nt(end+1)=fieldvariable.nsteps;
    99101        else
    100102                variablepartitions{end+1}=[];
    101103                variablepartitions_npart(end+1)=0;
     104                variablepartitions_nt(end+1)=1;
    102105        end
    103106end
    104107
    105108%build a MatArray of response partitions:
     109response_fieldnames=fieldnames(md.qmu.responses(ivar));
    106110responsepartitions={};
    107111responsepartitions_npart=[];
    108 response_fieldnames=fieldnames(md.qmu.responses(iresp));
    109112for i=1:length(response_fieldnames),
    110113        field_name=response_fieldnames{i};
    111         fieldresponse=md.qmu.responses(iresp).(field_name);
     114        fieldresponse=md.qmu.responses(ivar).(field_name);
    112115        if fieldresponse.isscaled();
    113116                responsepartitions{end+1}=fieldresponse.partition;
     
    125128md.qmu.variablepartitions=variablepartitions;
    126129md.qmu.variablepartitions_npart=variablepartitions_npart;
     130md.qmu.variablepartitions_nt=variablepartitions_nt;
    127131md.qmu.responsedescriptors=responsedescriptors;
    128132md.qmu.responsepartitions=responsepartitions;
     
    132136%is a response, we need a profile of points.  For a misfit, we need the observed velocity, etc ...
    133137md=process_qmu_response_data(md);
     138
  • issm/trunk-jpl/src/m/qmu/setupdesign/QmuSetupVariables.m

    r24989 r25019  
    1313        %figure out number of partitions:
    1414        npart=qmupart2npart(partition);
     15        %figure out number of time steps:
     16        nt=variables.nsteps;
    1517
    1618        if isa(variables,'uniform_uncertain'),
     
    2830
    2931        %ok, dealing with semi-discrete distributed variable. Distribute according to how many
    30         %partitions we want
    31         for j=1:npart,
    32                 dvar(end+1)           =variables;
    33                 dvar(end  ).descriptor=sprintf('%s_%d',variables.descriptor,j);
    34                 if isa(variables,'uniform_uncertain'),
    35                         dvar(end  ).lower=variables.lower(j);
    36                         dvar(end  ).upper=variables.upper(j);
    37                 elseif isa(variables,'normal_uncertain'),
    38                         dvar(end  ).stddev=variables.stddev(j);
    39                         dvar(end  ).mean=variables.mean(j);
     32        %partitions we want, and number of time steps:
     33        if nt==1,
     34                for j=1:npart,
     35                        dvar(end+1)           =variables;
     36                        dvar(end  ).descriptor=sprintf('%s_%d',variables.descriptor,j);
     37                        if isa(variables,'uniform_uncertain'),
     38                                dvar(end  ).lower=variables.lower(j);
     39                                dvar(end  ).upper=variables.upper(j);
     40                        elseif isa(variables,'normal_uncertain'),
     41                                dvar(end  ).stddev=variables.stddev(j);
     42                                dvar(end  ).mean=variables.mean(j);
     43                        end
    4044                end
     45        else
     46                for j=1:npart,
     47                        for k=1:nt,
     48                                dvar(end+1)           =variables;
     49                                dvar(end  ).descriptor=sprintf('%s_%d_%d',variables.descriptor,j,k);
     50                                if isa(variables,'uniform_uncertain'),
     51                                        dvar(end  ).lower=variables.lower(j,k);
     52                                        dvar(end  ).upper=variables.upper(j,k);
     53                                elseif isa(variables,'normal_uncertain'),
     54                                        dvar(end  ).stddev=variables.stddev(j,k);
     55                                        dvar(end  ).mean=variables.mean(j,k);
     56                                end
     57                        end
     58                end
     59
    4160        end
    4261
Note: See TracChangeset for help on using the changeset viewer.