コード例 #1
0
ファイル: model.py プロジェクト: openearth/windsurf
    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
コード例 #2
0
ファイル: model.py プロジェクト: openearth/xbeach-mi
    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
コード例 #3
0
ファイル: model.py プロジェクト: Leynse/windsurf
    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)