Panzer  Version of the Day
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Classes | Public Types | Public Member Functions | Protected Member Functions | Private Types | Private Attributes | List of all members
panzer::ResponseLibrary< TraitsT > Class Template Reference

#include <Panzer_ResponseLibrary.hpp>

Classes

struct  Overloader
 A struct for handling function overloading. More...
 
struct  Printer
 

Public Types

typedef TraitsT::EvalTypes TypeSeq
 

Public Member Functions

 ResponseLibrary ()
 
 ResponseLibrary (const Teuchos::RCP< WorksetContainer > &wc, const Teuchos::RCP< const GlobalIndexer > &ugi, const Teuchos::RCP< const LinearObjFactory< TraitsT > > &lof, bool residualType=false)
 
 ResponseLibrary (const ResponseLibrary &rl)
 
void initialize (const Teuchos::RCP< WorksetContainer > &wc, const Teuchos::RCP< const GlobalIndexer > &ugi, const Teuchos::RCP< const LinearObjFactory< TraitsT > > &lof)
 
void initializeResidualType (const Teuchos::RCP< WorksetContainer > &wc, const Teuchos::RCP< const GlobalIndexer > &ugi, const Teuchos::RCP< const LinearObjFactory< TraitsT > > &lof)
 
void initialize (const ResponseLibrary &rl)
 
void copyResponses (const ResponseLibrary &rl)
 
Teuchos::RCP< WorksetContainergetWorksetContainer () const
 
Teuchos::RCP< const GlobalIndexergetGlobalIndexer () const
 Get the internally stored global indexer. More...
 
Teuchos::RCP< const
LinearObjFactory< TraitsT > > 
getLinearObjFactory () const
 Get the internally stored linear object factory. More...
 
template<typename ResponseEvaluatorFactory_BuilderT >
void addResponse (const std::string &responseName, const std::vector< std::string > &blocks, const ResponseEvaluatorFactory_BuilderT &builder)
 
template<typename ResponseEvaluatorFactory_BuilderT >
void addResponse (const std::string &responseName, const std::vector< std::pair< std::string, std::string > > &sideset_blocks, const ResponseEvaluatorFactory_BuilderT &builder)
 
template<typename ResponseEvaluatorFactory_BuilderT >
void addResponse (const std::string &responseName, const std::vector< WorksetDescriptor > &wkst_desc, const ResponseEvaluatorFactory_BuilderT &builder)
 
template<typename EvalT >
Teuchos::RCP< ResponseBasegetResponse (const std::string &responseName) const
 
template<typename EvalT >
void getResponses (std::vector< Teuchos::RCP< ResponseBase > > &responses) const
 
void buildResponseEvaluators (const std::vector< Teuchos::RCP< panzer::PhysicsBlock > > &physicsBlocks, const panzer::ClosureModelFactory_TemplateManager< panzer::Traits > &cm_factory, const Teuchos::ParameterList &closure_models, const Teuchos::ParameterList &user_data, const bool write_graphviz_file=false, const std::string &graphviz_file_prefix="")
 
void buildResponseEvaluators (const std::vector< Teuchos::RCP< panzer::PhysicsBlock > > &physicsBlocks, const panzer::EquationSetFactory &eqset_factory, const panzer::ClosureModelFactory_TemplateManager< panzer::Traits > &cm_factory, const Teuchos::ParameterList &closure_models, const Teuchos::ParameterList &user_data, const bool write_graphviz_file=false, const std::string &graphviz_file_prefix="")
 
void buildResidualResponseEvaluators (const std::vector< Teuchos::RCP< panzer::PhysicsBlock > > &physicsBlocks, const panzer::EquationSetFactory &eqset_factory, const std::vector< BC > &bcs, const panzer::BCStrategyFactory &bc_factory, const panzer::ClosureModelFactory_TemplateManager< panzer::Traits > &cm_factory, const Teuchos::ParameterList &closure_models, const Teuchos::ParameterList &user_data, const bool write_graphviz_file=false, const std::string &graphviz_file_prefix="")
 
bool responseEvaluatorsBuilt () const
 
template<typename EvalT >
void addResponsesToInArgs (panzer::AssemblyEngineInArgs &input_args) const
 
template<typename EvalT >
void evaluate (const panzer::AssemblyEngineInArgs &input_args)
 
