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.

Reply via email to