3D simulation of heat and moisture generation in a stacked fertilizer reactor – non‑convergence
Posted 2026年6月8日 GMT+8 21:14 Heat Transfer, Porous Media Flow, Studies & Solvers Version 6.0 0 Replies
Please login with a confirmed email address before reporting spam
Hello everyone,
I am using COMSOL Multiphysics 6.0 Build 318 to simulate a 3D model of heat and moisture generation during fermentation in a stacked fertilizer reactor. The simulation always stops with a non‑convergence error around 29 s. I would greatly appreciate any advice from experienced users to help me get the simulation running to completion. Thank you in advance.
Below is a summary of the model (Attachments: Figures 1–12 (as referenced in the text)).
- Simulated object
(1) Four fertilizer buckets are stacked on top of each other (like steamers). Each bucket contains a cylindrical pile of fertilizer. Microbes inside the fertilizer decompose the material and produce heat and moisture when heated. A hollow, constant‑temperature heating tube runs vertically through the center of the whole system, providing a heat source.
(2) The part of the fertilizer pile closest to the heating tube heats up first and therefore starts producing heat and moisture earlier. As heat conducts radially outward, the outer parts of the pile also start to heat. In addition, the outer wall of each bucket is also a constant‑temperature heat source – i.e., both the inner (near the tube) and outer (near the bucket wall) sides of the fertilizer pile are heated.
(3) The four layers are separated by septum plates that allow heat transfer but no mass transfer. The top bucket has a cover, and the bottom bucket sits on a base plate. Both the cover and the base plate have convective cooling boundaries on their outer surfaces.
(4) The goal is to simulate 1 day (86 400 s) of operation and obtain: temperature evolution, moisture (water vapor concentration) evolution, and the total heat generation rate [W] of the fertilizer piles over time.
- Model setup
(1) Figure 1 shows a rough view of the geometry (buckets, fertilizer piles, air domains, central tube, septum plates, cover, base).
(2) Global parameters are listed in Figure 2. Parameters inside the red box are geometry‑related (not critical). The parameters outside the red box are more important, especially k_Q and k_moist – the coefficients for the temperature‑dependent heat and moisture production rates. Because I am not sure whether they cause the divergence, I have set them to 0 for now.
(3) Under Component > Definitions I created a nonlocal coupling > integration operator (intop1) to compute the total heat generated [J] after the simulation (Figure 3).
(4) Under Component > Selections I defined three explicit selections (Figure 4) – fertilizer domain (four piles), air domain (the space above the fertilizer in each bucket), and stainless steel domain (all containers and structural parts). This makes material assignment and meshing easier.
(5) The geometry (Component > Geometry) is shown in Figure 5. I do not think the problem lies here.
(6) Material definitions (Component > Materials) are shown in Figure 6. Briefly:
Stainless steel: 304 [solid, polished] – water content, permeability, porosity set to 0; other properties default.
Compost (fertilizer): custom material – density 546 kg/m³, thermal conductivity 0.3 W/(m·K), heat capacity 3200 J/(kg·K), porosity 0.34, permeability 1e‑7 m², water content 0.2 kg/m³.
Air: taken from the built‑in library – density 1.2 kg/m³, thermal conductivity 0.026 W/(m·K), heat capacity 1005 J/(kg·K).
(7) Physics interfaces (Component > Physics) – two interfaces: Heat Transfer in Solids (ht) and Transport of Diluted Species (tds).
ht handles conduction in the stainless steel, fertilizer, and air domains.
tds handles water vapor diffusion in the fertilizer and air domains.
Detailed settings:
ht – initial values: three nodes for the stainless steel, fertilizer, and air domains (initial temperatures).
ht – temperature boundaries:
central tube inner wall – constant temperature heat source (65 °C)
bucket outer walls – constant temperature heat source (30 °C)
cover and base outer surfaces – convective heat flux (cooling, external temperature 20 °C, heat transfer coefficient 5 W/(m²·K)).
tds – transport properties: two nodes –
air domain: diffusion coefficient = 2.5e‑5 m²/s
fertilizer domain: diffusion coefficient = 1e‑5 m²/s
tds – initial values: three nodes – fertilizer, air, stainless steel (initial water vapor concentrations in mol/m³). Stainless steel initial concentration = 0.
Important – ht – heat source and tds – reaction for the fertilizer domain:
Heat source expression (Q0): Q_base + k_Q*(T - T0_compost)
Reaction rate (Rc): S_moist_base + k_moist*(T - T0_compost) (Both coefficients k_Q and k_moist are currently set to 0, as mentioned.)
The moisture cap sub‑node (using the truncated expression (S_moist_base + k_moist*(T - T0_compost)) * (c < c_saturation)) has been disabled because I wanted to test the basic case first.
(8) Mesh (Figure 8) – I am wondering if the mesh might be too coarse, causing divergence. The settings are:
Mesh sequence type: User‑controlled mesh.
Size node (global): max element size 100 mm, min 20 mm, growth rate 1.5, curvature factor 0.6, resolution of narrow regions 1.
Global network (size): max 80 mm / min 10 mm, growth rate 1.5, curvature factor 0.5, narrow region resolution 0.5.
Free tetrahedral 1 – covers remaining domains.
Three “general refinement” nodes – for fertilizer, central tube, and air domains: max element size 60 mm (all three), min element size 15 mm (all three), other parameters default.
(9) Study settings (Figures 9–12) – I suspect the problem may be here. I do not have much experience tuning the solver. Current settings:
Step 1: Time Dependent
Time unit: s
Output times: range(0,10,100) (test up to 100 s)
Tolerance: user‑controlled
Relative tolerance: 0.01 (arbitrary)
Solver configuration – Time‑Dependent Solver 1
General – By study step: user defined; time unit: s; output times: range(0,10,100); times to store: interpolated output; relative tolerance: 0.01 (arbitrary).
Absolute tolerance – Global method: scaled; tolerance method: factor; tolerance factor: 0.01 (arbitrary); derivative tolerance method: automatic (Update scaled absolute tolerance checked).
Time stepping – Method: BDF; step size taken by solver: free; initial step: 0.1 s (default); maximum step constraint: constant; max step: 100 s (arbitrary); max BDF order: 2; min BDF order: 1; event tolerance: 10 (arbitrary); singular mass matrix: maybe; initial step for backward Euler: 0.001 (arbitrary).
Fully Coupled (Figure 12) – Linear solver: AMG, concentration (tds); nonlinear method: automatic (Newton); initial damping: 1; min damping: 1e‑4; step length limit: 10; step length growth limit: 1; use recovery damping: automatic; recovery damping factor: 0.75; termination technique: tolerance; max iterations: 4; tolerance factor: 1; termination criterion: solution.
- Question
Could the divergence be caused by:
The k_Q / k_moist coefficients (even though they are set to 0 now)?
The mesh being too coarse (or even too fine)?
The solver / time stepping settings (I am not confident in these)?
Possibly something else that I have overlooked?
I would be very grateful for any suggestions to make the simulation run through the full 1 day period. Thank you very much for your time.
Attachments:
Reply
Please read the discussion forum rules before posting.
Please log in to post a reply.