void print (std::ostream &os) const
 
void useClosureModelByEBlockInResponse (bool value)
 
void disableGather (bool value)
 
void disableScatter (bool value)
 
bool isResidualType () const
 

Protected Member Functions

void buildResponseEvaluators (const std::vector< Teuchos::RCP< panzer::PhysicsBlock > > &physicsBlocks, const Teuchos::Ptr< const panzer::EquationSetFactory > &eqset_factory, const panzer::ClosureModelFactory_TemplateManager< panzer::Traits > &cm_factory, const Teuchos::ParameterList &closure_models, const Teuchos::ParameterList &user_data, const bool write_graphviz_file, const std::string &graphviz_file_prefix)
 
void addResidualResponse ()
 
void addResidualResponsesToInArgs (Overloader< typename TraitsT::Residual >, panzer::AssemblyEngineInArgs &input_args) const
 
void addResidualResponsesToInArgs (Overloader< typename TraitsT::Jacobian >, panzer::AssemblyEngineInArgs &input_args) const
 
void addResidualResponsesToInArgs (Overloader< typename TraitsT::Tangent >, panzer::AssemblyEngineInArgs &input_args) const
 
void addResidualResponsesToInArgs (Overloader< typename TraitsT::Hessian >, panzer::AssemblyEngineInArgs &input_args) const
 
void addResponse (const std::string &responseName, const std::vector< WorksetDescriptor > &wkst_desc, const Teuchos::RCP< ResponseEvaluatorFactory_TemplateManager< TraitsT > > &modelFact_tm)
 

Private Types

typedef TypeAssocMap
< panzer::Traits::EvalTypes,
Teuchos::RCP< ResponseBase > > 
Response_TemplateManager
 
typedef std::unordered_map
< panzer::BC, Teuchos::RCP
< std::vector< std::pair
< std::string, Teuchos::RCP
< ResponseEvaluatorFactory_TemplateManager
< TraitsT >
> > > >, BC::BCHash,
BC::BCEquality
BCHashMap
 

Private Attributes

Teuchos::RCP< WorksetContainerwkstContainer_
 
Teuchos::RCP< const GlobalIndexerglobalIndexer_
 
Teuchos::RCP< const
LinearObjFactory< TraitsT > > 
linObjFactory_
 
Teuchos::RCP< FieldManagerBuilderfmb2_
 
AssemblyEngine_TemplateManager
< panzer::Traits
ae_tm2_
 
std::unordered_map
< WorksetDescriptor,
std::vector< std::pair
< std::string, Teuchos::RCP
< ResponseEvaluatorFactory_TemplateManager
< TraitsT > > > > > 
respFactories_
 
BCHashMap respBCFactories_
 
std::size_t nextBC_id
 
std::unordered_map
< std::string,
Response_TemplateManager
responseObjects_
 Store all the response objects. More...
 
bool closureModelByEBlock_
 
bool disableGather_
 
bool disableScatter_
 
bool residualType_
 
bool responseEvaluatorsBuilt_
 
Teuchos::RCP< LinearObjContainerghostedContainer_
 

Detailed Description

template<typename TraitsT>
class panzer::ResponseLibrary< TraitsT >

This contains, collects and serves as a resource for responses computed by panzer. This functions as a library where there are many "responses" maintained (as many as a user adds). When a response is maintained that simply means there is a mechansim to "reserve" it. A response is not required by any field manager until a user "reserves" it. The reservation process is done by response name and the element block or BC it is associated with. The field tag specified in the addResponse is used only for the "name" field, however that use of PHX::FieldTag reminds the user that something better be in the evaluation tree.

Definition at line 58 of file Panzer_ResponseLibrary.hpp.

Member Typedef Documentation

template<typename TraitsT>
typedef TraitsT::EvalTypes panzer::ResponseLibrary< TraitsT >::TypeSeq

Definition at line 60 of file Panzer_ResponseLibrary.hpp.

Definition at line 297 of file Panzer_ResponseLibrary.hpp.

template<typename TraitsT>
typedef std::unordered_map<panzer::BC, Teuchos::RCP<std::vector<std::pair<std::string,Teuchos::RCP<ResponseEvaluatorFactory_TemplateManager<TraitsT> > > > >, BC::BCHash,BC::BCEquality > panzer::ResponseLibrary< TraitsT >::BCHashMap
private

