Orthotropic Conductivity on Face

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!

 Accepted Answer

Torsten
Torsten on 2 May 2025
Edited: Torsten on 2 May 2025
I found
orthoK = [0.75*kappa; 0.85*kappa];
in the documentation - thus a column instead of a row vector.

7 Comments

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...
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 on 2 May 2025
Edited: Torsten on 2 May 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.
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.

Sign in to comment.

More Answers (0)

Products

Release

R2023b

Community Treasure Hunt

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

Start Hunting!