Changeset 28229


Ignore:
Timestamp:
04/19/24 09:19:08 (12 months ago)
Author:
Mathieu Morlighem
Message:

CHG: estestics

File:
1 edited

Legend:

Unmodified
Added
Removed
  • issm/trunk-jpl/src/m/consistency/checkfield.m

    r25636 r28229  
    2929
    3030%get field:
    31 if exist(options,'field'),
     31if exist(options,'field')
    3232        field=getfieldvalue(options,'field');
    3333        fieldname=getfieldvalue(options,'fieldname','no fieldname');
     
    3939%check empty
    4040if exist(options,'empty')
    41         if isempty(field),
     41        if isempty(field)
    4242                md = checkmessage(md,getfieldvalue(options,'message',...
    4343                        ['field ''' fieldname ''' is empty']));
     
    4848if exist(options,'size')
    4949        fieldsize=getfieldvalue(options,'size');
    50         if ischar(fieldsize),
    51                 if strcmp(fieldsize,'universal'),
     50        if ischar(fieldsize)
     51                if strcmp(fieldsize,'universal')
    5252
    5353                        %Check that vector size will not be confusing for ModelProcessorx
    54                         if (md.mesh.numberofvertices==md.mesh.numberofelements),
     54                        if (md.mesh.numberofvertices==md.mesh.numberofelements)
    5555                                error('number of vertices is the same as number of elements');
    56                         elseif (md.mesh.numberofvertices+1==md.mesh.numberofelements),
     56                        elseif (md.mesh.numberofvertices+1==md.mesh.numberofelements)
    5757                                error('number of vertices +1 is the same as number of elements');
    58                         elseif (md.mesh.numberofvertices==md.mesh.numberofelements+1),
     58                        elseif (md.mesh.numberofvertices==md.mesh.numberofelements+1)
    5959                                error('number of vertices is the same as number of elements +1');
    6060                        end
    6161
    6262                        %Uniform field
    63                         if (size(field,1)==1),
    64                                 if (size(field,2)~=1),
     63                        if (size(field,1)==1)
     64                                if (size(field,2)~=1)
    6565                                        md = checkmessage(md,getfieldvalue(options,'message',['field ''' fieldname ''' is not supported']));
    6666                                end
    6767
    6868                        %vertex oriented input, only one column allowed
    69                         elseif (size(field,1)==md.mesh.numberofvertices),
    70                                 if (size(field,2)~=1),
     69                        elseif (size(field,1)==md.mesh.numberofvertices)
     70                                if (size(field,2)~=1)
    7171                                        md = checkmessage(md,getfieldvalue(options,'message',['field ''' fieldname ''' is not supported']));
    7272                                end
    7373
    7474                        %element oriented input, one or more column (patch) is ok
    75                         elseif (size(field,1)==md.mesh.numberofelements),
     75                        elseif (size(field,1)==md.mesh.numberofelements)
    7676                                %nothing to do here (either constant per element, or defined on nodes)
    7777
    7878                        %vertex time series
    79                         elseif (size(field,1)==md.mesh.numberofvertices+1),
    80                                 if (size(field,2)<=1),
     79                        elseif (size(field,1)==md.mesh.numberofvertices+1)
     80                                if (size(field,2)<=1)
    8181                                        md = checkmessage(md,getfieldvalue(options,'message',['field ''' fieldname ''' is not supported']));
    8282                                end
    8383
    8484                        %element time series
    85                         elseif (size(field,1)==md.mesh.numberofelements+1),
    86                                 if (size(field,2)<=1),
     85                        elseif (size(field,1)==md.mesh.numberofelements+1)
     86                                if (size(field,2)<=1)
    8787                                        md = checkmessage(md,getfieldvalue(options,'message',['field ''' fieldname ''' is not supported']));
    8888                                end
     
    122122
    123123%check NaN
    124 if getfieldvalue(options,'NaN',0);
    125         field2=reshape(field,prod(size(field)),1);
    126         if any(isnan(field2)),
     124if getfieldvalue(options,'NaN',0)
     125        if any(isnan(field(:)))
    127126                md = checkmessage(md,getfieldvalue(options,'message',...
    128127                        ['NaN values found in field ''' fieldname '''']));
     
    131130
    132131%check Inf
    133 if getfieldvalue(options,'Inf',0);
    134         field2=reshape(field,prod(size(field)),1);
    135         if any(isinf(field2)),
     132if getfieldvalue(options,'Inf',0)
     133        if any(isinf(field(:)))
    136134                md = checkmessage(md,getfieldvalue(options,'message',...
    137135                        ['Inf values found in field ''' fieldname '''']));
     
    140138
    141139%check cell
    142 if getfieldvalue(options,'cell',0);
    143         if ~iscell(field),
     140if getfieldvalue(options,'cell',0)
     141        if ~iscell(field)
    144142                md = checkmessage(md,getfieldvalue(options,'message',...
    145143                        ['field ''' fieldname ''' should be a cell']));
     
    150148if exist(options,'values')
    151149        fieldvalues=getfieldvalue(options,'values');
    152         if iscell(fieldvalues), %strings
     150        if iscell(fieldvalues) %strings
    153151                if ischar(field) | iscell(fieldvalues),
    154152                        if any(~ismember(field,fieldvalues)),
     
    169167                end
    170168        else
    171                 field2=reshape(field,prod(size(field)),1);
    172                 if isnumeric(field),
     169                field2=field(:);
     170                if isnumeric(field)
    173171                        if any(~ismember(field2,fieldvalues)),
    174172                                md = checkmessage(md,getfieldvalue(options,'message',...
     
    185183if exist(options,'>=')
    186184        lowerbound=getfieldvalue(options,'>=');
    187         field2=reshape(field,prod(size(field)),1);
     185        field2=field(:);
    188186        if getfieldvalue(options,'timeseries',0),       field2=reshape(field(1:end-1,:),prod(size(field(1:end-1,:))),1); end
    189187        if getfieldvalue(options,'singletimeseries',0), field2=reshape(field(1,:),prod(size(field(1,:))),1); end
     
    227225
    228226%Check row of stringrow
    229 if getfieldvalue(options,'stringrow',0),
     227if getfieldvalue(options,'stringrow',0)
    230228        if(size(field,1)~=1 & size(field,1)~=0),
    231229                md = checkmessage(md,getfieldvalue(options,'message',...
     
    253251
    254252%Check forcings (size and times)
    255 if getfieldvalue(options,'timeseries',0),
     253if getfieldvalue(options,'timeseries',0)
    256254        if (size(field,1)==md.mesh.numberofvertices | size(field,1)==md.mesh.numberofelements),
    257                 if size(field,2)~=1,
     255                if size(field,2)~=1
    258256                        md = checkmessage(md,getfieldvalue(options,'message',...
    259257                                ['field ''' fieldname ''' should have only one column as there are md.mesh.numberofvertices lines']));
    260258                end
    261         elseif (size(field,1)==md.mesh.numberofvertices+1 | size(field,1)==md.mesh.numberofelements+1),
     259        elseif (size(field,1)==md.mesh.numberofvertices+1 | size(field,1)==md.mesh.numberofelements+1)
    262260                if any(field(end,:)~=sort(field(end,:))),
    263261                        md = checkmessage(md,getfieldvalue(options,'message',...
    264262                                ['field ''' fieldname ''' columns should be sorted chronologically']));
    265263                end
    266                 if any(field(end,1:end-1)==field(end,2:end)),
     264                if any(field(end,1:end-1)==field(end,2:end))
    267265                        md = checkmessage(md,getfieldvalue(options,'message',...
    268266                                ['field ''' fieldname ''' columns must not contain duplicate timesteps']));
     
    275273
    276274%Check single value forcings (size and times)
    277 if getfieldvalue(options,'singletimeseries',0),
     275if getfieldvalue(options,'singletimeseries',0)
    278276        if size(field,1)==2
    279                 if any(field(end,:)~=sort(field(end,:))),
     277                if any(field(end,:)~=sort(field(end,:)))
    280278                        md = checkmessage(md,getfieldvalue(options,'message',...
    281279                                ['field ''' fieldname ''' columns should be sorted chronologically']));
    282280                end
    283                 if any(field(end,1:end-1)==field(end,2:end)),
     281                if any(field(end,1:end-1)==field(end,2:end))
    284282                        md = checkmessage(md,getfieldvalue(options,'message',...
    285283                                ['field ''' fieldname ''' columns must not contain duplicate timesteps']));
    286284                end
    287         elseif size(field,1)==1,
    288                 if size(field,2)~=1,
     285        elseif size(field,1)==1
     286                if size(field,2)~=1
    289287                        md = checkmessage(md,getfieldvalue(options,'message',...
    290288                                ['field ''' fieldname ''' should be either a scalar or have 2 lines']));
Note: See TracChangeset for help on using the changeset viewer.