示例#1
0
/********************************* Main *********************************/
int main(int argc , char *argv[])
{
	init();
	//wait for receive to connect to server
	sleep(5);
	/*************************** Superloop ***************************/
	while(1)
	{	// Send request 
		if (data.VFDState == ON_VFD)
		{
			updateFlowRate();
		}
		sendPacketToVfd();
		// Wait ~1 second
		usleep(M_SEC(3000));	//925ms
		// Get data from serial and send to server
		if(getDataFromSerial())
		{
			sendDataToSever();
		}
	}

	pthread_join( thread_id, NULL);
	return 0;
}
bool
FiniteStrainHyperElasticViscoPlastic::solveFlowrate()
{
  Real resid0, rnorm;
  unsigned int iter = 0;

#ifdef DEBUG
  std::vector<Real> rnormst(_maxiters+1),flowratest(_maxiters+1);
#endif

  if (!computeFlowRateResidual())
    return false;

  rnorm = computeNorm(_resid.get_values());
  resid0 = rnorm;

#ifdef DEBUG
  rnormst[iter] = rnorm;
  flowratest[iter] = computeNorm(_flow_rate.get_values());
#endif

  while (rnorm > _resid_abs_tol && rnorm > _resid_rel_tol * resid0 && iter < _maxiters)
  {
    computeFlowRateJacobian();

    updateFlowRate();

    computeElasticPlasticDeformGrad();

    if (!computeFlowRateResidual())
      return false;

    rnorm = computeNorm(_resid.get_values());
    iter++;

#ifdef DEBUG
    rnormst[iter] = rnorm;
    flowratest[iter] = computeNorm(_flow_rate.get_values());
#endif
  }

  if (iter == _maxiters && rnorm > _resid_abs_tol && rnorm > _resid_rel_tol * resid0)
    return false;

  return true;
}