Main Page   Class Hierarchy   Compound List   File List   Compound Members   File Members   Related Pages   Examples  

rf_backend_interface.h File Reference

Interface class the allows implementations for either the Application side, the result file reader side (backend), or allows an "internal reader" where both the application and result file reader use the same implementation object to store and operate on a mesh. More...

#include <stdarg.h>
#include "resultlib.h"
#include "results.h"
#include "rf_mesh_interface.h"
#include "StorageBuffer.h"

Go to the source code of this file.

Compounds

class  rf_file_descriptor
class  RFFileSet
struct  rf_node_neighbors
struct  rf_node_neighborhood
class  rf_backend_impl
class  rf_backend_interface

Typedefs

typedef type_allocator<rf_file_descriptor, 1> __RFFileSet
 List of file descriptors is a set of files.

typedef type_allocator<StorageBuffer, 1> RFFileList
 List of strings to make an expandable file list.

typedef type_allocator<RFFileSet, 1> RFFileSetList
 List of file sets is a FileSetList.

typedef type_allocator<RFEntityType, 6> RFAvailList
 List of entity types. More...

typedef collection<RF_SIGNED_LONG,
less<RF_SIGNED_LONG>, 100> 
RFIdList_ord
 Ordered list of node/element identifiers.

typedef collection<int, less<
int>, 15> 
node_neighbors_t
 Ordered list of vertex neighbors.

typedef type_allocator<rf_node_neighbors, 15> node_neighbor_list
 List of all node neighborhoods.

typedef RFDoubleList rf_node_weights
 List of node weights. More...

typedef sharable_pointer<rf_backend_implrf_backend_handle
 Keep track of the implementation's so that ownership of the implementation can be shared between interfaces.

typedef sharable_pointer<rf_backend_interfacerf_interface_handle
 Keep track of the implementation's so that ownership of the interface can be shared.


Functions

template<classT> void extract_datum (T& nextValue, RFPrecType prec, const void *values, size_t idx)
 Template function to create to set the value given the void * list of return values, the precision of the values, and the index in the array to extract. More...

template<classT> void extract_datum (T& nextValue, RFPrecType prec, const void *values, int idx)
 Invokes extract_datum(T&, RFPrecType, const void *, size_t). More...

int load_datum (RFPrecType t_prec, void *to_p, int t_idx, RFPrecType f_prec, const void *from_p, int f_idx)
 Utility routine to load a destination array of specified precision at a specified index to a value from a source array of potentially different specified precision and index. More...

template<classT> rf_backend_interfacerfinterface_create (T *new_impl)
 Template function to create an interface for an instance of rf_backend_impl and any of its subclasses. More...


Detailed Description

Interface class the allows implementations for either the Application side, the result file reader side (backend), or allows an "internal reader" where both the application and result file reader use the same implementation object to store and operate on a mesh.

Do not subclass rf_backend_interface. rf_backend_interface are all of the methods that must be implemented for standard result implementations. Subclass rfinfo_base (or its subclasses) to change the implementation of how mesh stored or operated on. Subclass rf_backend (or any of its subclasses) to create a new backend. Can also create a backend out of a subclass of rfinfo_base, but users should take in doing so.

Applications can either use rf_backend_interface::open() to read a result file, or create an empty domain or start from an empty implementation by calling rfmi_empty_impl() and operating on the interface.

A reader consists of up to total of eleven methods. The Five methods that are required are

o rf_backend_interface::user_external_close() to close file list.

o rf_backend_interface::user_parse_inputinit() to handle an input line from backend for external backends. It's job to parse the inputinit line and set any parameters required in the info structure or local object.

o rf_backend_interface::user_external_load() to open file list,

o rf_backend_interface::user_fileset_load() to open list of file sets.

o rf_backend_interface::user_external_grid() to load the nodes of the result,

o rf_backend_interface::user_external_scalar() to load a result.

The following two methods are used to define unstructured elements and families. If users are creating an unstructured mesh, the must define

o rf_backend_interface::user_external_elements() to load the unstructured elements.

Users can assign elements to families in this method. If that is the case, the default implementation of user_external_groups will suffice. The default implementation is a NOP routine that returns 1.

Alternatively, a user can choose to define families of elements by reimplementing

o rf_backend_interface::user_external_groups()

There are four additional optional methods

o rf_backend_interface::user_file_descriptor() to simply determine the information in the result file. Cannot truly implement until all readers converted because it means returning less information in inputinit Mostly to avoid creating the mesh. But might simply bypass by having Mom3D implement the interface to build mesh/elements and then nothing gained by not building the mesh.

o rf_backend_interface::user_external_postmesh() to do any post mesh creation reading of file. This might be the logical place to define results for the result library depending on your solver

o rf_backend_interface::user_external_iblank()

o rf_backend_interface::user_free_local() to free any local data that the user has defined.

Copyright (c) 2001-2002, ICEMCFD Engineering a subsidary of ANSYS INC all rights reserved.

Author(s):
Forest Rouse

Revision: 1.104
on
Date: 2005/02/09 21:45:29
Source: /home/josie/cvs/resultlib/rf_backend_interface.h,v


Typedef Documentation

typedef type_allocator<RFEntityType, 6> RFAvailList
 

List of entity types.

Reserved for future use.

typedef RFDoubleList rf_node_weights
 

List of node weights.

Indexing by rf_node_neighbors.


Function Documentation

template<classT>
void extract_datum ( T & nextValue,
RFPrecType prec,
const void * values,
size_t idx ) [inline]
 

Template function to create to set the value given the void * list of return values, the precision of the values, and the index in the array to extract.

Used mainly with results.

Parameters:
nextValue   extracted value from the array.
prec   precision of data in the values array.
values   array of values.
idx   index of array to extract data.

template<classT>
void extract_datum ( T & nextValue,
RFPrecType prec,
const void * values,
int idx ) [inline]
 

Invokes extract_datum(T&, RFPrecType, const void *, size_t).

This version simply allows integers to be specified as indices.

int load_datum ( RFPrecType t_prec,
void * to_p,
int t_idx,
RFPrecType f_prec,
const void * from_p,
int f_idx ) [inline]
 

Utility routine to load a destination array of specified precision at a specified index to a value from a source array of potentially different specified precision and index.

Parameters:
to_prec   destination precision.
to_p   destination array.
tidx   destination index.
from_prec   source precision.
from_p   source array.
fidx   source index.
Returns:
1 success, 0 failure.
Examples:
example_struct.cxx, example_uns.cxx, and exuns_impl.cxx.

template<classT>
rf_backend_interface * rfinterface_create ( T * new_impl ) [inline]
 

Template function to create an interface for an instance of rf_backend_impl and any of its subclasses.

Parameters:
new_impl   pointer to rf_backend_impl instance to wrap with an interface.
Returns:
pointer to interface. Application owns instance and hould delete when done.
Examples:
rf_exuns_impl.cxx.


Generated at Wed Mar 2 11:16:45 2005 for Result Library by doxygen1.2.0 written by Dimitri van Heesch, © 1997-2000