Definition at line 304 of file Panzer_ResponseLibrary.hpp.

Constructor & Destructor Documentation

template<typename TraitsT >
panzer::ResponseLibrary< TraitsT >::ResponseLibrary ( )

Definition at line 29 of file Panzer_ResponseLibrary_impl.hpp.

template<typename TraitsT >
panzer::ResponseLibrary< TraitsT >::ResponseLibrary ( const Teuchos::RCP< WorksetContainer > &  wc,
const Teuchos::RCP< const GlobalIndexer > &  ugi,
const Teuchos::RCP< const LinearObjFactory< TraitsT > > &  lof,
bool  residualType = false 
)

Build an initialized response library. By default this method does not initialize the response library to be a residual type. This can be set at runtime to build only residual responses by setting the residualType argument to true.

Definition at line 36 of file Panzer_ResponseLibrary_impl.hpp.

template<typename TraitsT >
panzer::ResponseLibrary< TraitsT >::ResponseLibrary ( const ResponseLibrary< TraitsT > &  rl)

Definition at line 50 of file Panzer_ResponseLibrary_impl.hpp.

Member Function Documentation

template<typename TraitsT >
void panzer::ResponseLibrary< TraitsT >::initialize ( const Teuchos::RCP< WorksetContainer > &  wc,
const Teuchos::RCP< const GlobalIndexer > &  ugi,
const Teuchos::RCP< const LinearObjFactory< TraitsT > > &  lof 
)

Initialize the response library with the appropriate objects.

Definition at line 59 of file Panzer_ResponseLibrary_impl.hpp.

template<typename TraitsT >
void panzer::ResponseLibrary< TraitsT >::initializeResidualType ( const Teuchos::RCP< WorksetContainer > &  wc,
const Teuchos::RCP< const GlobalIndexer > &  ugi,
const Teuchos::RCP< const LinearObjFactory< TraitsT > > &  lof 
)

Initialize the response library with the appropriate objects. This is in the case that no respones will be added an only a residual is desired. If addResponse is called then an exception will be raised.

Definition at line 73 of file Panzer_ResponseLibrary_impl.hpp.

template<typename TraitsT >
void panzer::ResponseLibrary< TraitsT >::initialize ( const ResponseLibrary< TraitsT > &  rl)

Initialize the response library from a previously construct response library.

Definition at line 91 of file Panzer_ResponseLibrary_impl.hpp.

template<typename TraitsT >
void panzer::ResponseLibrary< TraitsT >::copyResponses ( const ResponseLibrary< TraitsT > &  rl)

Copy all the responses from another response library. This is a different from initialize. This method only copies the responses leaving the parameters set by initialize alone. This must be called before buildResponseEvaluators.

Definition at line 101 of file Panzer_ResponseLibrary_impl.hpp.

template<typename TraitsT>
Teuchos::RCP<WorksetContainer> panzer::ResponseLibrary< TraitsT >::getWorksetContainer ( ) const
inline

Get the internally stored workset container, note this is non-const because the workset container is mostly a non-const object (uses lots of lazy evaluation).

Definition at line 106 of file Panzer_ResponseLibrary.hpp.

template<typename TraitsT>
Teuchos::RCP<const GlobalIndexer> panzer::ResponseLibrary< TraitsT >::getGlobalIndexer ( ) const
inline

Get the internally stored global indexer.

Definition at line 110 of file Panzer_ResponseLibrary.hpp.

template<typename TraitsT>
Teuchos::RCP<const LinearObjFactory<TraitsT> > panzer::ResponseLibrary< TraitsT >::getLinearObjFactory ( ) const
inline

Get the internally stored linear object factory.

Definition at line 114 of file Panzer_ResponseLibrary.hpp.

template<typename TraitsT >
template<typename ResponseEvaluatorFactory_BuilderT >
void panzer::ResponseLibrary< TraitsT >::addResponse ( const std::string &  responseName,
const std::vector< std::string > &  blocks,
const ResponseEvaluatorFactory_BuilderT &  builder 
)

Add a volumetric response using the response factory builder.

Parameters
[in]responseNameName of the response to be added.
[in]blocksElement blocks to evaluate the response over
[in]builderBuilder that builds the correct response object.

