Пример #1
0
inline void from_json(const json_t &noise, Relaxation &error) {
  if (JSON::check_key("relaxation_rate", noise)) {
    double rate = noise["relaxation_rate"];
    rvector_t pops{1.};
    if (JSON::check_key("thermal_populations", noise)) {
      const json_t &node = noise["thermal_populations"];
      if (node.is_number())
        pops[0] = node.get<double>();
      else
        pops = node.get<rvector_t>();
    }
    error = Relaxation(rate, pops);
  } else
    error = Relaxation();
}
Пример #2
0
void MOCSteady::CheckFlow(double dOld, double &dNew)
{
	BOOL bOk = FALSE;
	BOOL bAbs = CheckAbs(dOld,dNew,m_FlowAbsTol);	//0,绝对公差;
	BOOL bRel = CheckRel(dOld,dNew,m_FlowRelTol);	//1, 相对公差;
	Relaxation(dOld,dNew,m_FlowRelaxation);			//使用松弛因子;
	switch(m_PresTolType) 
	{
	case 0:
		bOk = bAbs;
		break;
	case 1:
		bOk = bRel;
		break;
	case 2:
		bOk = (bAbs || bRel);
		break;
	case 3:
		bOk = (bAbs && bRel);
		break;
	default:
		ASSERT(FALSE);
		break;
	}
	if(!bOk)
		m_bOk = bOk;
}
Пример #3
0
void MOCSteady::CheckPress(double dOld, double &dNew)
{
	BOOL bOk = FALSE;
	BOOL bAbs = CheckAbs(dOld,dNew,m_PresAbsTol);
	BOOL bRel = CheckRel(dOld,dNew,m_PresRelTol);
	Relaxation(dOld,dNew,m_PresRelaxation);
	switch(m_FlowTolType) 
	{
	case 0:
		bOk = bAbs;
		break;
	case 1:
		bOk = bRel;
		break;
	case 2:
		bOk = (bAbs || bRel);
		break;
	case 3:
		bOk = (bAbs && bRel);
		break;
	default:
		ASSERT(FALSE);
		break;
	}
	if(!bOk)
		m_bOk = bOk;
}