/********************************* 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; }