int main(int argc, char **argv) { struct particle *ptcl; struct run_param this_run; float *mesh; if(argc != 3) { fprintf(stderr, "Usage :: %s <input_prefix> <nmesh>\n", argv[0]); exit(EXIT_FAILURE); } input_header_file(&this_run, argv[1]); ptcl = (struct particle *)malloc(sizeof(struct particle)*this_run.npart_total); int nmesh = atoi(argv[2]); int nmesh_p2 = nmesh+2; mesh = (float *) malloc(sizeof(float)*nmesh*nmesh*nmesh_p2); input_data_all(ptcl, &this_run, argv[1]); calc_mesh_density(ptcl, mesh, nmesh, &this_run); calc_power(mesh, &this_run, nmesh); free(mesh); free(ptcl); }
uint16_t metering_get_power(void) { uint16_t tmp; /*check whether measurement is up to date */ if (clock_time() > clock_old) tmp = (clock_time() - clock_old); else tmp = (0xFFFF - clock_old + clock_time() + 1); if (tmp > OUT_OF_DATE_TIME * CLOCK_SECOND) metering_power = 0; #if S0_ENABLE else if (metering_power != 0 && tmp > 2 * (((uint32_t)metering_reference_value*10) / (uint32_t)metering_power)) //S0 calibration is scaled #else else if (metering_power != 0 && tmp > 2 * (metering_reference_value / metering_power)) #endif metering_power = calc_power(tmp); return metering_power; }