Hi. My domain is as shown in the images attached.
I am trying to place orthotropic conductivity on face 3 and uniform conductivity on faces 1&2. The code/solution fails with the following syntax:
kappa = 1;
orthoK = [0.75*kappa,0 ; 0, 0.85*kappa];
model.MaterialProperties([1 2]) = materialProperties(ThermalConductivity=kappa, ...
MassDensity=1,SpecificHeat=1);
model.MaterialProperties(3) = materialProperties(ThermalConductivity=orthoK, ...
MassDensity=1,SpecificHeat=1);
The code also fails with this test:
orthoK = [kappa,0 ; 0, kappa];
but would run fine with this (not what I need though):
orthoK = [kappa];
It also fails with this syntax that I have seen in the documentation online:
ortho = [0.75*kappa 0.85*kappa];
Can anyone tell me the proper syntax?
Thanks!

 Réponse acceptée

Torsten
Torsten le 2 Mai 2025
Modifié(e) : Torsten le 2 Mai 2025
I found
orthoK = [0.75*kappa; 0.85*kappa];
in the documentation - thus a column instead of a row vector.

7 commentaires

Something is off with that, perhaps.
I feel like I should get the same result with this:
model.MaterialProperties([1 2]) = materialProperties(ThermalConductivity=kappa, ...
MassDensity=1,SpecificHeat=1);
orthoK = kappa*ones(2,2);
%orthoK = [kappa;kappa]; % Other option also doesn't match below
model.MaterialProperties(3) = materialProperties(ThermalConductivity=orthoK, ...
MassDensity=1,SpecificHeat=1);
as I do with this:
model.MaterialProperties([1 2]) = materialProperties(ThermalConductivity=kappa, ...
MassDensity=1,SpecificHeat=1);
model.MaterialProperties(3) = materialProperties(ThermalConductivity=kappa, ...
MassDensity=1,SpecificHeat=1);
But they are NOT the same. The first code snippet (with the orthotropic conductivity format but set to kappa) does not solve correctly...
Torsten
Torsten le 2 Mai 2025
Modifié(e) : Torsten le 2 Mai 2025
I think you mean
orthoK = kappa*eye(2);
or
orthoK = [kappa;kappa];
instead of
orthoK = kappa*ones(2,2);
The test would be to mimic setting a uniform conductivity (kappa = 1). Shouldn't that have the cross-directional terms also set to 1?
conductivityMatrix = [kx, kxy; kyx, ky];
Thus:
conductivityMatrix = ones(2,2);
Right?
Regardless, in neither of the options you list can you get the same results as using the single scalar value of 1.
Torsten
Torsten le 2 Mai 2025
Modifié(e) : Torsten le 2 Mai 2025
The "usual" energy equation has no cross-derivative terms, thus kxy = kyx = 0.
If I have the time, I'll look up the documentation and see if I can find something useful.
Torsten
Torsten le 3 Mai 2025
Which model type are you using ? model = femodel ? model = thermalModel ? model = createpde ?
I'm using:
model = femodel(AnalysisType="thermalSteady",Geometry=gm);
I made a small test problem and was able to get results using this format that I gleaned from the full pdf documentation.
orthoK = [0.75*kappa ; 0 ; 0 ; 0.8*kappa];
However, my problem has a nonlinear boundary condition and is more involved so there is something peculiar about my problem that does not permit a proper solution (at the nonlinear BC) when using an orthotropic conductivity. For the small test problem, I also tried a nonlinear BC and it worked as well, so the issue is specific to my problem. Oh well, more troubleshooting to be had. Thanks for the help, @Torsten.

Connectez-vous pour commenter.

Plus de réponses (0)

Produits

Version

R2023b

Community Treasure Hunt

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

Start Hunting!

Translated by