Definition at line 174 of file Panzer_ResponseLibrary_impl.hpp.

template<typename TraitsT >
template<typename ResponseEvaluatorFactory_BuilderT >
void panzer::ResponseLibrary< TraitsT >::addResponse ( const std::string &  responseName,
const std::vector< std::pair< std::string, std::string > > &  sideset_blocks,
const ResponseEvaluatorFactory_BuilderT &  builder 
)

Add a surface response using the response factory builder.

Parameters
[in]responseNameName of the response to be added.
[in]sideset_blocksSide set and element blocks to evaluate the response over (sideset name is first followed by element block id)
[in]builderBuilder that builds the correct response object.

Definition at line 200 of file Panzer_ResponseLibrary_impl.hpp.

template<typename TraitsT >
template<typename ResponseEvaluatorFactory_BuilderT >
void panzer::ResponseLibrary< TraitsT >::addResponse ( const std::string &  responseName,
const std::vector< WorksetDescriptor > &  wkst_desc,
const ResponseEvaluatorFactory_BuilderT &  builder 
)

Add a response specified by a list of WorksetDescriptor objects. The specifics of the response are specified by the response factory builder.

Parameters
[in]responseNameName of the response to be added.
[in]wkst_descA vector of descriptors describing the types of elements that make up the response.
[in]builderBuilder that builds the correct response object.

Definition at line 245 of file Panzer_ResponseLibrary_impl.hpp.

template<typename TraitsT >
template<typename EvalT >
Teuchos::RCP< ResponseBase > panzer::ResponseLibrary< TraitsT >::getResponse ( const std::string &  responseName) const

Access a response by name and evaluation type.

Parameters
[in]responseNameName of the response to be retrieved.
Returns
Returns a nonnull response object if it exists, otherwise it returns null.

Definition at line 315 of file Panzer_ResponseLibrary_impl.hpp.

template<typename TraitsT >
template<typename EvalT >
void panzer::ResponseLibrary< TraitsT >::getResponses ( std::vector< Teuchos::RCP< ResponseBase > > &  responses) const

Get the set of responses corresponding to a particular evaluation type. This will overwrite (clear) the vector.

Parameters
[in,out]responsesVector over the responses, the responses know their own names!

Definition at line 331 of file Panzer_ResponseLibrary_impl.hpp.

template<typename TraitsT>
void panzer::ResponseLibrary< TraitsT >::buildResponseEvaluators ( const std::vector< Teuchos::RCP< panzer::PhysicsBlock > > &  physicsBlocks,
const panzer::ClosureModelFactory_TemplateManager< panzer::Traits > &  cm_factory,
const Teuchos::ParameterList closure_models,
const Teuchos::ParameterList user_data,
const bool  write_graphviz_file = false,
const std::string &  graphviz_file_prefix = "" 
)
inline

Setup up field managers for all responses. Once this method is called no other responses can be added. An exception is thrown if they are.

Definition at line 174 of file Panzer_ResponseLibrary.hpp.

template<typename TraitsT>
void panzer::ResponseLibrary< TraitsT >::buildResponseEvaluators ( const std::vector< Teuchos::RCP< panzer::PhysicsBlock > > &  physicsBlocks,
const panzer::EquationSetFactory eqset_factory,
const panzer::ClosureModelFactory_TemplateManager< panzer::Traits > &  cm_factory,
const Teuchos::ParameterList closure_models,
const Teuchos::ParameterList user_data,
const bool  write_graphviz_file = false,
const std::string &  graphviz_file_prefix = "" 
)
inline

Setup up field managers for all responses. Once this method is called no other responses can be added. An exception is thrown if they are.

Definition at line 186 of file Panzer_ResponseLibrary.hpp.

template<typename TraitsT >
void panzer::ResponseLibrary< TraitsT >::buildResidualResponseEvaluators ( const std::vector< Teuchos::RCP< panzer::PhysicsBlock > > &  physicsBlocks,
const panzer::EquationSetFactory eqset_factory,
const std::vector< BC > &  bcs,
const panzer::BCStrategyFactory bc_factory,
const panzer::ClosureModelFactory_TemplateManager< panzer::Traits > &  cm_factory,
const Teuchos::ParameterList closure_models,
const Teuchos::ParameterList user_data,
const bool  write_graphviz_file = false,
const std::string &  graphviz_file_prefix = "" 
)

