def output(self): '''Write model data to netCDF4 output file''' # dump restart and/or backup file if requested times = self.engine.get_config_value('restart', 'times') if times is not None: tr = np.asarray(times) if self.tlast > 0. and np.any((tr <= self.t) & (tr > self.tlast)): self.dump_restart_file() if self.engine.get_config_value('restart', 'backup'): self.create_backup() # write output if requested if np.mod(self.t, self.engine.tout) < self.t - self.tlast: outputfile = self.engine.get_config_value('netcdf', 'outputfile') outputvars = self.engine.get_config_value('netcdf', 'outputvars') if outputfile is not None and outputvars is not None: logger.debug('Writing output at t=%0.2f...' % self.t) # get dimension data for each variable variables = {v : self.engine.get_var(v) for v in outputvars} variables['time'] = self.t netcdf.append(outputfile, idx=self.iout, variables=variables) self.iout += 1
def output(self): '''Write model data to netCDF4 output file''' if self.engine.config.has_key('netcdf'): cfg = self.engine.config['netcdf'] if self.progress.check_period(self.t, cfg['interval']): logger.debug('Writing output at t=%0.2f...' % self.t) # get dimension data for each variable variables = {v : self.engine.get_var(v) for v in cfg['outputvars']} variables['time'] = self.t variables['instance'] = ', '.join(self.engine.running) netcdf.append(cfg['outputfile'], idx=self.iout, variables=variables) self.iout += 1
def output(self): '''Write model data to netCDF4 output file''' # dump restart and/or backup file if requested times = self.engine.get_config_value('restart', 'times') if times is not None: tr = np.asarray(times) if self.tlast > 0. and np.any((tr <= self.t) & (tr > self.tlast)): logger.debug('Start writing restart file') self.dump_restart_file() if self.engine.get_config_value('restart', 'backup'): logger.debug('Start writing backup file') self.create_backup() # write output if requested if np.mod(self.t, self.engine.tout) < (self.t - self.tlast) or self.t == 0: outputfile = self.engine.get_config_value('netcdf', 'outputfile') outputvars = self.engine.get_config_value('netcdf', 'outputvars') if outputfile is not None and outputvars is not None: logger.debug('Writing output at t=%0.2f...' % self.t) # get dimension data for each variable logger.debug('Loading variables %s' % outputvars) try: variables = {v: self.engine.get_var(v) for v in outputvars} logger.debug('Setting variable: Time') variables['time'] = self.t except: logger.error('Error loading variables') logger.debug('Finished loading variables') try: netcdf.append(outputfile, idx=self.iout, variables=variables) except: logger.error('Error writing variables') # difference variables # TODO: look at outputvars.append() option try: difference_zb_aeolis = self.engine.models['aeolis']['_wrapper'].difference_zb difference_zb_xbeach = self.engine.models['xbeach']['_wrapper'].difference_zb # variables2 = {difference_zb_aeolis, difference_zb_xbeach} variables2 = {} variables2[u'difference_zb_aeolis'] = difference_zb_aeolis variables2[u'difference_zb_xbeach'] = difference_zb_xbeach variables2['time'] = self.t except: logger.error('Error loading variables: difference_zb_aeolis/difference_zb_xbeach') try: netcdf.append(outputfile, idx=self.iout, variables=variables2) except: logger.error('Error writing variables') self.iout += 1 logger.debug('Finished writing variables to %s' % outputfile)