Index: wflow-py/wflow/wflow_bmi.py =================================================================== diff -u -r42fd01a5e3fcb6d0fa9f8f9880c74cd282dc0d0f -rdbb856e2a6f375e5c7f2db502d7ca90b9fbcf421 --- wflow-py/wflow/wflow_bmi.py (.../wflow_bmi.py) (revision 42fd01a5e3fcb6d0fa9f8f9880c74cd282dc0d0f) +++ wflow-py/wflow/wflow_bmi.py (.../wflow_bmi.py) (revision dbb856e2a6f375e5c7f2db502d7ca90b9fbcf421) @@ -9,6 +9,7 @@ import wflow_lib import numpy as np from wflow.pcrut import setlogger +from pcraster import * class wflowbmi_light(object): """ @@ -272,11 +273,11 @@ if self.wrtodisk: fname = str(self.currenttimestep) + "_get_" + long_var_name + ".map" - arpcr = self.dynModel.numpy2pcr(self.dynModel.Scalar, src, -999) + arpcr = numpy2pcr(Scalar, src, -999) self.bmilogger.debug("Writing to disk: " + fname) - self.dynModel.report(arpcr,fname) + report(arpcr,fname) - return np.flipud(src) + return src def set_var(self, long_var_name, src): """ @@ -289,9 +290,9 @@ if self.wrtodisk: fname = str(self.currenttimestep) + "_set_" + long_var_name + ".map" - arpcr = self.dynModel.numpy2pcr(self.dynModel.Scalar, np.flipud(src), -999) + arpcr = numpy2pcr(Scalar, src, -999) self.bmilogger.debug("Writing to disk: " + fname) - self.dynModel.report(arpcr,fname) + report(arpcr,fname) if long_var_name in self.outputonlyvars: self.bmilogger.error("set_var: " + long_var_name + " is listed as an output only variable, cannot set. " + str(self.outputonlyvars)) @@ -302,7 +303,7 @@ self.dynModel.wf_setValues(long_var_name,float(src)) else: self.bmilogger.debug("set_var: (grid) " + long_var_name) - self.dynModel.wf_setValuesAsNumpy(long_var_name, np.flipud(src)) + self.dynModel.wf_setValuesAsNumpy(long_var_name, src) def set_var_slice(self, name, start, count, var): @@ -314,7 +315,7 @@ For some implementations it can be equivalent and more efficient to do: `get_var(name)[start[0]:start[0]+count[0], ..., start[n]:start[n]+count[n]] = var` """ - tmp = np.flipud(self.get_var(name).copy()) + tmp = self.get_var(name).copy() try: # if we have start and count as a number we can do this tmp[start:(start+count)] = var @@ -323,7 +324,7 @@ slices = [np.s_[i:(i+n)] for i,n in zip(start, count)] tmp[slices] - self.set_var(name, name, np.flipud(tmp)) + self.set_var(name, name, tmp) def set_var_index(self, name, index, var): """ @@ -335,9 +336,9 @@ and more efficient to do: `get_var(name).flat[index] = var` """ - tmp = np.flipud(self.get_var(name).copy()) + tmp = self.get_var(name).copy() tmp.flat[index] = var - self.set_var(name, name, np.flipud(tmp)) + self.set_var(name, name, tmp) def inq_compound(self, name): """ @@ -394,7 +395,7 @@ logstr = os.getenv('wflow_bmi_loglevel', 'ERROR') self.wrtodisk = False - if os.getenv("wflow_bmi_writedisk",'False') in 'True': + if os.getenv("wflow_bmi_writetodisk",'False') in 'True': self.wrtodisk = True if logstr in 'ERROR': @@ -408,6 +409,8 @@ self.bmilogger = setlogger('wflow_bmi.log','wflow_bmi_logging',thelevel=self.loggingmode) self.bmilogger.info("__init__: wflow_bmi object initialised.") + if self.wrtodisk: + self.bmilogger.warn('Will write all bmi set and get grids to disk!...') def initialize_config(self, filename, loglevel=logging.DEBUG): @@ -836,17 +839,14 @@ if long_var_name in self.inputoutputvars: ret = self.dynModel.wf_supplyMapAsNumpy(long_var_name) self.bmilogger.debug("get_value: " + long_var_name) + if self.wrtodisk: fname = str(self.currenttimestep) + "_get_" + long_var_name + ".map" - arpcr = self.dynModel.numpy2pcr(self.dynModel.Scalar, ret, -999) + arpcr = numpy2pcr(Scalar, ret, -999) self.bmilogger.debug("Writing to disk: " + fname) - self.dynModel.report(arpcr,fname) + report(arpcr,fname) - try: - fret = np.flipud(ret) - return fret - except: - return ret + return ret else: self.bmilogger.error("get_value: " + long_var_name + ' not in list of output values ' + str(self.inputoutputvars)) return None @@ -863,7 +863,7 @@ if long_var_name in self.inputoutputvars: self.bmilogger.debug("get_value_at_indices: " + long_var_name + ' at ' + str(inds)) - npmap = np.flipud(self.dynModel.wf_supplyMapAsNumpy(long_var_name)) + npmap = self.dynModel.wf_supplyMapAsNumpy(long_var_name) return npmap[inds] else: self.bmilogger.error("get_value_at_indices: " + long_var_name + ' not in list of output values ' + str(self.inputoutputvars)) @@ -886,9 +886,9 @@ raise ValueError("set_value_at_indices: " + long_var_name + " is listed as an output only variable, cannot set. " + str(self.outputonlyvars)) else: self.bmilogger.debug("set_value_at_indices: " + long_var_name + ' at ' + str(inds)) - npmap = np.flipud(self.dynModel.wf_supplyMapAsNumpy(long_var_name)) + npmap = self.dynModel.wf_supplyMapAsNumpy(long_var_name) npmap[inds] = src - self.dynModel.wf_setValuesAsNumpy(long_var_name,np.flipud(npmap)) + self.dynModel.wf_setValuesAsNumpy(long_var_name,npmap) def get_grid_type(self, long_var_name): """ @@ -970,7 +970,7 @@ """ self.bmilogger.debug("get_grid_y: " + long_var_name) - return np.flipud(self.dynModel.wf_supplyMapYAsNumpy()) + return self.dynModel.wf_supplyMapYAsNumpy() def get_grid_z(self, long_var_name): """ @@ -981,7 +981,7 @@ :return: Numpy array of doubles: z coordinate of grid cell center for each grid cell, in the same order as the values returned by function get_value. """ self.bmilogger.debug("get_grid_z: " + long_var_name) - return np.flipud(self.dynModel.wf_supplyMapZAsNumpy()) + return self.dynModel.wf_supplyMapZAsNumpy() def get_var_units(self, long_var_name): """ @@ -1016,9 +1016,9 @@ self.bmilogger.debug("set_value: " + long_var_name + ":" + str(src)) if self.wrtodisk: fname = str(self.currenttimestep) + "_set_" + long_var_name + ".map" - arpcr = self.dynModel.numpy2pcr(self.dynModel.Scalar, src, -999) + arpcr = numpy2pcr(Scalar, src, -999) self.bmilogger.debug("Writing to disk: " + fname) - self.dynModel.report(arpcr,fname) + report(arpcr,fname) if long_var_name in self.outputonlyvars: self.bmilogger.error("set_value: " + long_var_name + " is listed as an output only variable, cannot set. " + str(self.outputonlyvars)) @@ -1029,7 +1029,7 @@ self.dynModel.wf_setValues(long_var_name,float(src)) else: self.bmilogger.debug("set_value: (grid) " + long_var_name) - self.dynModel.wf_setValuesAsNumpy(long_var_name, np.flipud(src)) + self.dynModel.wf_setValuesAsNumpy(long_var_name, src) def get_grid_connectivity(self, long_var_name): """