影响计算效率的因素
-
//2.4s label meshSize = this->thermo().rho()().size(); for(label i=0; i < this->nSpecie_; i++) { for(label icell = 0; icell < meshSize; icell++) { label izone = ZoneNumber[icell]; this->RR_[i][icell] = RRCCM[i][izone]*correctCH[icell]; } } //24s for(label i=0; i < this->nSpecie_; i++) { for(label icell = 0; icell < this->thermo().rho()().size(); icell++) { label izone = ZoneNumber[icell]; this->RR_[i][icell] = RRCCM[i][izone]*correctCH[icell]; } }
上边两种用法,计算耗时相差 10 倍!
改用thermo.T()
之后计算时间又变成 2.4 s 了,所以原因应该是rho
后边跟了两个括号,深层原因是啥呢?//2.4s label meshSize = this->thermo().rho()().size(); for(label i=0; i < this->nSpecie_; i++) { for(label icell = 0; icell < this->thermo().T().size(); icell++) { label izone = ZoneNumber[icell]; this->RR_[i][icell] = RRCCM[i][izone]*correctCH[icell]; } }
此外,还可以使用
forAll(this->thermo().T(), icell)
,效果和for
循环几乎一样。