Changeset 28229
- Timestamp:
- 04/19/24 09:19:08 (12 months ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk-jpl/src/m/consistency/checkfield.m
r25636 r28229 29 29 30 30 %get field: 31 if exist(options,'field') ,31 if exist(options,'field') 32 32 field=getfieldvalue(options,'field'); 33 33 fieldname=getfieldvalue(options,'fieldname','no fieldname'); … … 39 39 %check empty 40 40 if exist(options,'empty') 41 if isempty(field) ,41 if isempty(field) 42 42 md = checkmessage(md,getfieldvalue(options,'message',... 43 43 ['field ''' fieldname ''' is empty'])); … … 48 48 if exist(options,'size') 49 49 fieldsize=getfieldvalue(options,'size'); 50 if ischar(fieldsize) ,51 if strcmp(fieldsize,'universal') ,50 if ischar(fieldsize) 51 if strcmp(fieldsize,'universal') 52 52 53 53 %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) 55 55 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) 57 57 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) 59 59 error('number of vertices is the same as number of elements +1'); 60 60 end 61 61 62 62 %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) 65 65 md = checkmessage(md,getfieldvalue(options,'message',['field ''' fieldname ''' is not supported'])); 66 66 end 67 67 68 68 %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) 71 71 md = checkmessage(md,getfieldvalue(options,'message',['field ''' fieldname ''' is not supported'])); 72 72 end 73 73 74 74 %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) 76 76 %nothing to do here (either constant per element, or defined on nodes) 77 77 78 78 %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) 81 81 md = checkmessage(md,getfieldvalue(options,'message',['field ''' fieldname ''' is not supported'])); 82 82 end 83 83 84 84 %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) 87 87 md = checkmessage(md,getfieldvalue(options,'message',['field ''' fieldname ''' is not supported'])); 88 88 end … … 122 122 123 123 %check NaN 124 if getfieldvalue(options,'NaN',0); 125 field2=reshape(field,prod(size(field)),1); 126 if any(isnan(field2)), 124 if getfieldvalue(options,'NaN',0) 125 if any(isnan(field(:))) 127 126 md = checkmessage(md,getfieldvalue(options,'message',... 128 127 ['NaN values found in field ''' fieldname ''''])); … … 131 130 132 131 %check Inf 133 if getfieldvalue(options,'Inf',0); 134 field2=reshape(field,prod(size(field)),1); 135 if any(isinf(field2)), 132 if getfieldvalue(options,'Inf',0) 133 if any(isinf(field(:))) 136 134 md = checkmessage(md,getfieldvalue(options,'message',... 137 135 ['Inf values found in field ''' fieldname ''''])); … … 140 138 141 139 %check cell 142 if getfieldvalue(options,'cell',0) ;143 if ~iscell(field) ,140 if getfieldvalue(options,'cell',0) 141 if ~iscell(field) 144 142 md = checkmessage(md,getfieldvalue(options,'message',... 145 143 ['field ''' fieldname ''' should be a cell'])); … … 150 148 if exist(options,'values') 151 149 fieldvalues=getfieldvalue(options,'values'); 152 if iscell(fieldvalues) ,%strings150 if iscell(fieldvalues) %strings 153 151 if ischar(field) | iscell(fieldvalues), 154 152 if any(~ismember(field,fieldvalues)), … … 169 167 end 170 168 else 171 field2= reshape(field,prod(size(field)),1);172 if isnumeric(field) ,169 field2=field(:); 170 if isnumeric(field) 173 171 if any(~ismember(field2,fieldvalues)), 174 172 md = checkmessage(md,getfieldvalue(options,'message',... … … 185 183 if exist(options,'>=') 186 184 lowerbound=getfieldvalue(options,'>='); 187 field2= reshape(field,prod(size(field)),1);185 field2=field(:); 188 186 if getfieldvalue(options,'timeseries',0), field2=reshape(field(1:end-1,:),prod(size(field(1:end-1,:))),1); end 189 187 if getfieldvalue(options,'singletimeseries',0), field2=reshape(field(1,:),prod(size(field(1,:))),1); end … … 227 225 228 226 %Check row of stringrow 229 if getfieldvalue(options,'stringrow',0) ,227 if getfieldvalue(options,'stringrow',0) 230 228 if(size(field,1)~=1 & size(field,1)~=0), 231 229 md = checkmessage(md,getfieldvalue(options,'message',... … … 253 251 254 252 %Check forcings (size and times) 255 if getfieldvalue(options,'timeseries',0) ,253 if getfieldvalue(options,'timeseries',0) 256 254 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 258 256 md = checkmessage(md,getfieldvalue(options,'message',... 259 257 ['field ''' fieldname ''' should have only one column as there are md.mesh.numberofvertices lines'])); 260 258 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) 262 260 if any(field(end,:)~=sort(field(end,:))), 263 261 md = checkmessage(md,getfieldvalue(options,'message',... 264 262 ['field ''' fieldname ''' columns should be sorted chronologically'])); 265 263 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)) 267 265 md = checkmessage(md,getfieldvalue(options,'message',... 268 266 ['field ''' fieldname ''' columns must not contain duplicate timesteps'])); … … 275 273 276 274 %Check single value forcings (size and times) 277 if getfieldvalue(options,'singletimeseries',0) ,275 if getfieldvalue(options,'singletimeseries',0) 278 276 if size(field,1)==2 279 if any(field(end,:)~=sort(field(end,:))) ,277 if any(field(end,:)~=sort(field(end,:))) 280 278 md = checkmessage(md,getfieldvalue(options,'message',... 281 279 ['field ''' fieldname ''' columns should be sorted chronologically'])); 282 280 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)) 284 282 md = checkmessage(md,getfieldvalue(options,'message',... 285 283 ['field ''' fieldname ''' columns must not contain duplicate timesteps'])); 286 284 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 289 287 md = checkmessage(md,getfieldvalue(options,'message',... 290 288 ['field ''' fieldname ''' should be either a scalar or have 2 lines']));
Note:
See TracChangeset
for help on using the changeset viewer.