Setup up field managers for a residual response. This method can only be called if the residual response has been setup.

Definition at line 483 of file Panzer_ResponseLibrary_impl.hpp.

template<typename TraitsT>
bool panzer::ResponseLibrary< TraitsT >::responseEvaluatorsBuilt ( ) const
inline

Have the response evaluators been built? True only if buildResponseEvaluators has been called and run to completion.

Definition at line 213 of file Panzer_ResponseLibrary.hpp.

template<typename TraitsT >
template<typename EvalT >
void panzer::ResponseLibrary< TraitsT >::addResponsesToInArgs ( panzer::AssemblyEngineInArgs input_args) const

Add response objects to assembly data.

Definition at line 525 of file Panzer_ResponseLibrary_impl.hpp.

template<typename TraitsT >
template<typename EvalT >
void panzer::ResponseLibrary< TraitsT >::evaluate ( const panzer::AssemblyEngineInArgs input_args)

Evaluate response library for a particular evaluation type.

Definition at line 705 of file Panzer_ResponseLibrary_impl.hpp.

template<typename TraitsT >
void panzer::ResponseLibrary< TraitsT >::print ( std::ostream &  os) const

Print the contents of this response library.

Definition at line 712 of file Panzer_ResponseLibrary_impl.hpp.

template<typename TraitsT>
void panzer::ResponseLibrary< TraitsT >::useClosureModelByEBlockInResponse ( bool  value)
inline

Definition at line 230 of file Panzer_ResponseLibrary.hpp.

template<typename TraitsT>
void panzer::ResponseLibrary< TraitsT >::disableGather ( bool  value)
inline

Definition at line 233 of file Panzer_ResponseLibrary.hpp.

template<typename TraitsT>
void panzer::ResponseLibrary< TraitsT >::disableScatter ( bool  value)
inline

Definition at line 236 of file Panzer_ResponseLibrary.hpp.

template<typename TraitsT>
bool panzer::ResponseLibrary< TraitsT >::isResidualType ( ) const
inline

Definition at line 239 of file Panzer_ResponseLibrary.hpp.

template<typename TraitsT >
void panzer::ResponseLibrary< TraitsT >::buildResponseEvaluators ( const std::vector< Teuchos::RCP< panzer::PhysicsBlock > > &  physicsBlocks,
const Teuchos::Ptr< const panzer::EquationSetFactory > &  eqset_factory,
const panzer::ClosureModelFactory_TemplateManager< panzer::Traits > &  cm_factory,
const Teuchos::ParameterList closure_models,
const Teuchos::ParameterList user_data,
const bool  write_graphviz_file,
const std::string &  graphviz_file_prefix 
)
protected

Setup up field managers for all responses. Once this method is called no other responses can be added. An exception is thrown if they are.

Definition at line 395 of file Panzer_ResponseLibrary_impl.hpp.

template<typename TraitsT >
void panzer::ResponseLibrary< TraitsT >::addResidualResponse ( )
protected

Add a residual response.

Definition at line 301 of file Panzer_ResponseLibrary_impl.hpp.

template<typename TraitsT >
void panzer::ResponseLibrary< TraitsT >::addResidualResponsesToInArgs ( Overloader< typename TraitsT::Residual >  ,
panzer::AssemblyEngineInArgs input_args 
) const
protected

Add in the residual responses to the input arguments. Note only residual and Jacobian calls currently work!

Definition at line 545 of file Panzer_ResponseLibrary_impl.hpp.

template<typename TraitsT >
void panzer::ResponseLibrary< TraitsT >::addResidualResponsesToInArgs ( Overloader< typename TraitsT::Jacobian >  ,
panzer::AssemblyEngineInArgs input_args 
) const
protected

Add in the residual responses to the input arguments. Note only residual and Jacobian calls currently work!

Definition at line 583 of file Panzer_ResponseLibrary_impl.hpp.

template<typename TraitsT >
void panzer::ResponseLibrary< TraitsT >::addResidualResponsesToInArgs ( Overloader< typename TraitsT::Tangent >  ,
panzer::AssemblyEngineInArgs input_args 
) const
protected

Add in the residual responses to the input arguments. Note only residual and Jacobian calls currently work!

