Changeset 24836
- Timestamp:
- 05/09/20 15:18:11 (5 years ago)
- Location:
- issm/trunk-jpl
- Files:
-
- 1 added
- 15 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk-jpl/src/m/classes/qmu/normal_uncertain.m
r24830 r24836 29 29 self.mean=getfieldvalue(options,'mean'); 30 30 self.stddev=getfieldvalue(options,'stddev'); 31 self.partition=getfieldvalue(options,'partition',[]); %default not used. 31 32 %if the variable is scaled, a partition vector should have been supplied, and 33 %that partition vector should have as many partitions as the mean and stddev 34 %vectors: 35 if self.isscaled(), 36 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']); 40 end 41 if npart~=length(self.stddev), 42 error(['normal_uncertain constructor: for the scaled variable' self.described ' the stddev field is not currently a vector of values for all the partitions described in the partition vector']); 43 end 44 end 45 32 46 33 47 end %}}} … … 48 62 md = checkfield(md,'field',self.mean,'fieldname','normal_uncertain.mean','NaN',1,'Inf',1,'>=',0); 49 63 md = checkfield(md,'field',self.stddev,'fieldname','normal_uncertain.stddev','NaN',1,'Inf',1,'>=',0,'numel',length(self.mean)); 50 if ~isempty(self.partition), 64 if self.isscaled(), 65 if isempty(self.partition), 66 error('normal_uncertain is a scaled variable, but it''s missing a partition vector'); 67 end 68 %better have a partition vector that has as many partitions as stddev's size: 69 if length(self.stddev)~=partition_npart(self.partition), 70 error('normal_uncertain error message: stddev and partition should be vectors of identical size'); 71 end 72 if length(self.mean)~=partition_npart(self.partition), 73 error('normal_uncertain error message: mean and partition should be vectors of identical size'); 74 end 75 51 76 md = checkfield(md,'field',self.partition,'fieldname','normal_uncertain.partition','NaN',1,'Inf',1,'>=',-1,'numel',[md.mesh.numberofvertices,md.mesh.numberofelements]); 52 if size(self.partition, 1)>1,77 if size(self.partition,2)>1, 53 78 error('normal_uncertain error message: partition should be a column vector'); 54 79 end … … 63 88 error('normal_uncertain error message: partition vector''s values cannot go over the number of vertices or elements'); 64 89 end 65 66 90 end 67 91 end % }}} … … 123 147 scale=[]; 124 148 end % }}} 125 end 149 %new methods: 150 function scaled =isscaled(self) % {{{ 151 if strncmp(self.descriptor,'scaled_',7), 152 scaled=1; 153 else 154 scaled=0; 155 end 156 end % }}} 157 end 126 158 methods (Static) 127 159 function []=dakota_write(fidi,dvar) % {{{ -
issm/trunk-jpl/src/m/classes/qmu/uniform_uncertain.m
r24830 r24836 29 29 self.upper=getfieldvalue(options,'upper'); 30 30 self.lower=getfieldvalue(options,'lower'); 31 self.partition=getfieldvalue(options,'partition',[]); %default not used. 31 32 %if the variable is scaled, a partition vector should have been supplied, and 33 %that partition vector should have as many partitions as the lower and upper 34 %vectors: 35 if self.isscaled(), 36 self.partition=getfieldvalue(options,'partition'); 37 npart=partition_npart(self.partition); 38 if npart~=length(self.upper), 39 error(['uniform_uncertain constructor: for the scaled variable' self.descriptor ' the upper field is not currently a vector of values for all the partitions described in the partition vector']); 40 end 41 if npart~=length(self.lower), 42 error(['uniform_uncertain constructor: for the scaled variable' self.described ' the lower field is not currently a vector of values for all the partitions described in the partition vector']); 43 end 44 end 32 45 33 46 end %}}} … … 45 58 function md=checkconsistency(self,md,solution,analyses) % {{{ 46 59 47 md = checkfield(md,'field',self.upper,'fieldname','uniform_uncertain.upper','NaN',1,'Inf',1); 48 md = checkfield(md,'field',self.lower,'fieldname','uniform_uncertain.lower','NaN',1,'Inf',1); 49 if ~isempty(self.partition), 50 md = checkfield(md,'field',self.partition,'fieldname','uniform_uncertain.partition','NaN',1,'Inf',1,'>=',-1,'numel',[md.mesh.numberofvertices,md.mesh.numberofelements]); 51 if size(self.partition,1)>1, 52 error('uniform_uncertain error message: partition should be a column vector'); 53 end 54 partcheck=unique(self.partition); 55 partmin=min(partcheck); 56 partmax=max(partcheck); 57 if partmax<-1, 58 error('uniform_uncertain error message: partition vector''s min value should be -1 (for no partition), or start at 0'); 59 end 60 nmax=max(md.mesh.numberofelements,md.mesh.numberofvertices); 61 if partmax>nmax, 62 error('uniform_uncertain error message: partition vector''s values cannot go over the number of vertices or elements'); 63 end 60 md = checkfield(md,'field',self.upper,'fieldname','uniform_uncertain.upper','NaN',1,'Inf',1,'>',self.lower,'numel',length(self.lower)); 61 md = checkfield(md,'field',self.lower,'fieldname','uniform_uncertain.lower','NaN',1,'Inf',1,'<',self.upper,'numel',length(self.upper)); 62 if self.isscaled(), 63 if isempty(self.partition), 64 error('normal_uncertain is a scaled variable, but it''s missing a partition vector'); 65 end 66 %better have a partition vector that has as many partitions as stddev's size: 67 if length(self.upper)~=partition_npart(self.partition), 68 error('uniform_uncertain error message: upper and partition should be vectors of identical size'); 69 end 70 if length(self.lower)~=partition_npart(self.partition), 71 error('uniform_uncertain error message: lower and partition should be vectors of identical size'); 72 end 64 73 74 md = checkfield(md,'field',self.partition,'fieldname','normal_uncertain.partition','NaN',1,'Inf',1,'>=',-1,'numel',[md.mesh.numberofvertices,md.mesh.numberofelements]); 75 if size(self.partition,2)>1, 76 error('uniform_uncertain error message: partition should be a column vector'); 65 77 end 66 end % }}} 78 partcheck=unique(self.partition); 79 partmin=min(partcheck); 80 partmax=max(partcheck); 81 if partmax<-1, 82 error('uniform_uncertain error message: partition vector''s min value should be -1 (for no partition), or start at 0'); 83 end 84 nmax=max(md.mesh.numberofelements,md.mesh.numberofvertices); 85 if partmax>nmax, 86 error('uniform_uncertain error message: partition vector''s values cannot go over the number of vertices or elements'); 87 end 88 end 89 end % }}} 67 90 %virtual functions needed by qmu processing algorithms: 68 91 %implemented: … … 82 105 desc=allempty(desc); 83 106 end %}}} 84 function [lower] =prop_lower(uuv) % {{{107 function [lower] =prop_lower(uuv) % {{{ 85 108 lower=zeros(1,numel(uuv)); 86 109 for i=1:numel(uuv) … … 89 112 lower=allequal(lower,-Inf); 90 113 end %}}} 91 function [upper] =prop_upper(uuv) % {{{114 function [upper] =prop_upper(uuv) % {{{ 92 115 upper=zeros(1,numel(uuv)); 93 116 for i=1:numel(uuv) … … 121 144 counts=[]; 122 145 end % }}} 123 function [pairs_per_variable] =prop_pairs_per_variable(hbu) % {{{ 124 pairs_per_variable=[]; 125 end % }}} 146 function [pairs_per_variable] =prop_pairs_per_variable(hbu) % {{{ 147 pairs_per_variable=[]; 148 end % }}} 149 %new methods: 150 function scaled =isscaled(self) % {{{ 151 if strncmp(self.descriptor,'scaled_',7), 152 scaled=1; 153 else 154 scaled=0; 155 end 156 end % }}} 126 157 end 127 158 methods (Static) -
issm/trunk-jpl/src/m/qmu/setupdesign/QmuSetupVariables.m
r13646 r24836 38 38 dvar(end ).stddev=variables.stddev(j); 39 39 end 40 if length(variables.mean)>1, 41 dvar(end ).mean=variables.mean(j); 42 end 43 40 44 end 41 45 end -
issm/trunk-jpl/test/NightlyRun/test218.m
r24819 r24836 60 60 61 61 %variables 62 md.qmu.variables.rheology_B=normal_uncertain('descriptor','scaled_MaterialsRheologyB','mean',1,'stddev',.05); 62 md.qmu.variables.rheology_B=normal_uncertain('descriptor','scaled_MaterialsRheologyB',... 63 'mean',ones(md.mesh.numberofvertices,1),... 64 'stddev',.05*ones(md.mesh.numberofvertices,1),... 65 'partition',md.qmu.vpartition); 63 66 64 67 %responses -
issm/trunk-jpl/test/NightlyRun/test234.m
r24819 r24836 27 27 28 28 %variables 29 md.qmu.variables.surface_mass_balance=normal_uncertain('descriptor','scaled_SmbMassBalance','mean',1,'stddev',.1); 29 md.qmu.variables.surface_mass_balance=normal_uncertain('descriptor','scaled_SmbMassBalance',... 30 'mean',ones(md.qmu.numberofpartitions,1),... 31 'stddev',.1*ones(md.qmu.numberofpartitions,1),... 32 'partition',md.qmu.vpartition); 30 33 31 34 %responses -
issm/trunk-jpl/test/NightlyRun/test235.m
r24819 r24836 27 27 28 28 %variables 29 md.qmu.variables.surface_mass_balance=normal_uncertain('descriptor','scaled_SmbMassBalance','mean',1,'stddev',100); 29 md.qmu.variables.surface_mass_balance=normal_uncertain('descriptor','scaled_SmbMassBalance',... 30 'mean',ones(md.qmu.numberofpartitions,1),... 31 'stddev',100*ones(md.qmu.numberofpartitions,1),... 32 'partition',md.qmu.vpartition); 33 ); 30 34 31 35 %responses -
issm/trunk-jpl/test/NightlyRun/test244.m
r24833 r24836 51 51 52 52 %variables 53 md.qmu.variables.surface_mass_balanceC=normal_uncertain('descriptor','scaled_SmbC','mean',1,'stddev',.5); 53 md.qmu.variables.surface_mass_balanceC=normal_uncertain('descriptor','scaled_SmbC',... 54 'mean',1*ones(md.mesh.numberofelements,1),... 55 'stddev',.5*ones(md.mesh.numberofelements,1),... 56 'partition',md.qmu.epartition); 54 57 55 58 Tmin=273; … … 64 67 end 65 68 mint_on_partition(isnan(mint_on_partition)) = 10^-10; 66 md.qmu.variables.surface_mass_balanceTa=uniform_uncertain('descriptor','scaled_SmbTa','upper',1,'lower',0.05); 67 md.qmu.variables.surface_mass_balanceTa.lower=0.95; 68 md.qmu.variables.surface_mass_balanceTa.upper=max(min(max(1.05,mint_on_partition),0.9999),0.0001); 69 md.qmu.variables.surface_mass_balanceTa=uniform_uncertain('descriptor','scaled_SmbTa',... 70 'lower',.95*ones(md.mesh.numberofelements,1),... 71 'upper',max(min(max(1.05,mint_on_partition),0.9999),0.0001),... 72 'partition',md.qmu.epartition); 69 73 70 74 %responses -
issm/trunk-jpl/test/NightlyRun/test250.m
r24819 r24836 27 27 28 28 %variables 29 md.qmu.variables.surface_mass_balance=normal_uncertain('descriptor','scaled_SmbMassBalance','mean',1,'stddev',.1); 29 md.qmu.variables.surface_mass_balance=normal_uncertain('descriptor','scaled_SmbMassBalance',... 30 'mean',ones(md.qmu.numberofpartitions,1),... 31 'stddev',ones(md.qmu.numberofpartitions,1),... 32 'partition',md.qmu.vpartition); 30 33 31 34 %responses -
issm/trunk-jpl/test/NightlyRun/test251.m
r24819 r24836 27 27 28 28 %variables 29 md.qmu.variables.surface_mass_balance=normal_uncertain('descriptor','scaled_SmbMassBalance','mean',1,'stddev',100); 29 md.qmu.variables.surface_mass_balance=normal_uncertain('descriptor','scaled_SmbMassBalance',... 30 'mean',ones(md.mesh.numberofvertices,1),... 31 'stddev',100*ones(md.mesh.numberofvertices,1),... 32 'partition',md.qmu.vpartition); 30 33 31 34 %responses -
issm/trunk-jpl/test/NightlyRun/test412.m
r24821 r24836 19 19 20 20 %variables 21 md.qmu.variables.rho_ice=normal_uncertain('descriptor','MaterialsRhoIce','mean',md.materials.rho_ice,'stddev',.01); 22 md.qmu.variables.drag_coefficient=normal_uncertain('descriptor','scaled_FrictionCoefficient','mean',1,'stddev',.01); 23 21 md.qmu.variables.rho_ice=normal_uncertain('descriptor','MaterialsRhoIce', 'mean',md.materials.rho_ice,'stddev',.01); 22 md.qmu.variables.drag_coefficient=normal_uncertain('descriptor','scaled_FrictionCoefficient',... 23 'mean',ones(md.mesh.numberofvertices,1),... 24 'stddev',.01*ones(md.mesh.numberofvertices,1),... 25 'partition',md.qmu.vpartition); 24 26 25 27 %responses -
issm/trunk-jpl/test/NightlyRun/test413.m
r24821 r24836 18 18 %variables 19 19 md.qmu.variables.rho_ice=normal_uncertain('descriptor','MaterialsRhoIce','mean',md.materials.rho_ice,'stddev',.01); 20 md.qmu.variables.drag_coefficient=normal_uncertain('descriptor','scaled_FrictionCoefficient','mean',1,'stddev',.01); 21 20 md.qmu.variables.drag_coefficient=normal_uncertain('descriptor','scaled_FrictionCoefficient',... 21 'mean',ones(md.qmu.numberofpartitions,1),... 22 'stddev',.01*ones(md.qmu.numberofpartitions,1),... 23 'partition',md.qmu.vpartition); 22 24 23 25 %responses -
issm/trunk-jpl/test/NightlyRun/test414.m
r24819 r24836 25 25 26 26 %variables 27 md.qmu.variables.drag_coefficient=normal_uncertain('descriptor','scaled_FrictionCoefficient','mean',1,'stddev',.01); 27 md.qmu.variables.drag_coefficient=normal_uncertain('descriptor','scaled_FrictionCoefficient',... 28 'mean',ones(md.qmu.numberofpartitions,1),... 29 'stddev',.01*ones(md.qmu.numberofpartitions,1),... 30 'partition',md.qmu.vpartition); 28 31 29 32 %responses -
issm/trunk-jpl/test/NightlyRun/test417.m
r24819 r24836 19 19 version=IssmConfig('_DAKOTA_VERSION_'); version=version(1:3); version=str2num(version); 20 20 21 md.qmu.variables.drag_coefficient=normal_uncertain('descriptor','scaled_FrictionCoefficient','mean',1,'stddev',.01); 21 %partitioning 22 md.qmu.numberofpartitions=20; 23 md=partitioner(md,'package','chaco','npart',md.qmu.numberofpartitions,'weighting','on'); 24 md.qmu.vpartition=md.qmu.vpartition-1; 25 md.qmu.isdakota=1; 26 27 md.qmu.variables.drag_coefficient=normal_uncertain('descriptor','scaled_FrictionCoefficient',... 28 'mean',ones(md.qmu.numberofpartitions,1),... 29 'stddev',.01*ones(md.qmu.numberofpartitions,1),... 30 'partition',md.qmu.vpartition); 22 31 23 32 md.qmu.responses.MaxVel=response_function('MaxVel',[],[0.0001 0.001 0.01 0.25 0.5 0.75 0.99 0.999 0.9999]); … … 58 67 59 68 60 %partitioning61 md.qmu.numberofpartitions=20;62 md=partitioner(md,'package','chaco','npart',md.qmu.numberofpartitions,'weighting','on');63 md.qmu.vpartition=md.qmu.vpartition-1;64 md.qmu.isdakota=1;65 69 66 70 md.stressbalance.reltol=10^-5; %tighten for qmu analyses -
issm/trunk-jpl/test/NightlyRun/test444.m
r24819 r24836 49 49 version=IssmConfig('_DAKOTA_VERSION_'); version=version(1:3); version=str2num(version); 50 50 51 md.qmu.variables.drag_coefficient=normal_uncertain('descriptor','scaled_BasalforcingsFloatingiceMeltingRate','mean',1,'stddev',.1); 51 %partitioning 52 md.qmu.numberofpartitions=10; 53 md=partitioner(md,'package','chaco','npart',md.qmu.numberofpartitions,'weighting','on'); 54 md.qmu.vpartition=md.qmu.vpartition-1; 55 md.qmu.isdakota=1; 56 57 md.qmu.variables.drag_coefficient=normal_uncertain('descriptor','scaled_BasalforcingsFloatingiceMeltingRate',... 58 'mean',ones(md.qmu.numberofpartitions,1),... 59 'stddev',.1*ones(md.qmu.numberofpartitions,1),... 60 'partition',md.qmu.vpartition); 52 61 53 62 md.qmu.responses.IceMass1=response_function('Outputdefinition5',[],[0.0001 0.001 0.01 0.25 0.5 0.75 0.99 0.999 0.9999]); … … 83 92 end 84 93 85 %partitioning86 md.qmu.numberofpartitions=10;87 md=partitioner(md,'package','chaco','npart',md.qmu.numberofpartitions,'weighting','on');88 md.qmu.vpartition=md.qmu.vpartition-1;89 md.qmu.isdakota=1;90 94 91 95 md.stressbalance.reltol=10^-5; %tighten for qmu analyses -
issm/trunk-jpl/test/NightlyRun/test445.m
r24819 r24836 18 18 version=IssmConfig('_DAKOTA_VERSION_'); version=version(1:3); version=str2num(version); 19 19 20 %partitioning 21 md.qmu.numberofpartitions=10; 22 md=partitioner(md,'package','chaco','npart',md.qmu.numberofpartitions,'weighting','on'); 23 md.qmu.vpartition=md.qmu.vpartition-1; 24 md.qmu.isdakota=1; 25 20 26 %variables 21 md.qmu.variables.neff=normal_uncertain('descriptor','scaled_FrictionEffectivePressure','mean',1,'stddev',.05); 22 md.qmu.variables.neff=normal_uncertain('descriptor','scaled_BasalforcingsGeothermalflux','mean',1,'stddev',.05); 27 md.qmu.variables.neff=normal_uncertain('descriptor','scaled_FrictionEffectivePressure',... 28 'mean',ones(md.qmu.numberofpartitions,1),... 29 'stddev',.05*ones(md.qmu.numberofpartitions,1),... 30 'partition',md.qmu.vpartition); 31 md.qmu.variables.neff=normal_uncertain('descriptor','scaled_BasalforcingsGeothermalflux',... 32 'mean',ones(md.qmu.numberofpartitions,1),... 33 'stddev',.05*ones(md.qmu.numberofpartitions,1),... 34 'partition',md.qmu.vpartition); 23 35 24 36 %responses … … 56 68 end 57 69 58 %partitioning59 md.qmu.numberofpartitions=10;60 md=partitioner(md,'package','chaco','npart',md.qmu.numberofpartitions,'weighting','on');61 md.qmu.vpartition=md.qmu.vpartition-1;62 md.qmu.isdakota=1;63 70 64 71 md.stressbalance.reltol=10^-5; %tighten for qmu analyses
Note:
See TracChangeset
for help on using the changeset viewer.