fvScalarMatrix TtEqn
(
+r* fvm::div(-phi,Tt)
+Tt* fvc::div(-phi,r)
+Tt* r*fvc::div(-U)
+fvm::laplacian(-ka,Tt)
);//
TtEqn.relax();
TtEqn.solve();
里面r,ka都为已知标量,U为速度
fvScalarMatrix TtEqn
(
+r* fvm::div(-phi,Tt)
+Tt* fvc::div(-phi,r)
+Tt* r*fvc::div(-U)
+fvm::laplacian(-ka,Tt)
);//
TtEqn.relax();
TtEqn.solve();
里面r,ka都为已知标量,U为速度
进行伴随优化,求解一个标量场总是发散,入口处第一层网格上异常偏大
边界条件如下:
inlet
{
type fixedValue;
value uniform 0;
}
outlet
{
type adjointOutletTemperature;
value uniform 0;
}
upperWall
{
type fixedValue;
value uniform 0;
}
求问,可能是什么原因?
@李东岳 可以用forAll 实现变量跟网格体积相乘,mesh.V是不是没有量纲?
sens= (Ua & U);
forAll(sens, celli)
{
sens[celli]=sens[celli]*mesh.V()[celli];
}
@李东岳 谢谢大神,我是需要计算出每一点的sens,我试试forAll循环
各位大神我的程序里有这么一个语句
sens=(U&V)*mesh.V()
,但是mesh.V()
似乎是dimensionedscalar
类型,sens
是volScalarField
类型的,编译时会报错,求各位大神支支招。