/*---------------------------------------------------------------------------- ; FUNCTION CODE ----------------------------------------------------------------------------*/ void code_10i40_35bits( Word16 x[], /* (i) : target vector */ Word16 cn[], /* (i) : residual after long term prediction */ Word16 h[], /* (i) : impulse response of weighted synthesis filter h[-L_subfr..-1] must be set to zero */ Word16 cod[], /* (o) : algebraic (fixed) codebook excitation */ Word16 y[], /* (o) : filtered fixed codebook excitation */ Word16 indx[], /* (o) : index of 10 pulses (sign + position) */ Flag *pOverflow /* (i/o) : overflow Flag */ ) { Word16 ipos[NB_PULSE], pos_max[NB_TRACK], codvec[NB_PULSE]; Word16 dn[L_CODE], sign[L_CODE]; Word16 rr[L_CODE][L_CODE], i; cor_h_x(h, x, dn, 2, pOverflow); set_sign12k2(dn, cn, sign, pos_max, NB_TRACK, ipos, STEP, pOverflow); cor_h(h, sign, rr, pOverflow); search_10and8i40(NB_PULSE, STEP, NB_TRACK, dn, rr, ipos, pos_max, codvec, pOverflow); build_code(codvec, sign, cod, h, y, indx, pOverflow); for (i = 0; i < 10; i++) { q_p(&indx[i], i); } return; }
void Movement1D::tick (const Soil& soil, SoilWater& soil_water, const SoilHeat& soil_heat, Surface& surface, Groundwater& groundwater, const Time& time, const Weather& weather, const double dt, Treelog& msg) { const size_t edge_size = geo->edge_size (); const size_t cell_size = geo->cell_size (); TREELOG_MODEL (msg); // Cells. std::vector<double> S_sum (cell_size); std::vector<double> h_old (cell_size); std::vector<double> Theta_old (cell_size); std::vector<double> h_ice (cell_size); std::vector<double> h (cell_size); std::vector<double> Theta (cell_size); for (size_t c = 0; c < cell_size; c++) { S_sum[c] = soil_water.S_sum (c); h_old[c] = soil_water.h_old (c); Theta_old[c] = soil_water.Theta_old (c); h_ice[c] = soil_water.h_ice (c); h[c] = soil_water.h (c); Theta[c] = soil_water.Theta (c); } // Edges. std::vector<double> q (edge_size, 0.0); std::vector<double> q_p (edge_size, 0.0); for (size_t e = 0; e < edge_size; e++) { q[e] = soil_water.q_matrix (e); q_p[e] = soil_water.q_tertiary (e); } tick_water (*geo, soil, soil_heat, surface, groundwater, S_sum, h_old, Theta_old, h_ice, h, Theta, q, q_p, dt, msg); soil_water.set_matrix (h, Theta, q); }