Average Flux Across Edge

Hi. I need to compute the average flux across the edge in the diagram that is of length xa. Shouldn't the results from the function evaluateHeatFlux be weighted by the mesh segment lengths on that edge? For non-uniform meshes, as this is, the segment lengths are not all equal and thus the result given by evaluateHeatFlux should have less weight in a small segment versus a large segment (when averaging). Does Matlab have a built-in way of doing this?
results = solve(model);
[qx,qy] = evaluateHeatFlux(results);
Nodes_Xa = findNodes(model.Mesh,"region","Edge",Edge_Xa);
flux_Xa = qy(Nodes_Xa);
averageFlux = mean(flux_Xa); % SHOULDN'T THIS BE WEIGHTED BY THE ELEMENT EDGE LENGTH?
Thanks for any input.

 Risposta accettata

Torsten
Torsten il 1 Mag 2025
Spostato: Torsten il 1 Mag 2025
Should be
averageFlux = 1/(Nodes_Xa(end)-Nodes_Xa(1))*trapz(Nodes_Xa,flux_Xa)

7 Commenti

Actually, this would be the way. Need to use the coordinate values (xa) versus the node numbers (Nodes_Xa).
results = solve(model);
[qx,qy] = evaluateHeatFlux(results);
Nodes_Xa = findNodes(model.Mesh,"region","Edge",Edge_Xa); % Gives node numbers
flux_Xa = qy(Nodes_Xa);
xa = results.Mesh.Nodes(1,Nodes_Xa); % Gives coord values at nodes
averageFlux = 1/(xa(end)-xa(1))*trapz(xa,flux_Xa);
Thanks for the suggestion, @Torsten
@Torsten what're your thoughts about needing to scale the results from evaluateHeatFlux in a plot like:
figure; plot(xa,flux_Xa,'ro')
Should the values in flux_Xa be scaled by the segment sizes of xa? Since heat flux is a "per unit area" quantity, it would seem that the area of each element (i.e. diff(xa)) would be important. Or, do you think that the built-in Matlab function evaluateHeatFlux handles the different areas of element edges on the domain boundary?
Torsten
Torsten il 1 Mag 2025
Modificato: Torsten il 1 Mag 2025
Or, do you think that the built-in Matlab function evaluateHeatFlux handles the different areas of element edges on the domain boundary?
If you want to compute the total heat flux across the boundary in Watt, the edge lengths would be important because you take the integral over the edge. But using "evaluateHeatFlux" gives the local values in Watt/m^2 in the node points - thus the value is independent of the actual local edge lengths of your mesh.
Paul Safier
Paul Safier il 1 Mag 2025
Thanks!
Torsten
Torsten il 2 Mag 2025
Modificato: Torsten il 2 Mag 2025
I think "evaluateHeatRate" is what you are looking for:
It's the integrated heat flux normal to the boundary. To get the mean, you'll have to divide by the length of the edge, I guess.
Paul Safier
Paul Safier il 2 Mag 2025
OK, I just tested that and it comes up as the exact same answer as the integral with trapz. Thanks!
Ansel
Ansel il 14 Mag 2025
Thanks for the link, you saved my day.

Accedi per commentare.

Più risposte (0)

Prodotti

Release

R2023b

Richiesto:

il 1 Mag 2025

Commentato:

il 14 Mag 2025

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by