Hello CADET Developers,
I am trying to understand how the global_last_state_vector_y is defined and stored in CADET, in order to slice the “last_state” vector corresponding to each unit operation.
According to CADET documentation, the length of LAST_STATE_Y is equal to NDOF (number of degrees of freedom)/2NDOF and NDOF is defined as follows:
NDOF = Column bulk DOFs: nCol * nComp + Particle DOFs: nCol * nParType particles each having nComp (liquid phase) + sum boundStates (solid phase) DOFs in each shell; there are nParCell shells for each particle type + Flux DOFs: nCol * nComp * nParType (as many as column bulk DOFs) + Inlet DOFs: nComp
So, for example if I have a single component system, which is modelled with 75 axial (NCOL) and 20 radial (nParType) cells, then using the above formula results in NDOF = 3151 but when I checked the length of LAST_STATE_Y in CADET output file then it was equal to 3155. It means there are 4 extra terms, then I further looked into the source code and in ModelSymtemImpl.cpp a following function related to calculation of NDOF is defined as:
unsigned int ModelSystem::numDofs() const CADET_NOEXCEPT
{
return _dofOffset.back() + numCouplingDOF();
}
One of the term in the return argument of this function is numCouplingDOF() and I am not sure what information this term carries and maybe these are the missing 4 terms I am not able to calculate. Can anyone please help me out in understanding how these terms are stored in the global last_state vector so that I can identify them for each unit operation?