|
| std::shared_ptr< teca_cf_writer > | shared_from_this () |
| |
| std::shared_ptr< teca_cf_writer const > | shared_from_this () const |
| |
|
| teca_cf_writer (const teca_cf_writer &src)=delete |
| |
|
| teca_cf_writer (teca_cf_writer &&src)=delete |
| |
|
teca_cf_writer & | operator= (const teca_cf_writer &src)=delete |
| |
|
teca_cf_writer & | operator= (teca_cf_writer &&src)=delete |
| |
| const char * | get_class_name () const override |
| |
|
Set the output filename. For time series the substring t% is replaced with the current time step or date. See comments on date_format below for info about date formatting.
|
| void | set_file_name (const std::string &v) |
| |
| const std::string & | get_file_name () const |
| |
|
set the format for the date to write in the filename. this requires the input dataset to have unit/calendar information if none are available, the time index is used instead. (F-HZ)
|
| void | set_date_format (const std::string &v) |
| |
| const std::string & | get_date_format () const |
| |
|
Set the first step in the range of time step to process.
|
| void | set_first_step (const long &v) |
| |
| const long & | get_first_step () const |
| |
|
Set the last step in the range of time step to process.
|
| void | set_last_step (const long &v) |
| |
| const long & | get_last_step () const |
| |
|
Set how many time steps are written to each file when the layout mode is set to number_of_steps.
|
| void | set_steps_per_file (const unsigned int &v) |
| |
| const unsigned int & | get_steps_per_file () const |
| |
|
sets the flags passed to NetCDF during file creation. (NC_CLOBBER)
|
| void | set_mode_flags (const int &v) |
| |
| const int & | get_mode_flags () const |
| |
|
if set the slowest varying dimension is specified to be NC_UNLIMITED. This has a negative impact on performance when reading the values in a single pass. However, unlimited dimensions are used ubiquitously thus by default it is set. For data being consumed by TECA performance will be better when using fixed dimensions. (1) This feature requires collective writes and is incompatible with out of order execution, and hence currently not supported.
|
| void | set_use_unlimited_dim (const int &v) |
| |
| const int & | get_use_unlimited_dim () const |
| |
|
sets the compression level used for each variable compression is not used if the value is less than or equal to 0. This feature requires collective writes and is incompatible with out of order execution, and hence currently not supported.
|
| void | set_compression_level (const int &v) |
| |
| const int & | get_compression_level () const |
| |
|
Enables MPI I/O colective buffering. Collective buffering is only valid when the spatial partitioner is enabled and the number of spatial partitions is equal to the number of MPI ranks. If set to -1 (the default) collective buffering will automatically enabled when it is possible to do so.
|
| void | set_collective_buffer (const int &v) |
| |
| const int & | get_collective_buffer () const |
| |
|
Flush files before closing them, this may be necessary if accessing data immediately.
|
| void | set_flush_files (const int &v) |
| |
| const int & | get_flush_files () const |
| |
|
Move variables to root instead of creating groups
|
| void | set_move_variables_to_root (const int &v) |
| |
| const int & | get_move_variables_to_root () const |
| |
|
Specify the arrays to write. A data array is only written to disk if it is included in this list. It is an error to not specify at least one point centered array to write
|
| size_t | get_number_of_point_arrays () |
| |
| void | append_point_array (const std::string &v) |
| |
| void | set_point_array (const std::string &v) |
| |
| void | set_point_array (size_t i, const std::string &v) |
| |
| void | set_point_arrays (const std::vector< std::string > &v) |
| |
| void | set_point_arrays (const std::initializer_list< std::string > &&l) |
| |
| const std::string & | get_point_array (size_t i) const |
| |
| const std::vector< std::string > & | get_point_arrays () const |
| |
| void | clear_point_arrays () |
| |
|
Set the list of non-geometric arrays to write.
|
| size_t | get_number_of_information_arrays () |
| |
| void | append_information_array (const std::string &v) |
| |
| void | set_information_array (const std::string &v) |
| |
| void | set_information_array (size_t i, const std::string &v) |
| |
| void | set_information_arrays (const std::vector< std::string > &v) |
| |
| void | set_information_arrays (const std::initializer_list< std::string > &&l) |
| |
| const std::string & | get_information_array (size_t i) const |
| |
| const std::vector< std::string > & | get_information_arrays () const |
| |
| void | clear_information_arrays () |
| |
|
Set the number of spatial partitions. If less than one then the number of MPI ranks is used.
|
| void | set_number_of_spatial_partitions (const long &v) |
| |
| const long & | get_number_of_spatial_partitions () const |
| |
|
enables/disables spatial partitioning in the x-direction
|
| void | set_partition_x (const int &v) |
| |
| const int & | get_partition_x () const |
| |
|
enables/disables spatial partitioning in the y-direction
|
| void | set_partition_y (const int &v) |
| |
| const int & | get_partition_y () const |
| |
|
enables/disables spatial partitioning in the z-direction
|
| void | set_partition_z (const int &v) |
| |
| const int & | get_partition_z () const |
| |
|
Sets the minimum block size for spatial partitioning in the x-direction
|
| void | set_minimum_block_size_x (const long &v) |
| |
| const long & | get_minimum_block_size_x () const |
| |
|
Sets the minimum block size for spatial partitioning in the y-direction
|
| void | set_minimum_block_size_y (const long &v) |
| |
| const long & | get_minimum_block_size_y () const |
| |
|
Sets the minimum block size for spatial partitioning in the z-direction
|
| void | set_minimum_block_size_z (const long &v) |
| |
| const long & | get_minimum_block_size_z () const |
| |
|
Set the number of temporal partitions. If set to less than one then the number of time steps is used. The temporal_partition_size property takes precedence, if it is set then the this property is ignored. The default value is zero.
|
| void | set_number_of_temporal_partitions (const long &v) |
| |
| const long & | get_number_of_temporal_partitions () const |
| |
|
Set the size of the temporal partitions. If set to less than one then the number_of_temporal_partition property is used instead. The default value is zero.
|
| void | set_temporal_partition_size (const long &v) |
| |
| const long & | get_temporal_partition_size () const |
| |
|
If set and spatial partitioner is enabled, the writer will make one request per time step using the index_request_key as the teca_index_executive would. This could be used parallelize existing algorithms over space and time.
|
| void | set_index_executive_compatability (const int &v) |
| |
| const int & | get_index_executive_compatability () const |
| |
| std::shared_ptr< teca_threaded_algorithm > | shared_from_this () |
| |
| std::shared_ptr< teca_threaded_algorithm const > | shared_from_this () const |
| |
|
| teca_threaded_algorithm (const teca_threaded_algorithm &src)=delete |
| |
|
| teca_threaded_algorithm (teca_threaded_algorithm &&src)=delete |
| |
|
teca_threaded_algorithm & | operator= (const teca_threaded_algorithm &src)=delete |
| |
|
teca_threaded_algorithm & | operator= (teca_threaded_algorithm &&src)=delete |
| |
| void | set_thread_pool_size (int n_threads) |
| |
| unsigned int | get_thread_pool_size () const noexcept |
| | Get the number of threads in the pool. More...
|
| |
| void | set_data_request_queue (const p_teca_data_request_queue &queue) |
| | explicitly set the thread pool to submit requests to More...
|
| |
| void | set_bind_threads (const int &v) |
| |
| const int & | get_bind_threads () const |
| |
| void | set_stream_size (const int &v) |
| |
| const int & | get_stream_size () const |
| |
| void | set_poll_interval (const long long &v) |
| |
| const long long & | get_poll_interval () const |
| |
| void | set_threads_per_device (const int &v) |
| |
| const int & | get_threads_per_device () const |
| |
| void | set_ranks_per_device (const int &v) |
| |
| const int & | get_ranks_per_device () const |
| |
| void | set_propagate_device_assignment (const int &v) |
| |
| const int & | get_propagate_device_assignment () const |
| |
|
| teca_algorithm (const teca_algorithm &src)=delete |
| |
|
| teca_algorithm (teca_algorithm &&src)=delete |
| |
|
teca_algorithm & | operator= (const teca_algorithm &src)=delete |
| |
|
teca_algorithm & | operator= (teca_algorithm &&src)=delete |
| |
| void | set_communicator (MPI_Comm comm) |
| |
| MPI_Comm | get_communicator () |
| | get the active communicator More...
|
| |
| virtual teca_algorithm_output_port | get_output_port (unsigned int port=0) |
| |
| void | set_input_connection (const teca_algorithm_output_port &port) |
| | set an input to this algorithm More...
|
| |
| virtual void | set_input_connection (unsigned int id, const teca_algorithm_output_port &port) |
| | set an input to this algorithm More...
|
| |
| virtual void | remove_input_connection (unsigned int id) |
| | remove input connections More...
|
| |
| void | clear_input_connections () |
| | remove all input connections More...
|
| |
| const_p_teca_dataset | get_output_data (unsigned int port=0) |
| |
| void | pop_cache (unsigned int port=0, int top=0) |
| |
| void | set_cache_size (unsigned int n) |
| | set the cache size. the default is 1. (threadsafe) More...
|
| |
| virtual int | update () |
| | execute the pipeline from this instance up. More...
|
| |
| virtual int | update (unsigned int port) |
| | execute the pipeline from this instance up. More...
|
| |
| virtual teca_metadata | update_metadata (unsigned int port=0) |
| | get meta data considering this instance up. More...
|
| |
| void | set_executive (p_teca_algorithm_executive exe) |
| | set the executive More...
|
| |
| p_teca_algorithm_executive | get_executive () |
| | get the executive More...
|
| |
| virtual void | to_stream (std::ostream &s) const |
| |
| virtual void | from_stream (std::istream &s) |
| | deserialize from the stream. More...
|
| |
| void | set_verbose (const int &v) |
| |
| const int & | get_verbose () const |
| |
A writer for Cartesian meshes in NetCDF CF2 format.
Writes data to NetCDF CF2 format. This algorithm is conceptually an execution engine capable of driving the above pipeline with our without threads and stream results in the order that they are generated placing them in the correct location in the output dataset. The output dataset is a collection of files each with a user specified number of time steps per file. The output dataset may be arranged using a fixed number of steps per file or daily, monthly, seasonal, or yearly file layouts. The total number of time steps in the output dataset is determined by the combination of the number of time steps in the input dataset and user defined subsetting if any. The writer uses MPI collective I/O to produce the files. In parallel time steps are mapped to ranks such that each rank has approximately the same number of time steps. Incoming steps are mapped to files. A given MPI rank may be writing to multiple files. The use of MPI collectives implies care must be taken in its use to avoid deadlocks.
Due to the use of MPI collectives I/O certain information must be known during the report phase of pipeline execution, before the execute phase of pipeline execution begins. The information that is needed is:
number of time steps
specified by the pipeline control index_initializer key found in metadata
produced by the source (e.g CF reader)
extent
6, 64 bit integers defining the 3
spatial dimensions of each timestep found
in metadata produced by the source (e.g CF reader)
@ spatial
map spatial extents to MPI ranks, time is processed sequentially
Definition: teca_cf_writer.h:247
point arrays
list of strings naming the point centered arrays that will be written.
set
by the user prior to execution by writer properties.
TECA_EXPORT bool set(teca_variant_array *varr, unsigned long i, PyObject *obj)
Set i'th element of the variant array to the value of the object.
Definition: teca_py_array.h:305
information arrays
list of strings naming the non-geometric arrays that will written.
set by
the user prior to execution by writer properties. See also size attribute
below.
type_code
the teca_variant_array_code naming the type of each array. this will be in
the array attributes metadata generated by the producer of the array (e.g
any algorithm that adds an array should provide this metadata).
size
a 64 bit integer declaring the size of each information array. this will be
in the array attributes metadata generated by the producer of the array (e.g
any algorithm that adds an array should provide this metadata).