Changeset 24819


Ignore:
Timestamp:
05/07/20 22:44:24 (5 years ago)
Author:
Eric.Larour
Message:

CHG: starting to simplify qmu classes, adapting to ISSM code style. Starting with normal uncertain,
using a different constructor type. Reflecting changes in all the Dakota nightly runs.

Location:
issm/trunk-jpl
Files:
16 edited

Legend:

Unmodified
Added
Removed
  • issm/trunk-jpl/src/m/classes/qmu/normal_uncertain.m

    r24436 r24819  
     1%NORMAL_UNCERTAIN class definition
    12%
    2 %  definition for the normal_uncertain class.
    3 %
    4 %  [nuv]=normal_uncertain(varargin)
    5 %
    6 %  where the required varargin are:
    7 %    descriptor    (char, description, '')
    8 %    mean          (double, mean, NaN)
    9 %    stddev        (double, standard deviation, NaN)
    10 %  and the optional varargin and defaults are:
    11 %    lower         (double, lower bound, -Inf)
    12 %    upper         (double, upper bound,  Inf)
    13 %
    14 %  note that zero arguments constructs a default instance; one
    15 %  argument of the class copies the instance; and three or more
    16 %  arguments constructs a new instance from the arguments.
    17 %
    18 %  "Copyright 2009, by the California Institute of Technology.
    19 %  ALL RIGHTS RESERVED. United States Government Sponsorship
    20 %  acknowledged. Any commercial use must be negotiated with
    21 %  the Office of Technology Transfer at the California Institute
    22 %  of Technology.  (J. Schiermeier, NTR 47078)
    23 %
    24 %  This software may be subject to U.S. export control laws.
    25 %  By accepting this  software, the user agrees to comply with
    26 %  all applicable U.S. export laws and regulations. User has the
    27 %  responsibility to obtain export licenses, or other export
    28 %  authority as may be required before exporting such information
    29 %  to foreign countries or providing access to foreign persons."
    30 %
     3%   Usage:
     4%      nuv=normal_uncertain('descriptor',descriptor,'mean',mean,'stddev',stddev,'partition',partition);
     5%      where nuv is the normal_uncertain object returned by the constructor, mean and stddev are self
     6%      explanatory.  partition is the partition vector for distributed variables. Can be a partition
     7%      vector over elements or vertices.
     8%
     9%   Example:
     10%      md.qmu.variables.rheology=normal_uncertain('descriptor','RheologyBBar','mean',1,'stddev',.05);
     11%      md.qmu.variables.rheology=normal_uncertain('descriptor','scaled_RheologyBBar','mean',1,'stddev',.05,'partition',vpartition);
     12%
     13
    3114classdef normal_uncertain
    3215    properties
     
    3417        mean      = NaN;
    3518        stddev    = NaN;
    36         lower     =-Inf;
    37         upper     = Inf;
     19                partition = [];
    3820    end
     21    methods
     22        function self=normal_uncertain(varargin) %constructor {{{
    3923
    40     methods
    41         function [nuv]=normal_uncertain(varargin)
     24                        %recover options:
     25                        options = pairoptions(varargin{:});
    4226
    43             switch nargin
     27                        %initialize fields:
     28                        self.descriptor=getfieldvalue(options,'descriptor');
     29                        self.mean=getfieldvalue(options,'mean');
     30                        self.stddev=getfieldvalue(options,'stddev');
    4431
    45 %  create a default object
    46 
    47                 case 0
    48 
    49 %  copy the object
    50 
    51                 case 1
    52                     if isa(varargin{1},'normal_uncertain')
    53                         nuv=varargin{1};
    54                     else
    55                         error('Object ''%s'' is a ''%s'' class object, not ''%s''.',...
    56                             inputname(1),class(varargin{1}),'normal_uncertain');
    57                     end
    58 
    59 %  not enough arguments
    60 
    61                 case 2
    62                     error('Construction of ''%s'' class object requires at least %d inputs.',...
    63                         'normal_uncertain',3)
    64 
    65 %  create the object from the input
    66 
    67                 otherwise
    68                     asizec=num2cell(array_size(varargin{1:min(nargin,5)}));
    69                     nuv(asizec{:})=normal_uncertain;
    70                     clear asizec
    71 
    72                     if ischar(varargin{1})
    73                         varargin{1}=cellstr(varargin{1});
    74                     end
    75                     for i=1:numel(nuv)
    76                         if (numel(varargin{1}) > 1)
    77                             nuv(i).descriptor=varargin{1}{i};
    78                         else
    79                             if numel(nuv)==1,
    80                                                                 nuv(i).descriptor=char(varargin{1});
    81                                                         else
    82                                                                 nuv(i).descriptor=[char(varargin{1}) num2str(i)];
    83                                                         end
    84                         end
    85                         if (numel(varargin{2}) > 1)
    86                             nuv(i).mean      =varargin{2}(i);
    87                         else
    88                             nuv(i).mean      =varargin{2};
    89                         end
    90                         if (numel(varargin{3}) > 1)
    91                             nuv(i).stddev    =varargin{3}(i);
    92                         else
    93                             nuv(i).stddev    =varargin{3};
    94                         end
    95                     end
    96 
    97                     if (nargin >= 4)
    98                         for i=1:numel(nuv)
    99                             if (numel(varargin{4}) > 1)
    100                                 nuv(i).lower     =varargin{4}(i);
    101                             else
    102                                 nuv(i).lower     =varargin{4};
    103                             end
    104                         end
    105                         if (nargin >= 5)
    106                             for i=1:numel(nuv)
    107                                 if (numel(varargin{5}) > 1)
    108                                     nuv(i).upper     =varargin{5}(i);
    109                                 else
    110                                     nuv(i).upper     =varargin{5};
    111                                 end
    112                             end
    113                             if (nargin > 5)
    114                                 warning('normal_uncertain:extra_arg',...
    115                                     'Extra arguments for object of class ''%s''.',...
    116                                     class(nuv));
    117                             end
    118                         end
    119                     end
    120             end
    121 
    122         end
    123 
    124         function []=disp(nuv)
     32        end %}}}
     33        function []=disp(nuv) % {{{
    12534
    12635%  display the object
     
    13342                disp(sprintf('          mean: %g'      ,nuv(i).mean));
    13443                disp(sprintf('        stddev: %g'      ,nuv(i).stddev));
    135                 disp(sprintf('         lower: %g'      ,nuv(i).lower));
    136                 disp(sprintf('         upper: %g\n'    ,nuv(i).upper));
    13744            end
    13845
    139         end
    140 
    141         function [desc]  =prop_desc(nuv,dstr)
     46        end 
     47                %}}}
     48        function [desc]  =prop_desc(nuv,dstr) % {{{
    14249            desc=cell(1,numel(nuv));
    14350            for i=1:numel(nuv)
     
    15360            end
    15461            desc=allempty(desc);
    155         end
    156         function [initpt]=prop_initpt(nuv)
    157             initpt=[];
    158         end
    159         function [lower] =prop_lower(nuv)
    160             lower=zeros(1,numel(nuv));
    161             for i=1:numel(nuv)
    162                 lower(i)=nuv(i).lower;
    163             end
    164             lower=allequal(lower,-Inf);
    165         end
    166         function [upper] =prop_upper(nuv)
    167             upper=zeros(1,numel(nuv));
    168             for i=1:numel(nuv)
    169                 upper(i)=nuv(i).upper;
    170             end
    171             upper=allequal(upper, Inf);
    172         end
    173         function [mean]  =prop_mean(nuv)
     62        end %}}}
     63        function [mean]  =prop_mean(nuv) % {{{
    17464            mean=zeros(1,numel(nuv));
    17565            for i=1:numel(nuv)
    17666                mean(i)=nuv(i).mean;
    17767            end
    178         end
    179         function [stddev]=prop_stddev(nuv)
     68        end % }}}
     69        function [stddev]=prop_stddev(nuv) % {{{
    18070            stddev=zeros(1,numel(nuv));
    18171            for i=1:numel(nuv)
    18272                stddev(i)=nuv(i).stddev;
    18373            end
    184         end
    185         function [initst]=prop_initst(nuv)
    186             initst=[];
    187         end
    188         function [stype] =prop_stype(nuv)
    189             stype={};
    190         end
    191         function [scale] =prop_scale(nuv)
    192             scale=[];
    193         end
     74        end % }}}
     75
     76        %virtual functions needed by qmu processing algorithms:
    19477                function [abscissas] =prop_abscissas(hbu) % {{{
    19578            abscissas=[];
     
    20184                        pairs_per_variable=[];
    20285        end % }}}
    203 
     86        function [initpt]=prop_initpt(nuv) % {{{
     87            initpt=[];
     88        end % }}}
     89        function [lower]  =prop_lower(nuv) % {{{
     90                        lower=[];
     91        end % }}}
     92        function [upper]  =prop_upper(nuv) % {{{
     93                        upper=[];
     94        end % }}}
     95        function [initst]=prop_initst(nuv) % {{{
     96            initst=[];
     97        end % }}}
     98        function [stype] =prop_stype(nuv) % {{{
     99            stype={};
     100        end % }}}
     101        function [scale] =prop_scale(nuv) % {{{
     102            scale=[];
     103        end % }}}
    204104    end
    205 
    206105    methods (Static)
    207         function []=dakota_write(fidi,dvar)
    208 
    209 %  collect only the variables of the appropriate class
    210 
    211             nuv=struc_class(dvar,'normal_uncertain');
    212 
    213 %  write variables
    214 
     106        function []=dakota_write(fidi,dvar) % {{{
     107                        %  collect only the variables of the appropriate class
     108                        nuv=struc_class(dvar,'normal_uncertain');
     109                        %  write variables
    215110            vlist_write(fidi,'normal_uncertain','nuv',nuv);
    216         end
     111        end % }}}
    217112    end
    218113end
  • issm/trunk-jpl/test/NightlyRun/test2085.m

    r23017 r24819  
    3636%loading love numbers
    3737field_names = {'LoveH_loading_elastic','LoveK_loading_elastic','LoveL_loading_elastic','LoveKernels_degree1','LoveKernels_degree2'};
    38 field_tolerances={1e-10,1e-10,1e-10,1e-10,1e-10};
     38field_tolerances={1e-10,1e-10,1e-10,4e-10,1e-10};
    3939field_values={...
    4040        (md.results.LoveSolution.LoveHr(:,1)),...
  • issm/trunk-jpl/test/NightlyRun/test218.m

    r24174 r24819  
    6060
    6161%variables
    62 md.qmu.variables.rheology_B=normal_uncertain('scaled_MaterialsRheologyB',1,.05);
     62md.qmu.variables.rheology_B=normal_uncertain('descriptor','scaled_MaterialsRheologyB','mean',1,'stddev',.05);
    6363
    6464%responses
  • issm/trunk-jpl/test/NightlyRun/test234.m

    r24174 r24819  
    2727
    2828%variables
    29 md.qmu.variables.surface_mass_balance=normal_uncertain('scaled_SmbMassBalance',1,0.1);
     29md.qmu.variables.surface_mass_balance=normal_uncertain('descriptor','scaled_SmbMassBalance','mean',1,'stddev',.1);
    3030
    3131%responses
  • issm/trunk-jpl/test/NightlyRun/test235.m

    r24174 r24819  
    2727
    2828%variables
    29 md.qmu.variables.surface_mass_balance=normal_uncertain('scaled_SmbMassBalance',1,100);
     29md.qmu.variables.surface_mass_balance=normal_uncertain('descriptor','scaled_SmbMassBalance','mean',1,'stddev',100);
    3030
    3131%responses
  • issm/trunk-jpl/test/NightlyRun/test244.m

    r24174 r24819  
    5151
    5252%variables
    53 md.qmu.variables.surface_mass_balanceC=normal_uncertain('scaled_SmbC',1,0.5);
     53md.qmu.variables.surface_mass_balanceC=normal_uncertain('descriptor','scaled_SmbC','mean',1,'stddev',.5);
     54
    5455Tmin=273;
    5556telms=min(md.smb.Ta(1:end-1,:),[],2);
  • issm/trunk-jpl/test/NightlyRun/test250.m

    r24174 r24819  
    2727
    2828%variables
    29 md.qmu.variables.surface_mass_balance=normal_uncertain('scaled_SmbMassBalance',1,0.1);
     29md.qmu.variables.surface_mass_balance=normal_uncertain('descriptor','scaled_SmbMassBalance','mean',1,'stddev',.1);
    3030
    3131%responses
  • issm/trunk-jpl/test/NightlyRun/test251.m

    r24174 r24819  
    2727
    2828%variables
    29 md.qmu.variables.surface_mass_balance=normal_uncertain('scaled_SmbMassBalance',1,100);
     29md.qmu.variables.surface_mass_balance=normal_uncertain('descriptor','scaled_SmbMassBalance','mean',1,'stddev',100);
    3030
    3131%responses
  • issm/trunk-jpl/test/NightlyRun/test412.m

    r24174 r24819  
    1919
    2020%variables
    21 md.qmu.variables.rho_ice=normal_uncertain('MaterialsRhoIce',md.materials.rho_ice,0.01);
    22 md.qmu.variables.drag_coefficient=normal_uncertain('scaled_FrictionCoefficient',1,0.01);
     21md.qmu.variables.rho_ice=normal_uncertain('descriptor','MaterialsRhoIce','mean',1,'stddev',.01);
     22md.qmu.variables.drag_coefficient=normal_uncertain('descriptor','scaled_FrictionCoefficient','mean',1,'stddev',.01);
     23
    2324
    2425%responses
  • issm/trunk-jpl/test/NightlyRun/test413.m

    r24174 r24819  
    1717
    1818%variables
    19 md.qmu.variables.rho_ice=normal_uncertain('MaterialsRhoIce',md.materials.rho_ice,0.01);
    20 md.qmu.variables.drag_coefficient=normal_uncertain('scaled_FrictionCoefficient',1,0.01);
     19md.qmu.variables.rho_ice=normal_uncertain('descriptor','MaterialsRhoIce','mean',1,'stddev',.01);
     20md.qmu.variables.drag_coefficient=normal_uncertain('descriptor','scaled_FrictionCoefficient','mean',1,'stddev',.01);
     21
    2122
    2223%responses
  • issm/trunk-jpl/test/NightlyRun/test414.m

    r24174 r24819  
    2525
    2626%variables
    27 md.qmu.variables.drag_coefficient=normal_uncertain('scaled_FrictionCoefficient',1,0.01);
     27md.qmu.variables.drag_coefficient=normal_uncertain('descriptor','scaled_FrictionCoefficient','mean',1,'stddev',.01);
    2828
    2929%responses
  • issm/trunk-jpl/test/NightlyRun/test417.m

    r24174 r24819  
    1919version=IssmConfig('_DAKOTA_VERSION_'); version=version(1:3); version=str2num(version);
    2020
    21 md.qmu.variables.drag_coefficient=normal_uncertain('scaled_FrictionCoefficient',1,0.01);
     21md.qmu.variables.drag_coefficient=normal_uncertain('descriptor','scaled_FrictionCoefficient','mean',1,'stddev',.01);
    2222
    2323md.qmu.responses.MaxVel=response_function('MaxVel',[],[0.0001 0.001 0.01 0.25 0.5 0.75 0.99 0.999 0.9999]);
  • issm/trunk-jpl/test/NightlyRun/test420.m

    r24174 r24819  
    1818
    1919%variables
    20 md.qmu.variables.rho_ice=normal_uncertain('MaterialsRhoIce',md.materials.rho_ice,0.01);
     20md.qmu.variables.rho_ice=normal_uncertain('descriptor','MaterialsRhoIce','mean',1,'stddev',.01);
    2121
    2222%responses
  • issm/trunk-jpl/test/NightlyRun/test440.m

    r24174 r24819  
    1818
    1919%variables
    20 md.qmu.variables.rho_ice=normal_uncertain('MaterialsRhoIce',md.materials.rho_ice,0.01);
     20md.qmu.variables.rho_ice=normal_uncertain('descriptor','MaterialsRhoIce','mean',1,'stddev',.01);
    2121
    2222%responses
  • issm/trunk-jpl/test/NightlyRun/test444.m

    r24174 r24819  
    4949version=IssmConfig('_DAKOTA_VERSION_'); version=version(1:3); version=str2num(version);
    5050
    51 md.qmu.variables.drag_coefficient=normal_uncertain('scaled_BasalforcingsFloatingiceMeltingRate',1,0.1);
     51md.qmu.variables.drag_coefficient=normal_uncertain('descriptor','scaled_BasalforcingsFloatingiceMeltingRate','mean',1,'stddev',.1);
    5252
    5353md.qmu.responses.IceMass1=response_function('Outputdefinition5',[],[0.0001 0.001 0.01 0.25 0.5 0.75 0.99 0.999 0.9999]);
  • issm/trunk-jpl/test/NightlyRun/test445.m

    r24174 r24819  
    1919
    2020%variables
    21 md.qmu.variables.neff=normal_uncertain('scaled_FrictionEffectivePressure',1,.05);
    22 md.qmu.variables.geoflux=normal_uncertain('scaled_BasalforcingsGeothermalflux',1,.05);
     21md.qmu.variables.neff=normal_uncertain('descriptor','scaled_FrictionEffectivePressure','mean',1,'stddev',.05);
     22md.qmu.variables.neff=normal_uncertain('descriptor','scaled_BasalforcingsGeothermalflux','mean',1,'stddev',.05);
    2323
    2424%responses
Note: See TracChangeset for help on using the changeset viewer.