Hello Roozbeh, While my background is not solving thermal PDEs, I can provide some ideas. I also need some clarifications.
- Are the three scalar fields (temperature, humidity, and chemical content) coupled or decoupled? Implementing a solver in Chrono with all three fields coupled is a lot more complicated, and I suggest starting with a small problem with 2 fields coupled. - When you mention that you have "generalized the 1D routine for the diffusion of 3 scalar fields", does it mean, - you customized your own node class based on the ChNodeFEAxyzP.h to handle 3 scalar fields? That's doable, but you have to properly initialize, populate and assemble all the fields. - Or you created three separate meshes, each for one field variable? This should work for a decoupled case; make sure you adjust the thermal conductivity and specific heat values to match the governing equations for humidity and chemical content. You can still use the same API call, since under the hood, the same type of equations is solved. - Regarding the the error you saw from Eigen, this usually happens when some matrix/vector access is out of bounds. Maybe the indices are incorrect, or the fields are not initialized properly. I suggest that you step through the code with a debugger, check the dimensions, and also verify the matrix/vector size after initialization. Hope my suggestions help. Thank you, Luning On Wednesday, January 15, 2025 at 11:12:06 AM UTC-6 rreza...@gmail.com wrote: > Hello Everyone, > > I have successfully developed 1D element for the diffusion of a scalar > field (temperature) using "ChNodeFEAxyzP" in /src/chrono/fea. > > Next, I generalized the 1D routine for the diffusion of 3 scalar fields > (temperature, humidity, chemical content). After compilation, I get the > following error during the first solve step: > FEA_hydrothermal_2D_square: > /usr/include/eigen3/Eigen/src/Core/Block.h:146: Eigen::Block<XprType, > BlockRows, BlockCols, InnerPanel>::Block(XprType&, Eigen::Index, > Eigen::Index, Eigen::Index, Eigen::Index) [with XprType = const > Eigen::Matrix<double, -1, 1>; int BlockRows = -1; int BlockCols = 1; bool > InnerPanel = false; Eigen::Index = long int]: Assertion `startRow >= 0 && > blockRows >= 0 && startRow <= xpr.rows() - blockRows && startCol >= 0 && > blockCols >= 0 && startCol <= xpr.cols() - blockCols' failed. > Aborted (core dumped) > > I would be thankful for your input. > > Thanks, > Roozbeh > -- You received this message because you are subscribed to the Google Groups "ProjectChrono" group. To unsubscribe from this group and stop receiving emails from it, send an email to projectchrono+unsubscr...@googlegroups.com. To view this discussion visit https://groups.google.com/d/msgid/projectchrono/9bc0b546-40ee-49e4-a6f6-9e46abff0cc6n%40googlegroups.com.