Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030 #ifndef TSFPRODUCTVECTORSPACEIMPL_HPP
00031 #define TSFPRODUCTVECTORSPACEIMPL_HPP
00032
00033 #include "Thyra_DefaultProductVectorSpace.hpp"
00034 #include "TSFVectorSpaceDecl.hpp"
00035
00036 using namespace TSFExtended;
00037 using namespace Teuchos;
00038
00039
00040
00041 namespace TSFExtended
00042 {
00043
00044
00045 template <class Scalar> inline
00046 Teuchos::RCP<const Thyra::VectorSpaceBase<Scalar> >
00047 productSpace(const Array<VectorSpace<Scalar> >& spaces)
00048 {
00049 Array<RCP<const Thyra::VectorSpaceBase<Scalar> > > data(spaces.size());
00050 for (int i=0; i<spaces.size(); i++)
00051 {
00052 data[i] = spaces[i].ptr();
00053 }
00054 return rcp(new Thyra::DefaultProductVectorSpace<Scalar>(data.size(), &(data[0])));
00055 }
00056
00057
00058
00059 template <class Scalar> inline
00060 Teuchos::RCP<const Thyra::VectorSpaceBase<Scalar> >
00061 productSpace(VectorSpace<Scalar>& s1)
00062 {
00063 Array<VectorSpace<Scalar> > s;
00064 s.append(s1);
00065 return productSpace(s);
00066 }
00067
00068
00069 template <class Scalar> inline
00070 Teuchos::RCP<const Thyra::VectorSpaceBase<Scalar> >
00071 productSpace(VectorSpace<Scalar>& s1,
00072 VectorSpace<Scalar>& s2)
00073 {
00074 Array<VectorSpace<Scalar> > s;
00075 s.append(s1);
00076 s.append(s2);
00077 return productSpace(s);
00078 }
00079
00080
00081 template <class Scalar> inline
00082 Teuchos::RCP<const Thyra::VectorSpaceBase<Scalar> >
00083 productSpace(VectorSpace<Scalar>& s1,VectorSpace<Scalar>& s2,
00084 VectorSpace<Scalar>& s3)
00085 {
00086 Array<VectorSpace<Scalar> > s;
00087 s.append(s1);
00088 s.append(s2);
00089 s.append(s3);
00090 return productSpace(s);
00091 }
00092
00093
00094
00095 }
00096
00097
00098
00099
00100
00101
00102 #endif