TN-01-2_ImplementationTensorregionsLibraryNektar ================================================ .. meta:: :description: technical note :keywords: Report,2060042-TN-01,D1.1:,Implementation,of,TensorRegions,library,in,Nektar++,Chris,Cantwell,&,Spencer,Sherwin,,Imperial,College,London,,David,Moxey,,King’s,College,London,30th,March,2022,Contents,1,Introduction,2,Implementation,2.1,The,TensorRegion,class,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,2.2,The,TensorStorage,class,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,2.2.1,The,TensorStorage::View,class,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,3,Example,Usage,3.1,Constructing,the,constituent,MultiRegions,objects,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,Initialising,a,TensorRegion,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,3.2,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,3.3,Initialising,storage,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,3.4,Views,on,a,TensorStorage,object,4,API,Documentation,1,Introduction,1,2,2,2,3,3,3,4,4,4,5,This,report,outlines,the,initial,stages,of,development,of,the,TensorRegions,library,in,line,with,Deliverable,1.1.,Nektar++,currently,supports,high-order,finite,element,expansions,on,one-,dimensional,,two-dimensional,and,three-dimensional,elements,,including,a,range,of,regular,and,simplex,elements.,The,need,to,solve,higher-dimensional,partial,differential,equations,(PDEs),in,modelling,plasma,kinetics,–,such,as,the,Vlasov-Poisson,equation,,necessitates,an,extension,of,the,code,to,support,higher-dimensional,finite,element,spaces.,The,construction,of,these,high-dimensional,problems,naturally,lends,itself,to,a,formulation,of,the,corresponding,high-dimensional,finite,element,space,as,a,tensor,product,of,lower-dimensional,finite,element,spaces.,This,has,several,advantages,,obtained,from,the,ability,to,leverage,existing,infrastructure,in,Nektar++,,including,basis,functions,,finite,element,operators,and,solver,tech-,niques.,The,TensorRegions,library,aims,to,capitalise,on,this,concept,and,provide,a,framework,in,which,high-dimensional,PDEs,can,be,solved.,1,2,Implementation,This,deliverable,comprises,an,implementation,of,the,underpinning,objects,with,documentation,describing,their,API,and,use,(appended,to,this,document).,This,lays,the,foundation,for,de-,liverable,2.1,,which,provides,implementation,of,the,core,finite,element,operators,within,the,TensorRegions,library.,The,code,is,available,in,MR,1325,of,the,Nektar++,project:,https://gitlab.nektar.info/nektar/nektar/-/merge,requests/1325,The,TensorRegions,library,is,currently,comprised,of,three,core,classes:,(cid:136),TensorRegion:,This,encapsulates,a,high-dimensional,finite,element,space,,constructed,as,a,tensor-product,of,two,or,more,lower-dimensional,finite,element,spaces.,(cid:136),TensorStorage:,This,encapsulates,a,high-dimensional,solution,on,a,TensorRegion,,al-,lowing,access,to,the,data,also,through,lower-dimensional,slices,on,which,the,existing,lower-dimensional,algorithms,and,infrastructure,can,be,applied.,(cid:136),TensorStorage::View:,This,provides,transparent,access,to,a,lower-dimensional,subspace,of,the,solution.,2.1,The,TensorRegion,class,Construction,of,a,TensorRegion,is,from,the,constituent,MultiRegions,objects.,These,should,be,constructed,a,priori,and,passed,to,the,TensorRegion.,Member,routines,are,provided,to,query,the,number,of,dimensions,and,the,size,of,those,respective,dimensions.,Placeholders,for,finite,element,operators,are,required,,which,will,be,completed,for,Deliverable,2.1.,Storage,for,a,solution,to,a,high-dimensional,problem,on,a,TensorRegion,is,not,stored,internally,,but,rather,in,the,separate,TensorStorage,class,(see,Section,2.2.,2.2,The,TensorStorage,class,The,TensorStorage,class,is,templated,on,the,type,of,data,to,be,stored.,This,is,commonly,NekDouble,(aka,double),in,Nektar++,,but,enables,future,support,for,mixed-precision.,TensorStorage,objects,should,be,initialised,through,an,existing,TensorRegion,object.,This,ensures,it,is,configured,with,the,correct,dimensions,compatible,with,the,underlying,finite,ele-,ment,expansions,,but,also,passes,a,pointer,to,the,TensorRegion,object,into,the,TensorStorage,object,to,allow,for,later,interrogation.,Member,routines,are,provided,to,query,the,number,of,dimensions,and,the,size,of,those,respective,dimensions.,The,[],operator,is,overloaded,to,allow,linear,access,to,the,data.,Data,is,ordered,with,the,first,dimension,indexed,fastest.,The,TensorStorage,object,is,also,aware,of,the,nature,of,the,data,being,stored.,In,the,context,of,Nektar++,this,indicates,whether,the,data,represents,physical,space,values,,or,spectral/hp,element,coefficients.,Finally,,the,class,enables,the,construction,of,lower-dimensional,views,on,the,data.,2,2.2.1,The,TensorStorage::View,class,The,TensorStorage::View,class,provides,a,view,onto,a,low-dimensional,slice,through,a,TensorStorage,object.,It,allows,both,read,and,write,access,to,the,underlying,data.,3,Example,Usage,In,this,section,,we,outline,the,example,usage,of,the,currently,available,data,structures.,This,code,is,taken,from,the,demo,code,available,in:,nektar++/library/Demos/TensorRegions/Domain.cpp,To,use,the,TensorRegions,library,,we,first,need,to,include,the,necessary,headers,from,Nektar++.,As,well,as,TensorRegion.h,,we,also,need,to,include,headers,for,the,constituent,MultiRegion,classes,and,the,session,reader.,#include,,#include,,#include,,#include,,3.1,Constructing,the,constituent,MultiRegions,objects,At,the,start,of,the,program,,we,need,to,establish,a,session,and,read,in,the,mesh.,The,input,session,should,comprise,of,two,or,more,domains,,which,will,be,used,to,initialise,the,different,MultiRegions,objects,on,which,the,TensorRegion,is,based.,LibUtilities::SessionReaderSharedPtr,vSession,=,LibUtilities::SessionReader::CreateInstance(argc,,argv);,//,read,in,mesh,SpatialDomains::MeshGraphSharedPtr,graph1D,=,SpatialDomains::MeshGraph::Read(vSession);,We,can,now,identify,the,number,of,domains,present,and,extract,information,about,the,com-,posites,and,boundary,conditions,used:,//,Read,the,geometry,and,the,expansion,information,size_t,nDomains,=,graph1D->GetDomain().size();,const,std::vector,domain,=,graph1D->GetDomain();,SpatialDomains::BoundaryConditions,Allbcs(vSession,,graph1D);,bool,SetToOneSpaceDimension,=,true;,We,are,now,ready,to,construct,the,low-dimensional,constituent,expansion,objects,on,which,our,TensorRegion,will,be,based:,//,Construct,the,constituent,expansions,std::vector,exps(nDomains);,for,(unsigned,int,i,=,0;,i,<,nDomains;,++i),{,exps[i],=,MemoryManager::AllocateSharedPtr(,vSession,,graph1D,,domain[i],,Allbcs,,vSession->GetVariable(0),,SetToOneSpaceDimension);,},3,3.2,Initialising,a,TensorRegion,A,TensorRegion,object,maybe,initialised,explicitly,from,two,MultiRegions,objects,,or,from,a,std::vector,of,MultiRegion,objects.,We,use,the,latter,in,this,case,,even,though,the,example,only,contains,two,domains,in,the,tensor.,//,Construct,a,TensorRegion,from,the,expansions,TensorRegions::TensorRegion,tr(exps);,3.3,Initialising,storage,To,store,a,solution,on,a,TensorRegion,,we,utilise,the,TensorStorage,class.,To,allocate,such,an,object,of,appropriate,size,,we,do,not,instantiate,it,directly,,but,rather,call,the,member,function,AllocateStorage(),of,the,TensorRegion,class,,which,correctly,configures,the,storage,object,for,that,TensorRegion.,We,can,print,out,associated,characteristics,of,the,TensorStorage,object,to,verify,it,has,been,created,correctly.,//,Allocate,a,TensorStorage,object,to,hold,a,discrete,solution,TensorRegions::TensorRegionStorageSharedPtr,st,=,tr.AllocateStorage();,",<<,st->dims(),<<,endl;,cout,<<,"Number,of,dimensions:,cout,<<,"Total,tensor,storage,size:,",<<,st->size(),<<,endl;,for,(size_t,i,=,0;,i,<,st->dims();,++i),{,cout,<<,"Dim,",<<,i,<<,",has,size,",<<,st->size(i),<<,",points.",<<,endl;,},3.4,Views,on,a,TensorStorage,object,A,TensorStorage::View,object,presents,a,read-write,interface,to,a,subset,of,the,underlying,tensor,storage,object.,This,enables,transparent,operation,along,a,slice,of,the,storage.,For,performance,reasons,,one,can,extract,this,slice,into,a,separate,(and,contiguous,in,memory),Nektar++,Array,object.,This,data,can,also,be,injected,back,into,the,underlying,TensorStorage,object,(not,shown).,//,Construct,views,on,the,TensorStorage,object,to,operate,on,slices,of,the,//,data,along,different,directions.,TensorRegions::TensorRegionStorage::View,st0,=,st->slice(0,,{0,0});,TensorRegions::TensorRegionStorage::View,st1,=,st->slice(1,,{0,0});,cout,<<,"Size,of,slice,0,is,",<<,st0.size(),<<,endl;,cout,<<,"Size,of,slice,1,is,",<<,st1.size(),<<,endl;,//,Update,TensorStorage,object,through,View.,for,(int,i,=,0;,i,<,st1.size();,++i),{,st1[i],=,i;,},//,Extract,Array,data,from,View,Array,data0,=,st0.extract();,Array,data1,=,st1.extract();,cout,<<,"Size,of,slice,0,data,is,",<<,data0.size(),<<,endl;,cout,<<,"Size,of,slice,1,data,is,",<<,data1.size(),<<,endl;,//,Display,all,entries,of,TensorStorage,object.,for,(int,i,=,0;,i,<,st->size();,++i),{,cout,<<,(*st)[i],<<,endl;,4,},4,API,Documentation,The,remainder,of,this,report,documents,the,programming,API,to,the,TensorRegions,library.,5,Nektar++,TensorRegions,Generated,by,Doxygen,1.9.1,1,Namespace,Index,1.1,Namespace,List,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,2,Hierarchical,Index,2.1,Class,Hierarchy,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,3,Class,Index,3.1,Class,List,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,4,File,Index,4.1,File,List,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,5,Namespace,Documentation,5.1,Nektar,Namespace,Reference,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,5.2,Nektar::TensorRegions,Namespace,Reference,.,.,.,.,.,.,.,.,.,5.2.1,Typedef,Documentation,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,5.2.1.1,TensorRegionSharedPtr,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,5.2.1.2,TensorRegionStorage,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,5.2.1.3,TensorRegionStorageSharedPtr,.,.,.,.,.,.,.,.,.,.,.,.,.,.,5.2.1.4,TensorStorageSharedPtr,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,5.3,TensorRegions,Namespace,Reference,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,5.3.1,Detailed,Description,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,6,Class,Documentation,6.1,Nektar::TensorRegions::TensorRegion,Class,Reference,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,6.1.1,Detailed,Description,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,6.1.2,Constructor,&,Destructor,Documentation,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,6.1.2.1,TensorRegion(),[1/2],.,.,.,.,.,.,.,.,.,.,.,.,.,6.1.2.2,TensorRegion(),[2/2],.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,6.1.2.3,∼TensorRegion(),.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,6.1.3,Member,Function,Documentation,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,6.1.3.1,AllocateStorage(),.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,6.1.3.2,BwdTrans(),.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,6.1.3.3,FwdTrans(),.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,6.1.3.4,GetCoords(),.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,6.1.3.5,GetExpList(),.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,6.1.3.6,GetNumCoeffs(),.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,6.1.3.7,GetNumPoints(),.,.,.,.,.,.,.,.,.,.,6.1.3.8,IProductWRTBase(),.,.,.,.,.,.,.,6.1.3.9,IProductWRTDerivBase(),.,.,.,.,.,6.1.3.10,PhysDeriv(),.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,6.1.3.11,PhysEvaluate(),.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,6.1.4,Member,Data,Documentation,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,6.1.4.1,m_exp,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,Generated,by,Doxygen,i,1,1,3,3,5,5,7,7,9,9,9,9,10,10,10,10,10,10,11,11,12,12,12,13,13,13,13,14,14,14,14,15,15,15,16,16,16,16,16,ii,6.1.4.2,m_numCoeffs,.,.,.,.,.,.,.,.,.,.,.,6.1.4.3,m_numPoints,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,6.2,Nektar::TensorRegions::TensorStorage<,DataType,>,Class,Template,Reference,.,.,.,.,.,.,.,.,.,.,.,6.2.1,Detailed,Description,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,6.2.2,Member,Enumeration,Documentation,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,6.2.2.1,State,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,6.2.3,Constructor,&,Destructor,Documentation,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,6.2.3.1,TensorStorage(),[1/4],.,.,.,.,.,.,.,.,.,.,.,.,.,6.2.3.2,TensorStorage(),[2/4],.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,6.2.3.3,∼TensorStorage(),.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,6.2.3.4,TensorStorage(),[3/4],.,.,.,.,.,.,.,.,.,.,.,.,.,6.2.3.5,TensorStorage(),[4/4],.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,6.2.4,Member,Function,Documentation,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,6.2.4.1,create(),[1/2],6.2.4.2,create(),[2/2],.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,6.2.4.3,dims(),.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,6.2.4.4,getState(),.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,6.2.4.5,operator[](),[1/2],.,.,.,.,.,.,.,.,.,.,.,.,.,6.2.4.6,operator[](),[2/2],.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,6.2.4.7,setState(),.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,6.2.4.8,size(),[1/2],.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,6.2.4.9,size(),[2/2],.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,6.2.4.10,slice(),.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,6.2.5,Member,Data,Documentation,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,6.2.5.1,m_data,.,6.2.5.2,m_sizes,.,6.2.5.3,m_state,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,6.3,Nektar::TensorRegions::TensorStorage<,DataType,>::View,Class,Reference,.,.,.,.,.,.,.,.,.,.,.,.,.,6.3.1,Detailed,Description,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,6.3.2,Constructor,&,Destructor,Documentation,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,6.3.2.1,View(),.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,6.3.3,Member,Function,Documentation,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,6.3.3.1,computeOffsetStride(),.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,6.3.3.2,extract(),.,6.3.3.3,inject(),.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,6.3.3.4,operator[](),[1/2],.,.,.,.,.,.,.,.,.,.,.,.,.,6.3.3.5,operator[](),[2/2],.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,6.3.3.6,shift(),.,.,6.3.3.7,size(),.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,6.3.4,Member,Data,Documentation,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,6.3.4.1,m_coord,.,6.3.4.2,m_dim,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,17,17,17,19,19,19,19,20,20,20,21,21,21,22,22,23,23,23,24,24,25,25,26,26,26,26,27,27,28,28,28,29,29,29,30,30,31,31,32,32,32,32,Generated,by,Doxygen,6.3.4.3,m_offset,.,6.3.4.4,m_stride,.,6.3.4.5,m_ts,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,7,File,Documentation,7.1,TensorRegion.cpp,File,Reference,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,7.2,TensorRegion.h,File,Reference,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,7.3,TensorRegions.hpp,File,Reference,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,7.4,TensorRegionsDeclspec.h,File,Reference,.,.,.,.,.,.,.,.,.,.,.,7.4.1,Macro,Definition,Documentation,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,7.4.1.1,TENSOR_REGIONS_EXPORT,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,7.5,TensorStorage.hpp,File,Reference,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,iii,33,33,33,35,35,35,36,36,36,36,36,Generated,by,Doxygen,Chapter,1,Namespace,Index,1.1,Namespace,List,Here,is,a,list,of,all,namespaces,with,brief,descriptions:,.,.,.,.,.,.,.,Nektar,.,.,Nektar::TensorRegions,.,.,TensorRegions,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,Namespace,encapsulating,algorithms,and,data,structures,for,constructing,high-dimensional,.,.,high-order,finite,element,spaces,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,9,9,10,Generated,by,Doxygen,2,Namespace,Index,Generated,by,Doxygen,Chapter,2,Hierarchical,Index,2.1,Class,Hierarchy,This,inheritance,list,is,sorted,roughly,,but,not,completely,,alphabetically:,std::enable_shared_from_this,Nektar::TensorRegions::TensorStorage<,DataType,>,.,.,.,Nektar::TensorRegions::TensorRegion,.,Nektar::TensorRegions::TensorStorage<,DataType,>::View,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,17,11,27,.,.,Generated,by,Doxygen,4,Hierarchical,Index,Generated,by,Doxygen,Chapter,3,Class,Index,3.1,Class,List,Here,are,the,classes,,structs,,unions,and,interfaces,with,brief,descriptions:,Nektar::TensorRegions::TensorRegion,High-dimensional,region,,comprising,of,a,tensor-product,of,two,MultiRegions,.,.,.,.,.,.,.,.,.,11,Nektar::TensorRegions::TensorStorage<,DataType,>,Storage,container,for,TensorRegions,solution,.,.,Nektar::TensorRegions::TensorStorage<,DataType,>::View,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,Represents,a,one-dimensional,view,onto,a,TensorStorage,object,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,17,.,.,.,.,27,Generated,by,Doxygen,6,Class,Index,Generated,by,Doxygen,Chapter,4,File,Index,4.1,File,List,Here,is,a,list,of,all,files,with,brief,descriptions:,.,.,TensorRegion.cpp,.,TensorRegion.h,.,.,.,.,TensorRegions.hpp,.,.,TensorRegionsDeclspec.h,TensorStorage.hpp,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,35,35,36,36,36,Generated,by,Doxygen,8,File,Index,Generated,by,Doxygen,Chapter,5,Namespace,Documentation,5.1,Nektar,Namespace,Reference,Namespaces,•,TensorRegions,5.2,Nektar::TensorRegions,Namespace,Reference,Classes,•,class,TensorRegion,High-dimensional,region,,comprising,of,a,tensor-product,of,two,MultiRegions.,•,class,TensorStorage,Storage,container,for,TensorRegions,solution.,Typedefs,•,using,TensorRegionStorage,=,TensorStorage<,NekDouble,>,Double-precision,floating-point,specialisation,of,a,TensorStorage.,•,using,TensorRegionStorageSharedPtr,=,std::shared_ptr<,TensorRegionStorage,>,Shared,pointer,to,a,double-precision,floating-point,TensorStorage,object.,•,using,TensorRegionSharedPtr,=,std::shared_ptr<,TensorRegion,>,A,shared,pointer,to,a,TensorRegion,object.,•,template,using,TensorStorageSharedPtr,=,std::shared_ptr<,TensorStorage<,DataType,>,>,A,shared,pointer,to,a,TensorStorage,object.,5.2.1,Typedef,Documentation,Generated,by,Doxygen,10,Namespace,Documentation,5.2.1.1,TensorRegionSharedPtr,using,Nektar::TensorRegions::TensorRegionSharedPtr,=,typedef,std::shared_ptr,A,shared,pointer,to,a,TensorRegion,object.,Definition,at,line,67,of,file,TensorRegion.h.,5.2.1.2,TensorRegionStorage,using,Nektar::TensorRegions::TensorRegionStorage,=,typedef,TensorStorage,Double-precision,floating-point,specialisation,of,a,TensorStorage.,Definition,at,line,15,of,file,TensorRegion.h.,5.2.1.3,TensorRegionStorageSharedPtr,using,Nektar::TensorRegions::TensorRegionStorageSharedPtr,=,typedef,std::shared_ptr,Shared,pointer,to,a,double-precision,floating-point,TensorStorage,object.,Definition,at,line,17,of,file,TensorRegion.h.,5.2.1.4,TensorStorageSharedPtr,template,using,Nektar::TensorRegions::TensorStorageSharedPtr,=,typedef,std::shared_ptr,>,A,shared,pointer,to,a,TensorStorage,object.,Definition,at,line,376,of,file,TensorStorage.hpp.,5.3,TensorRegions,Namespace,Reference,Namespace,encapsulating,algorithms,and,data,structures,for,constructing,high-dimensional,high-order,finite,ele-,ment,spaces.,5.3.1,Detailed,Description,Namespace,encapsulating,algorithms,and,data,structures,for,constructing,high-dimensional,high-order,finite,ele-,ment,spaces.,Generated,by,Doxygen,Chapter,6,Class,Documentation,6.1,Nektar::TensorRegions::TensorRegion,Class,Reference,High-dimensional,region,,comprising,of,a,tensor-product,of,two,MultiRegions.,#include,,Public,Member,Functions,•,TensorRegion,(std::vector<,MultiRegions::ExpListSharedPtr,>,exp),Construct,a,new,TensorRegion,object,from,one,or,more,MultiRegions,objects.,•,TensorRegion,(const,TensorRegion,&pSrc),Construct,a,new,TensorRegion,object,from,an,existing,object.,•,∼TensorRegion,(),Destroy,the,TensorRegion,object.,•,TensorRegionStorageSharedPtr,AllocateStorage,(),Allocates,a,compatible,TensorStorage,object.,•,MultiRegions::ExpListSharedPtr,GetExpList,(int,index),Access,a,constituent,MultiRegions,object.,•,size_t,GetNumPoints,(),•,size_t,GetNumCoeffs,(),•,void,BwdTrans,(const,TensorStorage<,NekDouble,>,&inarray,,TensorStorage<,NekDouble,>,&outarray),•,void,IProductWRTBase,(const,TensorStorage<,NekDouble,>,&inarray,,TensorStorage<,NekDouble,>,&out-,array),•,void,IProductWRTDerivBase,(unsigned,int,dir,,const,TensorStorage<,NekDouble,>,&inarray,,TensorStorage<,NekDouble,>,&outarray),•,void,PhysDeriv,(unsigned,int,dir,,const,TensorStorage<,NekDouble,>,&inarray,,TensorStorage<,NekDouble,>,&outarray),•,void,FwdTrans,(const,TensorStorage<,NekDouble,>,&inarray,,TensorStorage<,NekDouble,>,&outarray),•,void,GetCoords,(Array<,OneD,,Array<,OneD,,NekDouble,>>,coords),•,NekDouble,PhysEvaluate,(Array<,OneD,,NekDouble,>,coords),Generated,by,Doxygen,Class,Documentation,12,Private,Attributes,•,std::vector<,MultiRegions::ExpListSharedPtr,>,m_exp,List,of,constituent,expansion,lists.,•,size_t,m_numPoints,Total,number,of,points,in,tensor.,•,size_t,m_numCoeffs,Total,number,of,coefficients,in,tensor.,6.1.1,Detailed,Description,High-dimensional,region,,comprising,of,a,tensor-product,of,two,MultiRegions.,A,TensorRegion,represents,a,high-dimensional,finite,element,expansion.,It,is,constructed,through,a,tensor-product,of,two,or,more,lower-,dimensional,MultiRegions,expansions,,defined,by,independent,meshes.,The,solution,storage,for,a,TensorRegion,is,provided,by,the,TensorStorage,class.,Finite,element,operators,are,constructed,by,apply-,ing,the,sub-factorisation,approach,,deferring,to,the,lower-dimensional,consistuent,MultiRegions,classes,for,their,implementation.,Definition,at,line,20,of,file,TensorRegion.h.,6.1.2,Constructor,&,Destructor,Documentation,6.1.2.1,TensorRegion(),[1/2],Nektar::TensorRegions::TensorRegion::TensorRegion,(,std::vector<,MultiRegions::ExpListSharedPtr,>,subspaces,),Construct,a,new,TensorRegion,object,from,one,or,more,MultiRegions,objects.,Parameters,subspaces,Vector,of,constituent,subspaces.,ASSERTL0(subspaces.size(),<=,2,,"TensorRegion,currently,only,supports,2,subspaces."),m_exp,=,subspaces;,m_numPoints,=,1;,m_numCoeffs,=,1;,for,(auto,&e,:,m_exp),{,Definition,at,line,27,of,file,TensorRegion.cpp.,28,{,29,30,31,32,33,34,35,36,37,38,},m_numPoints,*=,e->GetNpoints();,m_numCoeffs,*=,e->GetNcoeffs();,},References,m_exp,,m_numCoeffs,,and,m_numPoints.,Generated,by,Doxygen,6.1,Nektar::TensorRegions::TensorRegion,Class,Reference,13,6.1.2.2,TensorRegion(),[2/2],Nektar::TensorRegions::TensorRegion::TensorRegion,(,const,TensorRegion,&,pSrc,),Construct,a,new,TensorRegion,object,from,an,existing,object.,Parameters,pSrc,Existing,TensorRegion,object.,:,m_exp(pSrc.m_exp),,Definition,at,line,45,of,file,TensorRegion.cpp.,46,47,48,49,{,50,51,},m_numPoints(pSrc.m_numPoints),,m_numCoeffs(pSrc.m_numCoeffs),//,Nothing,to,do,6.1.2.3,∼TensorRegion(),Nektar::TensorRegions::TensorRegion::∼TensorRegion,(,),Destroy,the,TensorRegion,object.,Definition,at,line,57,of,file,TensorRegion.cpp.,58,{,59,60,},6.1.3,Member,Function,Documentation,6.1.3.1,AllocateStorage(),TensorRegionStorageSharedPtr,Nektar::TensorRegions::TensorRegion::AllocateStorage,(,),Allocates,a,compatible,TensorStorage,object.,Returns,TensorRegionStorageSharedPtr,std::vector,sizes;,for,(int,i,=,0;,i,<,m_exp.size();,++i),{,Definition,at,line,67,of,file,TensorRegion.cpp.,68,{,69,70,71,72,73,74,75,},},return,TensorRegionStorage::create(sizes);,sizes.push_back(m_exp[i]->GetNpoints());,References,Nektar::TensorRegions::TensorStorage<,DataType,>::create(),,and,m_exp.,Generated,by,Doxygen,14,6.1.3.2,BwdTrans(),void,Nektar::TensorRegions::TensorRegion::BwdTrans,(,const,TensorStorage<,NekDouble,>,&,inarray,,TensorStorage<,NekDouble,>,&,outarray,),Class,Documentation,//,ASSERTL0(inarray.size(),>=,nm0*nm1,,"Input,array,is,of,incorrect,size.");,//,ASSERTL0(outarray.size(),>=,np0*np1,,"Output,array,is,of,incorrect,size.");,//,Array,x;,boost::ignore_unused(inarray,,outarray);,//,const,int,nm0,=,m_exp[0]->GetNcoeffs();,//,const,int,nm1,=,m_exp[1]->GetNcoeffs();,//,const,int,np0,=,m_exp[0]->GetNpoints();,//,const,int,np1,=,m_exp[1]->GetNpoints();,Definition,at,line,101,of,file,TensorRegion.cpp.,104,{,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,},//,//,Transpose,data,//,Array,tmp(np0*nm1);,//,for,(int,j,=,0;,j,<,nm1;,++j),{,//,//,//,//,},//,//,Apply,second,dimension,bwdtrans,//,for,(int,j,=,0;,j,<,np0;,++j),{,//,//,},//,//,Apply,first,dimension,bwdtrans,//,for,(int,i,=,0;,i,<,nm1;,++i),{,//,//,},for,(int,i,=,0;,i,<,np0;,++i),{,},tmp[i*nm1,+,j],=,outarray[j*np0,+,i];,m_exp[1]->BwdTrans(tmp,+,j*np0,,x,=,outarray,+,j*np1);,m_exp[0]->BwdTrans(inarray,+,i*nm0,,x,=,outarray,+,i*np0);,6.1.3.3,FwdTrans(),void,Nektar::TensorRegions::TensorRegion::FwdTrans,(,const,TensorStorage<,NekDouble,>,&,inarray,,TensorStorage<,NekDouble,>,&,outarray,),Definition,at,line,159,of,file,TensorRegion.cpp.,162,{,163,164,},boost::ignore_unused(inarray,,outarray);,6.1.3.4,GetCoords(),void,Nektar::TensorRegions::TensorRegion::GetCoords,(,Array<,OneD,,Array<,OneD,,NekDouble,>>,coords,),6.1.3.5,GetExpList(),MultiRegions::ExpListSharedPtr,Nektar::TensorRegions::TensorRegion::GetExpList,(,int,index,),Access,a,constituent,MultiRegions,object.,Generated,by,Doxygen,6.1,Nektar::TensorRegions::TensorRegion,Class,Reference,15,Parameters,index,The,index,of,the,MultiRegion,object,to,access.,Returns,MultiRegions::ExpListSharedPtr,Definition,at,line,83,of,file,TensorRegion.cpp.,84,{,85,86,87,88,},return,m_exp[index];,ASSERTL0(index,>=,m_exp.size(),,"Index,out,of,range.");,References,m_exp.,6.1.3.6,GetNumCoeffs(),size_t,Nektar::TensorRegions::TensorRegion::GetNumCoeffs,(,),Definition,at,line,96,of,file,TensorRegion.cpp.,97,{,98,99,},return,m_numCoeffs;,References,m_numCoeffs.,6.1.3.7,GetNumPoints(),size_t,Nektar::TensorRegions::TensorRegion::GetNumPoints,(,),Definition,at,line,91,of,file,TensorRegion.cpp.,92,{,93,94,},return,m_numPoints;,References,m_numPoints.,6.1.3.8,IProductWRTBase(),void,Nektar::TensorRegions::TensorRegion::IProductWRTBase,(,const,TensorStorage<,NekDouble,>,&,inarray,,TensorStorage<,NekDouble,>,&,outarray,),Definition,at,line,136,of,file,TensorRegion.cpp.,139,{,140,141,},boost::ignore_unused(inarray,,outarray);,Generated,by,Doxygen,16,Class,Documentation,6.1.3.9,IProductWRTDerivBase(),void,Nektar::TensorRegions::TensorRegion::IProductWRTDerivBase,(,unsigned,int,dir,,const,TensorStorage<,NekDouble,>,&,inarray,,TensorStorage<,NekDouble,>,&,outarray,),Definition,at,line,143,of,file,TensorRegion.cpp.,147,{,148,149,},boost::ignore_unused(dir,,inarray,,outarray);,6.1.3.10,PhysDeriv(),void,Nektar::TensorRegions::TensorRegion::PhysDeriv,(,unsigned,int,dir,,const,TensorStorage<,NekDouble,>,&,inarray,,TensorStorage<,NekDouble,>,&,outarray,),Definition,at,line,151,of,file,TensorRegion.cpp.,155,{,156,157,},boost::ignore_unused(dir,,inarray,,outarray);,6.1.3.11,PhysEvaluate(),NekDouble,Nektar::TensorRegions::TensorRegion::PhysEvaluate,(,Array<,OneD,,NekDouble,>,coords,),6.1.4,Member,Data,Documentation,6.1.4.1,m_exp,std::vector,Nektar::TensorRegions::TensorRegion::m_exp,[private],List,of,constituent,expansion,lists.,Definition,at,line,61,of,file,TensorRegion.h.,Referenced,by,AllocateStorage(),,GetExpList(),,and,TensorRegion().,Generated,by,Doxygen,6.2,Nektar::TensorRegions::TensorStorage<,DataType,>,Class,Template,Reference,17,6.1.4.2,m_numCoeffs,size_t,Nektar::TensorRegions::TensorRegion::m_numCoeffs,[private],Total,number,of,coefficients,in,tensor.,Definition,at,line,63,of,file,TensorRegion.h.,Referenced,by,GetNumCoeffs(),,and,TensorRegion().,6.1.4.3,m_numPoints,size_t,Nektar::TensorRegions::TensorRegion::m_numPoints,[private],Total,number,of,points,in,tensor.,Definition,at,line,62,of,file,TensorRegion.h.,Referenced,by,GetNumPoints(),,and,TensorRegion().,6.2,Nektar::TensorRegions::TensorStorage<,DataType,>,Class,Template,Reference,Storage,container,for,TensorRegions,solution.,#include,,Inheritance,diagram,for,Nektar::TensorRegions::TensorStorage<,DataType,>:,Classes,•,class,View,Represents,a,one-dimensional,view,onto,a,TensorStorage,object.,Generated,by,Doxygen,Nektar::TensorRegions::TensorStorage<,DataType,>std::enable_shared_from_this<,TensorStorage<,DataType,>,>,18,Public,Types,Class,Documentation,•,enum,State,{,ePhys,,,eCoeff,},Describes,whether,storage,represents,physical,values,or,spectral/hp,element,coefficients.,Public,Member,Functions,•,TensorStorage,(const,TensorStorage,&pSrc),Construct,a,new,TensorStorage,object,from,an,existing,object.,•,TensorStorage,(TensorStorage,&&pSrc),Construct,a,new,TensorStorage,object,from,an,existing,object,(move,semantics).,•,virtual,∼TensorStorage,(),Destroy,a,TensorRegions,object.,•,size_t,dims,(),Returns,the,number,of,dimensions,of,the,TensorStorage,object.,•,size_t,size,(),Returns,the,total,size,of,the,TensorStorage,object.,•,size_t,size,(const,size_t,idx),Returns,the,size,of,the,TensorStorage,object.,•,DataType,&,operator[,],(size_t,idx),Access,an,element,of,the,storage,container.,•,DataType,operator[,],(size_t,idx),const,Access,an,element,of,the,storage,container.,•,enum,State,getState,(),Returns,whether,the,storage,represents,physical,solution,or,spectral/hp,element,coefficients.,•,void,setState,(enum,State,state=ePhys),Sets,whether,storage,is,in,physical,space,or,coefficient,space.,•,View,slice,(unsigned,int,dim,,const,std::vector<,size_t,>,&coord),Constructs,a,TensorStorage:::View,on,a,high-dimensional,TensorStorage,object,,corresponding,to,a,single,constituent,dimension.,Static,Public,Member,Functions,•,static,std::shared_ptr<,TensorStorage<,DataType,>,>,create,(const,size_t,size1,,const,size_t,size2,,const,DataType,val=0.0),Factory,for,creating,a,TensorStorage,object.,•,static,std::shared_ptr<,TensorStorage<,DataType,>,>,create,(const,std::vector<,size_t,>,sizes,,const,DataType,val=0.0),Factory,for,creating,a,TensorStorage,object.,Private,Member,Functions,•,TensorStorage,(const,size_t,size1,,const,size_t,size2,,const,DataType,val=0.0),Construct,a,new,TensorStorage,object,with,two,given,sizes.,•,TensorStorage,(const,std::vector<,size_t,>,sizes,,const,DataType,val=0.0),Construct,a,new,TensorStorage,object,with,two,given,sizes.,Generated,by,Doxygen,6.2,Nektar::TensorRegions::TensorStorage<,DataType,>,Class,Template,Reference,19,Private,Attributes,•,Array<,OneD,,NekDouble,>,m_data,Storage,for,actual,data.,•,std::vector<,size_t,>,m_sizes,Sizes,for,each,sub-component,of,the,tensor.,•,enum,TensorStorage::State,m_state,=,ePhys,Flag,indicating,if,data,is,in,coeff,or,physical,state.,6.2.1,Detailed,Description,template,class,Nektar::TensorRegions::TensorStorage<,DataType,>,Storage,container,for,TensorRegions,solution.,Data,is,stored,fastest,in,the,lowest,dimension.,Template,Parameters,DataType,The,type,of,data,stored,by,the,container.,Definition,at,line,28,of,file,TensorStorage.hpp.,6.2.2,Member,Enumeration,Documentation,6.2.2.1,State,template,enum,Nektar::TensorRegions::TensorStorage::State,Describes,whether,storage,represents,physical,values,or,spectral/hp,element,coefficients.,Enumerator,ePhys,Physical,values.,eCoeff,Spectral/hp,element,coefficients.,Definition,at,line,36,of,file,TensorStorage.hpp.,{,36,37,38,39,ePhys,,eCoeff,};,///<,Physical,values,///<,Spectral/hp,element,coefficients,6.2.3,Constructor,&,Destructor,Documentation,Generated,by,Doxygen,20,Class,Documentation,6.2.3.1,TensorStorage(),[1/4],template,Nektar::TensorRegions::TensorStorage<,DataType,>::TensorStorage,(,const,TensorStorage<,DataType,>,&,pSrc,),[inline],Construct,a,new,TensorStorage,object,from,an,existing,object.,Parameters,pSrc,Existing,TensorStorage,object.,:,m_data(pSrc.m_data),,Definition,at,line,208,of,file,TensorStorage.hpp.,209,210,211,212,213,m_sizes(pSrc.m_sizes),//,Nothing,to,do,},{,6.2.3.2,TensorStorage(),[2/4],template,Nektar::TensorRegions::TensorStorage<,DataType,>::TensorStorage,(,TensorStorage<,DataType,>,&&,pSrc,),[inline],Construct,a,new,TensorStorage,object,from,an,existing,object,(move,semantics).,Parameters,pSrc,Existing,temporary,TensorStorage,object.,:,Array(std::move(pSrc)),,Definition,at,line,221,of,file,TensorStorage.hpp.,222,223,224,225,226,//,Nothing,to,do,{,},m_sizes(std::move(pSrc.m_sizes)),6.2.3.3,∼TensorStorage(),template,virtual,Nektar::TensorRegions::TensorStorage<,DataType,>::∼TensorStorage,(,),[inline],,[virtual],Destroy,a,TensorRegions,object.,Definition,at,line,232,of,file,TensorStorage.hpp.,233,234,235,},{,Generated,by,Doxygen,6.2,Nektar::TensorRegions::TensorStorage<,DataType,>,Class,Template,Reference,21,6.2.3.4,TensorStorage(),[3/4],template,Nektar::TensorRegions::TensorStorage<,DataType,>::TensorStorage,(,const,size_t,size1,,const,size_t,size2,,const,DataType,val,=,0.0,),[inline],,[private],Construct,a,new,TensorStorage,object,with,two,given,sizes.,Parameters,size1,First,component,size.,size2,Second,component,size.,val,Initial,value,for,all,elements.,Definition,at,line,348,of,file,TensorStorage.hpp.,349,350,351,352,353,m_sizes({size1,,size2}),//,Nothing,to,do,},{,:,m_data(Array(size1,*,size2,,val)),,6.2.3.5,TensorStorage(),[4/4],template,Nektar::TensorRegions::TensorStorage<,DataType,>::TensorStorage,(,const,std::vector<,size_t,>,sizes,,const,DataType,val,=,0.0,),[inline],,[private],Construct,a,new,TensorStorage,object,with,two,given,sizes.,Parameters,sizes,Vector,of,arbitrary,number,of,sizes,>,0,val,Initial,vlaue,for,all,elements.,{,:,m_sizes(sizes),Definition,at,line,361,of,file,TensorStorage.hpp.,362,363,364,365,366,367,368,369,370,371,size,*=,s;,},},m_data,=,Array(size,,val);,ASSERTL1(!sizes.empty(),,"Must,have,at,least,one,size.");,int,size,=,1;,for,(auto,&s,:,sizes),{,References,Nektar::TensorRegions::TensorStorage<,DataType,>::m_data,,and,Nektar::TensorRegions::Tensor←(cid:45),Storage<,DataType,>::size().,6.2.4,Member,Function,Documentation,Generated,by,Doxygen,22,6.2.4.1,create(),[1/2],Class,Documentation,template,static,std::shared_ptr,>,Nektar::TensorRegions::TensorStorage<,Data←(cid:45),Type,>::create,(,const,size_t,size1,,const,size_t,size2,,const,DataType,val,=,0.0,),[inline],,[static],Factory,for,creating,a,TensorStorage,object.,Parameters,size1,size2,val,Size,in,first,dimension.,Size,in,second,dimension.,Default,value.,Returns,std::shared_ptr>,{,Definition,at,line,183,of,file,TensorStorage.hpp.,184,185,186,187,188,ASSERTL0(size1,>,0,,"Size1,must,be,greater,than,zero.");,ASSERTL0(size2,>,0,,"Size2,must,be,greater,than,zero.");,return,std::shared_ptr(size1,,size2,,189,val));,},Referenced,by,Nektar::TensorRegions::TensorRegion::AllocateStorage().,6.2.4.2,create(),[2/2],template,static,std::shared_ptr,>,Nektar::TensorRegions::TensorStorage<,Data←(cid:45),Type,>::create,(,const,std::vector<,size_t,>,sizes,,const,DataType,val,=,0.0,),[inline],,[static],Factory,for,creating,a,TensorStorage,object.,Parameters,sizes,val,Vector,of,sizes,for,all,dimensions.,Default,value.,Returns,std::shared_ptr>,Definition,at,line,198,of,file,TensorStorage.hpp.,Generated,by,Doxygen,6.2,Nektar::TensorRegions::TensorStorage<,DataType,>,Class,Template,Reference,23,return,std::shared_ptr(sizes,,val));,199,200,201,{,},6.2.4.3,dims(),template,size_t,Nektar::TensorRegions::TensorStorage<,DataType,>::dims,(,),[inline],Returns,the,number,of,dimensions,of,the,TensorStorage,object.,Definition,at,line,241,of,file,TensorStorage.hpp.,242,243,244,return,m_sizes.size();,},{,References,Nektar::TensorRegions::TensorStorage<,DataType,>::m_sizes.,6.2.4.4,getState(),template,enum,State,Nektar::TensorRegions::TensorStorage<,DataType,>::getState,(,),[inline],Returns,whether,the,storage,represents,physical,solution,or,spectral/hp,element,coefficients.,Returns,enum,State,Definition,at,line,294,of,file,TensorStorage.hpp.,306,307,308,return,m_state;,},{,References,Nektar::TensorRegions::TensorStorage<,DataType,>::m_data.,6.2.4.5,operator[](),[1/2],template,DataType&,Nektar::TensorRegions::TensorStorage<,DataType,>::operator[,],(,size_t,idx,),[inline],Access,an,element,of,the,storage,container.,Parameters,idx,Generated,by,Doxygen,24,Returns,DataType&,Class,Documentation,Definition,at,line,281,of,file,TensorStorage.hpp.,282,283,284,return,m_data[idx];,{,},References,Nektar::TensorRegions::TensorStorage<,DataType,>::m_data.,6.2.4.6,operator[](),[2/2],template,DataType,Nektar::TensorRegions::TensorStorage<,DataType,>::operator[,],(,size_t,idx,),const,[inline],Access,an,element,of,the,storage,container.,This,routine,provides,read-only,access,to,the,storage,container,,which,works,with,const,objects.,Parameters,idx,Index,to,access.,Returns,DataType,Definition,at,line,294,of,file,TensorStorage.hpp.,295,296,297,return,m_data[idx];,},{,6.2.4.7,setState(),template,void,Nektar::TensorRegions::TensorStorage<,DataType,>::setState,(,enum,State,state,=,ePhys,),[inline],Sets,whether,storage,is,in,physical,space,or,coefficient,space.,Definition,at,line,314,of,file,TensorStorage.hpp.,315,316,317,m_state,=,state;,{,},References,Nektar::TensorRegions::TensorStorage<,DataType,>::m_state.,Generated,by,Doxygen,6.2,Nektar::TensorRegions::TensorStorage<,DataType,>,Class,Template,Reference,25,6.2.4.8,size(),[1/2],template,size_t,Nektar::TensorRegions::TensorStorage<,DataType,>::size,(,),[inline],Returns,the,total,size,of,the,TensorStorage,object.,Returns,size_t,{,Definition,at,line,252,of,file,TensorStorage.hpp.,253,254,255,256,257,258,259,260,size_t,s,=,1;,for,(auto,&i,:,m_sizes),{,},return,s;,s,*=,i;,},References,Nektar::TensorRegions::TensorStorage<,DataType,>::m_sizes.,Referenced,by,Nektar::TensorRegions::TensorStorage<,DataType,>::TensorStorage().,6.2.4.9,size(),[2/2],template,size_t,Nektar::TensorRegions::TensorStorage<,DataType,>::size,(,const,size_t,idx,),[inline],Returns,the,size,of,the,TensorStorage,object.,Parameters,idx,Index,of,sub-component,to,request,size.,Returns,size_t,{,Definition,at,line,268,of,file,TensorStorage.hpp.,269,270,271,272,273,return,m_sizes[idx];,ASSERTL1(idx,<,m_sizes.size(),,},"Requested,index,out,of,range.");,References,Nektar::TensorRegions::TensorStorage<,DataType,>::m_sizes.,Generated,by,Doxygen,26,6.2.4.10,slice(),Class,Documentation,template,View,Nektar::TensorRegions::TensorStorage<,DataType,>::slice,(,unsigned,int,dim,,const,std::vector<,size_t,>,&,coord,),[inline],Constructs,a,TensorStorage:::View,on,a,high-dimensional,TensorStorage,object,,corresponding,to,a,single,con-,stituent,dimension.,Parameters,dim,coord,The,dimension,to,view.,The,base,coordinate,to,view.,Returns,View,{,Definition,at,line,328,of,file,TensorStorage.hpp.,329,330,331,332,333,334,},ASSERTL0(dim,<,m_sizes.size(),,"dim,larger,than,number,of,dimensions.");,ASSERTL0(coord.size(),==,m_sizes.size(),,"coord,dimension,must,match,dimension,of,Tensor.");,std::shared_ptrshared_from_this();,return,std::move(View(ts,,dim,,coord));,References,Nektar::TensorRegions::TensorStorage<,DataType,>::m_sizes.,6.2.5,Member,Data,Documentation,6.2.5.1,m_data,template,Array,Nektar::TensorRegions::TensorStorage<,DataType,>::m_data,[private],Storage,for,actual,data.,Definition,at,line,337,of,file,TensorStorage.hpp.,Referenced,by,Nektar::TensorRegions::TensorStorage<,DataType,>::getState(),,Nektar::TensorRegions::Tensor←(cid:45),Storage<,DataType,>::operator[,](),,and,Nektar::TensorRegions::TensorStorage<,DataType,>::TensorStorage().,6.2.5.2,m_sizes,template,std::vector,Nektar::TensorRegions::TensorStorage<,DataType,>::m_sizes,[private],Sizes,for,each,sub-component,of,the,tensor.,Definition,at,line,338,of,file,TensorStorage.hpp.,Referenced,by,Nektar::TensorRegions::TensorStorage<,DataType,>::dims(),,Nektar::TensorRegions::Tensor←(cid:45),Storage<,DataType,>::size(),,and,Nektar::TensorRegions::TensorStorage<,DataType,>::slice().,Generated,by,Doxygen,6.3,Nektar::TensorRegions::TensorStorage<,DataType,>::View,Class,Reference,27,6.2.5.3,m_state,template,enum,TensorStorage::State,Nektar::TensorRegions::TensorStorage<,DataType,>::m_state,=,ePhys,[private],Flag,indicating,if,data,is,in,coeff,or,physical,state.,Definition,at,line,338,of,file,TensorStorage.hpp.,Referenced,by,Nektar::TensorRegions::TensorStorage<,DataType,>::setState().,6.3,Nektar::TensorRegions::TensorStorage<,DataType,>::View,Class,Reference,Represents,a,one-dimensional,view,onto,a,TensorStorage,object.,#include,,Public,Member,Functions,•,View,(std::shared_ptr<,TensorStorage<,DataType,>>,ts,,unsigned,int,dim,,const,std::vector<,size_t,>,&coord),Construct,a,new,TensorStorage::View,object.,•,DataType,&,operator[,],(size_t,idx),Access,element,of,a,TensorStorage,object,through,the,view.,•,DataType,operator[,],(size_t,idx),const,Access,element,of,a,TensorStorage,object,through,the,view.,•,void,shift,(const,std::vector<,size_t,>,&s),Shifts,the,view,reference,coordinate,by,the,given,translation,vector.,•,Array<,OneD,,DataType,>,extract,(),Creates,a,copy,of,the,data,in,the,viewed,dimension.,•,void,inject,(const,Array<,OneD,,DataType,>,&pData),Replaces,the,data,in,the,TensorStorage,object,exposed,by,the,view.,•,size_t,size,(),Get,the,size,of,the,view.,Private,Member,Functions,•,void,computeOffsetStride,(),Calculate,the,member,variables,m_offset,and,m_stride,from,the,given,reference,coordinate,m_coord.,Generated,by,Doxygen,Class,Documentation,28,Private,Attributes,•,std::shared_ptr<,TensorStorage<,DataType,>,>,m_ts,Underlying,TensorStorage,object.,•,unsigned,int,m_dim,The,dimension,being,viewed.,•,std::vector<,size_t,>,m_coord,The,reference,coordinate,for,the,view.,•,size_t,m_offset,Offset,of,the,first,entry,in,the,view,(based,on,coordinate).,•,size_t,m_stride,Stride,for,accessing,subsequent,elements,of,view.,6.3.1,Detailed,Description,template,class,Nektar::TensorRegions::TensorStorage<,DataType,>::View,Represents,a,one-dimensional,view,onto,a,TensorStorage,object.,The,object,transparently,maps,onto,the,original,data,structure,,enabling,the,underlying,TensorStorage,solution,to,be,updated,through,the,view.,This,enables,operations,in,one,particular,dimension,of,the,tensor.,The,View,object,also,supports,extracting,and,injecting,data,into,the,TensorStorage,object,through,the,View.,Template,Parameters,DataType,Definition,at,line,52,of,file,TensorStorage.hpp.,6.3.2,Constructor,&,Destructor,Documentation,6.3.2.1,View(),template,Nektar::TensorRegions::TensorStorage<,DataType,>::View::View,(,std::shared_ptr<,TensorStorage<,DataType,>>,ts,,unsigned,int,dim,,const,std::vector<,size_t,>,&,coord,),[inline],Construct,a,new,TensorStorage::View,object.,Parameters,ts,Base,TensorStorage,object.,The,dimension,to,be,viewed.,dim,coord,Coordinate,of,a,point,in,the,required,view.,Generated,by,Doxygen,6.3,Nektar::TensorRegions::TensorStorage<,DataType,>::View,Class,Reference,29,Definition,at,line,62,of,file,TensorStorage.hpp.,63,64,65,66,computeOffsetStride();,{,},:,m_ts(ts),,m_dim(dim),,m_coord(coord),References,Nektar::TensorRegions::TensorStorage<,DataType,>::View::computeOffsetStride().,6.3.3,Member,Function,Documentation,6.3.3.1,computeOffsetStride(),template,void,Nektar::TensorRegions::TensorStorage<,DataType,>::View::computeOffsetStride,(,),[inline],,[private],Calculate,the,member,variables,m_offset,and,m_stride,from,the,given,reference,coordinate,m_coord.,{,Definition,at,line,163,of,file,TensorStorage.hpp.,164,165,166,167,168,169,170,171,172,},},m_stride,=,1;,m_offset,=,0;,for,(unsigned,int,i,=,0;,i,<,m_dim;,++i),{,m_offset,+=,m_coord[i],*,m_stride;,m_stride,*=,m_ts->m_sizes[i];,References,Nektar::TensorRegions::TensorStorage<,DataType,>::View::m_coord,,Nektar::TensorRegions::←(cid:45),TensorStorage<,DataType,>::View::m_dim,,Nektar::TensorRegions::TensorStorage<,DataType,>::View::m←(cid:45),_offset,,Nektar::TensorRegions::TensorStorage<,DataType,>::View::m_stride,,and,Nektar::TensorRegions::←(cid:45),TensorStorage<,DataType,>::View::m_ts.,Referenced,by,Nektar::TensorRegions::TensorStorage<,DataType,>::View::shift(),,and,Nektar::TensorRegions::←(cid:45),TensorStorage<,DataType,>::View::View().,6.3.3.2,extract(),template,Array,Nektar::TensorRegions::TensorStorage<,DataType,>::View::extract,(,),[inline],Creates,a,copy,of,the,data,in,the,viewed,dimension.,This,function,generates,a,new,Array,object,and,populates,it,with,the,view,data.,No,link,back,to,the,original,TensorStorage,is,maintained.,Returns,Array,{,Definition,at,line,118,of,file,TensorStorage.hpp.,119,120,121,122,123,124,125,},return,x;,},Array,x(m_ts->size(m_dim));,for,(size_t,i,=,0;,i,<,m_ts->size(m_dim);,++i),{,x[i],=,m_ts->m_data[m_offset,+,i*m_stride];,References,Nektar::TensorRegions::TensorStorage<,DataType,>::View::m_dim,,Nektar::TensorRegions::Tensor←(cid:45),Storage<,DataType,>::View::m_offset,,Nektar::TensorRegions::TensorStorage<,DataType,>::View::m_stride,,and,Nektar::TensorRegions::TensorStorage<,DataType,>::View::m_ts.,Generated,by,Doxygen,30,6.3.3.3,inject(),Class,Documentation,template,void,Nektar::TensorRegions::TensorStorage<,DataType,>::View::inject,(,const,Array<,OneD,,DataType,>,&,pData,),[inline],Replaces,the,data,in,the,TensorStorage,object,exposed,by,the,view.,Parameters,pData,{,Definition,at,line,133,of,file,TensorStorage.hpp.,134,135,136,137,138,139,140,},},ASSERTL1(pData.size(),==,m_ts->size(m_dim),,"Injected,array,size,does,not,match,dimension,size.");,for,(size_t,i,=,0;,i,<,m_ts->size(m_dim);,++i),{,m_ts->m_data[m_offset,+,i*m_stride],=,pData[i];,References,Nektar::TensorRegions::TensorStorage<,DataType,>::View::m_dim,,Nektar::TensorRegions::Tensor←(cid:45),Storage<,DataType,>::View::m_offset,,Nektar::TensorRegions::TensorStorage<,DataType,>::View::m_stride,,and,Nektar::TensorRegions::TensorStorage<,DataType,>::View::m_ts.,6.3.3.4,operator[](),[1/2],template,DataType&,Nektar::TensorRegions::TensorStorage<,DataType,>::View::operator[,],(,size_t,idx,),[inline],Access,element,of,a,TensorStorage,object,through,the,view.,This,function,allows,modification,of,the,underlying,TensorStorage,object.,Parameters,idx,Index,in,the,viewed,dimension.,Returns,DataType&,Definition,at,line,76,of,file,TensorStorage.hpp.,77,78,79,},{,return,m_ts->m_data[m_offset,+,idx,*,m_stride];,References,Nektar::TensorRegions::TensorStorage<,DataType,>::View::m_offset,,Nektar::TensorRegions::←(cid:45),TensorStorage<,DataType,>::View::m_stride,,and,Nektar::TensorRegions::TensorStorage<,DataType,>::View←(cid:45),::m_ts.,Generated,by,Doxygen,6.3,Nektar::TensorRegions::TensorStorage<,DataType,>::View,Class,Reference,31,6.3.3.5,operator[](),[2/2],template,DataType,Nektar::TensorRegions::TensorStorage<,DataType,>::View::operator[,],(,size_t,idx,),const,[inline],Access,element,of,a,TensorStorage,object,through,the,view.,This,function,allows,read-only,access,,supporting,const,TensorStorage,objects.,Parameters,idx,Returns,DataType,Definition,at,line,89,of,file,TensorStorage.hpp.,90,91,92,{,},return,m_ts->m_data[m_offset,+,idx,*,m_stride];,References,Nektar::TensorRegions::TensorStorage<,DataType,>::View::m_offset,,Nektar::TensorRegions::←(cid:45),TensorStorage<,DataType,>::View::m_stride,,and,Nektar::TensorRegions::TensorStorage<,DataType,>::View←(cid:45),::m_ts.,6.3.3.6,shift(),template,void,Nektar::TensorRegions::TensorStorage<,DataType,>::View::shift,(,const,std::vector<,size_t,>,&,s,),[inline],Shifts,the,view,reference,coordinate,by,the,given,translation,vector.,Parameters,s,Translation,vector,to,shift,by.,{,Definition,at,line,100,of,file,TensorStorage.hpp.,101,102,103,104,105,106,107,},computeOffsetStride();,},for,(unsigned,int,i,=,0;,i,<,m_dim;,++i),{,ASSERTL0(m_coord[i],+,s[i],<,m_ts->size(i),,"Requested,shift,takes,coordinate,out,of,range.");,References,Nektar::TensorRegions::TensorStorage<,DataType,>::View::computeOffsetStride(),,Nektar::Tensor←(cid:45),Regions::TensorStorage<,DataType,>::View::m_coord,,Nektar::TensorRegions::TensorStorage<,DataType,>::←(cid:45),View::m_dim,,and,Nektar::TensorRegions::TensorStorage<,DataType,>::View::m_ts.,Generated,by,Doxygen,32,6.3.3.7,size(),Class,Documentation,template,size_t,Nektar::TensorRegions::TensorStorage<,DataType,>::View::size,(,),[inline],Get,the,size,of,the,view.,Returns,size_t,Definition,at,line,147,of,file,TensorStorage.hpp.,148,149,150,return,m_ts->size(m_dim);,{,},References,Nektar::TensorRegions::TensorStorage<,DataType,>::View::m_dim,,and,Nektar::TensorRegions::←(cid:45),TensorStorage<,DataType,>::View::m_ts.,6.3.4,Member,Data,Documentation,6.3.4.1,m_coord,template,std::vector,Nektar::TensorRegions::TensorStorage<,DataType,>::View::m_coord,[private],The,reference,coordinate,for,the,view.,Definition,at,line,155,of,file,TensorStorage.hpp.,Referenced,by,Nektar::TensorRegions::TensorStorage<,DataType,>::View::computeOffsetStride(),,and,Nektar::←(cid:45),TensorRegions::TensorStorage<,DataType,>::View::shift().,6.3.4.2,m_dim,template,unsigned,int,Nektar::TensorRegions::TensorStorage<,DataType,>::View::m_dim,[private],The,dimension,being,viewed.,Definition,at,line,154,of,file,TensorStorage.hpp.,Referenced,by,Nektar::TensorRegions::TensorStorage<,DataType,>::View::computeOffsetStride(),,Nektar::←(cid:45),TensorRegions::TensorStorage<,DataType,>::View::extract(),,Nektar::TensorRegions::TensorStorage<,DataType,>::View::inject(),,Nektar::TensorRegions::TensorStorage<,DataType,>::View::shift(),,and,Nektar::TensorRegions←(cid:45),::TensorStorage<,DataType,>::View::size().,Generated,by,Doxygen,6.3,Nektar::TensorRegions::TensorStorage<,DataType,>::View,Class,Reference,33,6.3.4.3,m_offset,template,size_t,Nektar::TensorRegions::TensorStorage<,DataType,>::View::m_offset,[private],Offset,of,the,first,entry,in,the,view,(based,on,coordinate).,Definition,at,line,156,of,file,TensorStorage.hpp.,Referenced,by,Nektar::TensorRegions::TensorStorage<,DataType,>::View::computeOffsetStride(),,Nektar::←(cid:45),TensorRegions::TensorStorage<,DataType,>::View::extract(),,Nektar::TensorRegions::TensorStorage<,DataType,>::View::inject(),,and,Nektar::TensorRegions::TensorStorage<,DataType,>::View::operator[,]().,6.3.4.4,m_stride,template,size_t,Nektar::TensorRegions::TensorStorage<,DataType,>::View::m_stride,[private],Stride,for,accessing,subsequent,elements,of,view.,Definition,at,line,157,of,file,TensorStorage.hpp.,Referenced,by,Nektar::TensorRegions::TensorStorage<,DataType,>::View::computeOffsetStride(),,Nektar::←(cid:45),TensorRegions::TensorStorage<,DataType,>::View::extract(),,Nektar::TensorRegions::TensorStorage<,DataType,>::View::inject(),,and,Nektar::TensorRegions::TensorStorage<,DataType,>::View::operator[,]().,6.3.4.5,m_ts,template,std::shared_ptr,>,Nektar::TensorRegions::TensorStorage<,DataType,>←(cid:45),::View::m_ts,[private],Underlying,TensorStorage,object.,Definition,at,line,153,of,file,TensorStorage.hpp.,Referenced,by,Nektar::TensorRegions::TensorStorage<,DataType,>::View::computeOffsetStride(),,Nektar::←(cid:45),TensorRegions::TensorStorage<,DataType,>::View::extract(),,Nektar::TensorRegions::TensorStorage<,Data←(cid:45),Type,>::View::inject(),,Nektar::TensorRegions::TensorStorage<,DataType,>::View::operator[,](),,Nektar::Tensor←(cid:45),Regions::TensorStorage<,DataType,>::View::shift(),,and,Nektar::TensorRegions::TensorStorage<,DataType,>←(cid:45),::View::size().,Generated,by,Doxygen,34,Class,Documentation,Generated,by,Doxygen,Chapter,7,File,Documentation,7.1,TensorRegion.cpp,File,Reference,#include,,#include,,Namespaces,•,Nektar,•,Nektar::TensorRegions,7.2,TensorRegion.h,File,Reference,#include,,#include,,#include,,Classes,•,class,Nektar::TensorRegions::TensorRegion,High-dimensional,region,,comprising,of,a,tensor-product,of,two,MultiRegions.,Namespaces,•,Nektar,•,Nektar::TensorRegions,Generated,by,Doxygen,36,Typedefs,File,Documentation,•,using,Nektar::TensorRegions::TensorRegionStorage,=,TensorStorage<,NekDouble,>,Double-precision,floating-point,specialisation,of,a,TensorStorage.,•,using,Nektar::TensorRegions::TensorRegionStorageSharedPtr,=,std::shared_ptr<,TensorRegionStorage,>,Shared,pointer,to,a,double-precision,floating-point,TensorStorage,object.,•,using,Nektar::TensorRegions::TensorRegionSharedPtr,=,std::shared_ptr<,TensorRegion,>,A,shared,pointer,to,a,TensorRegion,object.,7.3,TensorRegions.hpp,File,Reference,#include,,Namespaces,•,Nektar,•,Nektar::TensorRegions,7.4,TensorRegionsDeclspec.h,File,Reference,Macros,•,#define,TENSOR_REGIONS_EXPORT,7.4.1,Macro,Definition,Documentation,7.4.1.1,TENSOR_REGIONS_EXPORT,#define,TENSOR_REGIONS_EXPORT,Definition,at,line,42,of,file,TensorRegionsDeclspec.h.,7.5,TensorStorage.hpp,File,Reference,#include,,#include,,Generated,by,Doxygen,7.5,TensorStorage.hpp,File,Reference,37,Classes,•,class,Nektar::TensorRegions::TensorStorage<,DataType,>,Storage,container,for,TensorRegions,solution.,•,class,Nektar::TensorRegions::TensorStorage<,DataType,>::View,Represents,a,one-dimensional,view,onto,a,TensorStorage,object.,Namespaces,•,Nektar,•,Nektar::TensorRegions,•,TensorRegions,Namespace,encapsulating,algorithms,and,data,structures,for,constructing,high-dimensional,high-order,finite,element,spaces.,Typedefs,•,template,using,Nektar::TensorRegions::TensorStorageSharedPtr,=,std::shared_ptr<,TensorStorage<,DataType,>,>,A,shared,pointer,to,a,TensorStorage,object.,Generated,by,Doxygen,38,File,Documentation,Generated,by,Doxygen :pdfembed:`src:_static/TN-01-2_ImplementationTensorregionsLibraryNektar.pdf, height:1600, width:1100, align:middle`