Definition at line 621 of file Panzer_ResponseLibrary_impl.hpp.

template<typename TraitsT >
void panzer::ResponseLibrary< TraitsT >::addResidualResponsesToInArgs ( Overloader< typename TraitsT::Hessian >  ,
panzer::AssemblyEngineInArgs input_args 
) const
protected

Add in the residual responses to the input arguments. Note only residual and Jacobian calls currently work!

Definition at line 665 of file Panzer_ResponseLibrary_impl.hpp.

template<typename TraitsT >
void panzer::ResponseLibrary< TraitsT >::addResponse ( const std::string &  responseName,
const std::vector< WorksetDescriptor > &  wkst_desc,
const Teuchos::RCP< ResponseEvaluatorFactory_TemplateManager< TraitsT > > &  modelFact_tm 
)
protected

Add in a response (for internal use only) using a template manager.

Definition at line 282 of file Panzer_ResponseLibrary_impl.hpp.

Member Data Documentation

template<typename TraitsT>
Teuchos::RCP<WorksetContainer> panzer::ResponseLibrary< TraitsT >::wkstContainer_
private

Definition at line 293 of file Panzer_ResponseLibrary.hpp.

template<typename TraitsT>
Teuchos::RCP<const GlobalIndexer> panzer::ResponseLibrary< TraitsT >::globalIndexer_
private

Definition at line 294 of file Panzer_ResponseLibrary.hpp.

template<typename TraitsT>
Teuchos::RCP<const LinearObjFactory<TraitsT> > panzer::ResponseLibrary< TraitsT >::linObjFactory_
private

Definition at line 295 of file Panzer_ResponseLibrary.hpp.

template<typename TraitsT>
Teuchos::RCP<FieldManagerBuilder> panzer::ResponseLibrary< TraitsT >::fmb2_
private

Definition at line 299 of file Panzer_ResponseLibrary.hpp.

template<typename TraitsT>
AssemblyEngine_TemplateManager<panzer::Traits> panzer::ResponseLibrary< TraitsT >::ae_tm2_
private

Definition at line 300 of file Panzer_ResponseLibrary.hpp.

template<typename TraitsT>
std::unordered_map<WorksetDescriptor, std::vector<std::pair<std::string,Teuchos::RCP<ResponseEvaluatorFactory_TemplateManager<TraitsT> > > > > panzer::ResponseLibrary< TraitsT >::respFactories_
private

Definition at line 308 of file Panzer_ResponseLibrary.hpp.

template<typename TraitsT>
BCHashMap panzer::ResponseLibrary< TraitsT >::respBCFactories_
private

Definition at line 309 of file Panzer_ResponseLibrary.hpp.

template<typename TraitsT>
std::size_t panzer::ResponseLibrary< TraitsT >::nextBC_id
private

Definition at line 310 of file Panzer_ResponseLibrary.hpp.

template<typename TraitsT>
std::unordered_map<std::string, Response_TemplateManager> panzer::ResponseLibrary< TraitsT >::responseObjects_
private

Store all the response objects.

Definition at line 313 of file Panzer_ResponseLibrary.hpp.

template<typename TraitsT>
bool panzer::ResponseLibrary< TraitsT >::closureModelByEBlock_
private

Definition at line 314 of file Panzer_ResponseLibrary.hpp.

template<typename TraitsT>
bool panzer::ResponseLibrary< TraitsT >::disableGather_
private

Definition at line 315 of file Panzer_ResponseLibrary.hpp.

template<typename TraitsT>
bool panzer::ResponseLibrary< TraitsT >::disableScatter_
private

Definition at line 316 of file Panzer_ResponseLibrary.hpp.

template<typename TraitsT>
bool panzer::ResponseLibrary< TraitsT >::residualType_
private

Definition at line 317 of file Panzer_ResponseLibrary.hpp.

template<typename TraitsT>
bool panzer::ResponseLibrary< TraitsT >::responseEvaluatorsBuilt_
private

Definition at line 319 of file Panzer_ResponseLibrary.hpp.

template<typename TraitsT>
Teuchos::RCP<LinearObjContainer> panzer::ResponseLibrary< TraitsT >::ghostedContainer_
mutableprivate

Definition at line 321 of file Panzer_ResponseLibrary.hpp.


The documentation for this class was generated from the following files: