Changeset 23761
- Timestamp:
- 02/27/19 15:33:54 (6 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk-jpl/src/m/consistency/checkfield.py
r23751 r23761 17 17 Available options: 18 18 - NaN: 1 if check that there is no NaN 19 - size: [lines cols], NaN for non checked dimensions 19 - size: [lines cols], NaN for non checked dimensions, or 'universal' for any input type (nodal, element, time series, etc) 20 20 - >: greater than provided value 21 21 - >=: greater or equal to provided value … … 63 63 if options.exist('empty'): 64 64 if not field: 65 md = md.checkmessage(options.getfieldvalue('message', \65 md = md.checkmessage(options.getfieldvalue('message', 66 66 "field '%s' is empty" % fieldname)) 67 67 … … 69 69 if options.exist('size'): 70 70 fieldsize=options.getfieldvalue('size') 71 if len(fieldsize) == 1: 72 if np.isnan(fieldsize[0]): 73 pass 74 elif np.ndim(field)==1: 75 if not np.size(field)==fieldsize[0]: 76 md = md.checkmessage(options.getfieldvalue('message',"field {} size should be {}".format(fieldname,fieldsize[0]))) 71 if type(fieldsize) == str: 72 if m.strcmp(fieldsize,'universal'): 73 74 #Check that vector size will not be confusing for ModelProcessorx 75 if (md.mesh.numberofvertices==md.mesh.numberofelements): 76 raise RuntimeError('number of vertices is the same as number of elements') 77 elif (md.mesh.numberofvertices+1==md.mesh.numberofelements): 78 raise RuntimeError('number of vertices +1 is the same as number of elements') 79 elif (md.mesh.numberofvertices==md.mesh.numberofelements+1): 80 raise RuntimeError('number of vertices is the same as number of elements +1') 81 82 #Uniform field 83 if (np.size(field,0)==1): 84 if (np.shape(field,1)!=1): 85 md = md.checkmessage(options.getfieldvalue('message',"field '{}' is not supported".format(fieldname))) 86 87 #vertex oriented input, only one column allowed 88 elif (np.shape(field,0)==md.mesh.numberofvertices): 89 if (np.shape(field,1)!=1): 90 md = md.checkmessage(options.getfieldvalue('message',"field '{}' is not supported".format(fieldname))) 91 92 #element oriented input, one or more column (patch) is ok 93 elif (np.shape(field,0)==md.mesh.numberofelements): 94 pass 95 #nothing to do here (either constant per element, or defined on nodes) 96 97 #vertex time series 98 elif (np.shape(field,0)==md.mesh.numberofvertices+1): 99 if (np.shape(field,1)<=1): 100 md = md.checkmessage(options.getfieldvalue('message',"field '{}' is not supported".format(fieldname))) 101 102 #element time series 103 elif (np.shape(field,0)==md.mesh.numberofelements+1): 104 if (np.shape(field,1)<=1): 105 md = md.checkmessage(options.getfieldvalue('message',"field '{}' is not supported".format(fieldname))) 106 107 #else not supported 108 else: 109 md = md.checkmessage(options.getfieldvalue('message',"field '{}' is not supported".format(fieldname))) 110 77 111 else: 78 try: 79 exec("md.{}=np.squeeze(field)".format(fieldname)) 80 print(('{} had been squeezed if it was a matrix with only one column'.format(fieldname))) 81 except IndexError: 82 md = md.checkmessage(options.getfieldvalue('message',"field {} should have {} dimension".format(fieldname,len(fieldsize)))) 83 elif len(fieldsize) == 2: 84 if np.isnan(fieldsize[0]): 85 if not np.size(field,1)==fieldsize[1]: 86 md = md.checkmessage(options.getfieldvalue('message',"field '%s' should have %d columns" % (fieldname,fieldsize[1]))) 87 elif np.isnan(fieldsize[1]): 88 if not np.size(field,0)==fieldsize[0]: 89 md = md.checkmessage(options.getfieldvalue('message',"field '%s' should have %d lines" % (fieldname,fieldsize[0]))) 90 elif fieldsize[1]==1: 91 if (not np.size(field,0)==fieldsize[0]): 92 md = md.checkmessage(options.getfieldvalue('message',"field '%s' size should be %d x %d" % (fieldname,fieldsize[0],fieldsize[1]))) 93 else: 94 if (not np.size(field,0)==fieldsize[0]) or (not np.size(field,1)==fieldsize[1]): 95 md = md.checkmessage(options.getfieldvalue('message',"field '%s' size should be %d x %d" % (fieldname,fieldsize[0],fieldsize[1]))) 112 raise RuntimeError("fieldsize '{}' not supported yet".format(fieldsize)) 113 114 else: 115 if len(fieldsize) == 1: 116 if np.isnan(fieldsize[0]): 117 pass 118 elif np.ndim(field)==1: 119 if not np.size(field)==fieldsize[0]: 120 md = md.checkmessage(options.getfieldvalue('message',"field {} size should be {}".format(fieldname,fieldsize[0]))) 121 else: 122 try: 123 exec("md.{}=np.squeeze(field)".format(fieldname)) 124 print(("{} had been squeezed if it was a matrix with only one column".format(fieldname))) 125 except IndexError: 126 md = md.checkmessage(options.getfieldvalue('message',"field {} should have {} dimension".format(fieldname,len(fieldsize)))) 127 elif len(fieldsize) == 2: 128 if np.isnan(fieldsize[0]): 129 if not np.size(field,1)==fieldsize[1]: 130 md = md.checkmessage(options.getfieldvalue('message',"field '%s' should have %d columns" % (fieldname,fieldsize[1]))) 131 elif np.isnan(fieldsize[1]): 132 if not np.size(field,0)==fieldsize[0]: 133 md = md.checkmessage(options.getfieldvalue('message',"field '%s' should have %d lines" % (fieldname,fieldsize[0]))) 134 elif fieldsize[1]==1: 135 if (not np.size(field,0)==fieldsize[0]): 136 md = md.checkmessage(options.getfieldvalue('message',"field '%s' size should be %d x %d" % (fieldname,fieldsize[0],fieldsize[1]))) 137 else: 138 if (not np.size(field,0)==fieldsize[0]) or (not np.size(field,1)==fieldsize[1]): 139 md = md.checkmessage(options.getfieldvalue('message',"field '%s' size should be %d x %d" % (fieldname,fieldsize[0],fieldsize[1]))) 96 140 97 141 #Check numel
Note:
See TracChangeset
for help on using the changeset viewer.