void MultiscaleCoupling::createCouplingMap ( MapEpetra& couplingMap ) { #ifdef HAVE_LIFEV_DEBUG debugStream ( 8200 ) << "MultiscaleCoupling::createCouplingMap( couplingMap ) \n"; #endif M_couplingVariablesOffset = couplingMap.map ( Unique )->NumGlobalElements(); couplingMap += localCouplingVariables ( 0 ).map(); }
void MultiscaleCoupling::extrapolateCouplingVariables() { #ifdef HAVE_LIFEV_DEBUG debugStream ( 8200 ) << "MultiscaleCoupling::extrapolateCouplingVariables() \n"; #endif if ( myModelsNumber() > 0 ) { // Extrapolate the coupling variables at the next time multiscaleVector_Type extrapolatedCouplingVariables ( localCouplingVariables ( 0 ) ); interpolateCouplingVariables ( M_globalData->dataTime()->nextTime(), extrapolatedCouplingVariables ); // If we have not yet enough samples for interpolation, we add a new one UInt couplingVariablesSize ( M_localCouplingVariables.size() ); if ( couplingVariablesSize <= M_timeInterpolationOrder ) { ++couplingVariablesSize; M_localCouplingVariables.push_back ( multiscaleVectorPtr_Type ( new VectorEpetra ( localCouplingVariables ( 0 ) ) ) ); } // Updating database for ( UInt i (1) ; i < couplingVariablesSize ; ++i ) { localCouplingVariables ( couplingVariablesSize - i ) = localCouplingVariables ( couplingVariablesSize - i - 1 ); } localCouplingVariables ( 0 ) = extrapolatedCouplingVariables; #ifdef HAVE_LIFEV_DEBUG for ( UInt i ( 0 ); i < M_couplingVariablesNumber; ++i ) { debugStream ( 8200 ) << "C(" << M_couplingVariablesOffset + i << ") = " << ( localCouplingVariables ( 0 ) ) [i] << "\n"; } #endif } }
/*! * @param couplingVariables Global vector of coupling variables */ void exportCouplingVariables ( multiscaleVector_Type& couplingVariables ) { exportCouplingVector ( couplingVariables, localCouplingVariables ( 0 ), Zero ); }
/*! * @param couplingVariables Global vector of coupling variables */ void importCouplingVariables ( const multiscaleVector_Type& couplingVariables ) { importCouplingVector ( localCouplingVariables ( 0 ), couplingVariables, Add ); }