int inter_tore(t_cod *cor, t_tmp *tmp, t_obj *obc, t_sph *obj_a) { double d0; double d1; double d2; double p0; double p1; double p2; double R; double r; double tmp2[4]; modif_lX(cor, obj_a, tmp); init_d(tmp, &d0, &d1, &d2); init_R_r(obj_a, &R, &r); init_p(tmp, &p0, &p1, &p2); tmp2[0] = X2(d0) + X2(d1) + X2(d2); tmp2[1] = d0 * p0 + d1 * p1 + d2 * p2; tmp2[2] = X2(p0) + X2(p1) + X2(p2) + X2(R) - X2(r); tmp->l_v[0] = X2(tmp2[0]); tmp->l_v[1] = 4 * tmp2[0] * tmp2[1]; tmp->l_v[2] = 2 * tmp2[0] * tmp2[2] + (4. * X2(tmp2[1])) - (4. * X2(R) * (X2(d0) + X2(d1))); tmp->l_c[0] = 4 * tmp2[1] * tmp2[2] - (8. * X2(R) * ((d0 * p0) + (d1 * p1))); tmp->l_c[1] = X2(tmp2[2]) - (4. * X2(R) * (X2(p0) + X2(p1))); return (ferari(tmp, obc)); }
void test() { struct st s; init_p(&(s.p)); double *pd = s.p; ASSERT(pd[0] == 42) }
void engine() { int i,j; static int lasttick = 0; int start = 0; for(i=0;i<4;i++) for(j=0;j<MAX_SPRITE_Z;j++){ sp_list[i][j].used = 0; } init_mem(); init_p(); i = 0; while(1){ while(tick - lasttick < REFRESH_TICKS); lasttick = tick; disable_irq(CLOCK_IRQ); disable_irq(KEYBOARD_IRQ); draw_rect(0,0,320,200,0); if(start == 0){ int key = get_lastkey(); if(key == VKEY_START){ start = 1; srand(tick/REFRESH_TICKS); } } else { main_p(); for(i=0;i<4;i++) for(j=0;j<MAX_SPRITE_Z;j++){ if(sp_list[i][j].used == 1){ sp_list[i][j].sp->t(sp_list[i][j].sp); sp_list[i][j].sp->d(sp_list[i][j].sp); } } } keys_len = 0; fill_screen(buf); enable_irq(KEYBOARD_IRQ); enable_irq(CLOCK_IRQ); } }
name_pointer #line 270 "./cwebdir/comm-w2c.ch" id_lookup P3C(char*,first,char*,last,char,t) #line 666 "./cwebdir/common.w" { char*i= first; int h; int l; name_pointer p; if(last==NULL)for(last= first;*last!='\0';last++); l= last-first; /*38:*/ #line 683 "./cwebdir/common.w" h= (unsigned char)*i; while(++i<last)h= (h+h+(int)((unsigned char)*i))%hash_size; /*:38*/ #line 673 "./cwebdir/common.w" ; /*39:*/ #line 691 "./cwebdir/common.w" p= hash[h]; while(p&&!names_match(p,first,l,t))p= p->link; if(p==NULL){ p= name_ptr; p->link= hash[h];hash[h]= p; } /*:39*/ #line 674 "./cwebdir/common.w" ; if(p==name_ptr)/*41:*/ #line 706 "./cwebdir/common.w" { if(byte_ptr+l> byte_mem_end)overflow("byte memory"); if(name_ptr>=name_dir_end)overflow("name"); strncpy(byte_ptr,first,l); (++name_ptr)->byte_start= byte_ptr+= l; if(program==cweave)init_p(p,t); } /*:41*/ #line 675 "./cwebdir/common.w" ; return(p); }
int main(void) { freopen("h.in","r",stdin); freopen("h.out","w",stdout); int i; int max,min; int s,e,a; int tcase=1; init_node(1,1,500000); while(EOF != scanf("%d",&n)) { init_p(); for(i=0;i<500006*4;i++) { node[i].max=-1; node[i].min=500006*4; } for(i=1;i<=n;i++) { scanf("%d",&a); insert(1,i,i,a); } scanf("%d",&m); for(i=0;i<m;i++) { scanf("%d%d",&s,&e); max=query_max(1,s,e); min=query_min(1,s,e); union_set(max,min); } scanf("%d",&k); printf("CASE %d\n",tcase); tcase++; for(i=0;i<k;i++) { scanf("%d%d",&s,&e); ps=find(s); pe=find(e); if(ps==pe) printf("YES\n"); else printf("NO\n"); } } return 0; }
virtual void init(const Opm::parameter::ParameterGroup& param, const Grid& grid, const Fluid& fluid, typename Grid::Vector gravity, State& simstate) { typedef typename Fluid::CompVec CompVec; typedef typename Fluid::PhaseVec PhaseVec; if (param.getDefault("heterogenous_initial_mix", false)) { CompVec init_oil(0.0); init_oil[Fluid::Oil] = 1.0; CompVec init_water(0.0); init_water[Fluid::Water] = 1.0; simstate.cell_z_.resize(grid.numCells()); std::fill(simstate.cell_z_.begin(), simstate.cell_z_.begin() + simstate.cell_z_.size()/2, init_oil); std::fill(simstate.cell_z_.begin() + simstate.cell_z_.size()/2, simstate.cell_z_.end(), init_water); OPM_MESSAGE("******* Assuming zero capillary pressures *******"); PhaseVec init_p(100.0*Opm::unit::barsa); simstate.cell_pressure_.resize(grid.numCells(), init_p); // if (gravity.two_norm() != 0.0) { // double ref_gravpot = grid.cellCentroid(0)*gravity; // double rho = init_z*fluid_.surfaceDensities(); // Assuming incompressible, and constant initial z. // for (int cell = 1; cell < grid.numCells(); ++cell) { // double press = rho*(grid.cellCentroid(cell)*gravity - ref_gravpot) + simstate.cell_pressure_[0][0]; // simstate.cell_pressure_[cell] = PhaseVec(press); // } // } } else if (param.getDefault("unstable_initial_mix", false)) { CompVec init_oil(0.0); init_oil[Fluid::Oil] = 1.0; init_oil[Fluid::Gas] = 0.0; CompVec init_water(0.0); init_water[Fluid::Water] = 1.0; CompVec init_gas(0.0); init_gas[Fluid::Gas] = 150.0; simstate.cell_z_.resize(grid.numCells()); std::fill(simstate.cell_z_.begin(), simstate.cell_z_.begin() + simstate.cell_z_.size()/3, init_water); std::fill(simstate.cell_z_.begin() + simstate.cell_z_.size()/3, simstate.cell_z_.begin() + 2*(simstate.cell_z_.size()/3), init_oil); std::fill(simstate.cell_z_.begin() + 2*(simstate.cell_z_.size()/3), simstate.cell_z_.end(), init_gas); OPM_MESSAGE("******* Assuming zero capillary pressures *******"); PhaseVec init_p(100.0*Opm::unit::barsa); simstate.cell_pressure_.resize(grid.numCells(), init_p); if (gravity.two_norm() != 0.0) { typename Fluid::FluidState state = fluid.computeState(simstate.cell_pressure_[0], simstate.cell_z_[0]); simstate.cell_z_[0] *= 1.0/state.total_phase_volume_density_; for (int cell = 1; cell < grid.numCells(); ++cell) { double fluid_vol_dens; int cnt =0; do { double rho = 0.5*((simstate.cell_z_[cell]+simstate.cell_z_[cell-1])*fluid.surfaceDensities()); double press = rho*((grid.cellCentroid(cell) - grid.cellCentroid(cell-1))*gravity) + simstate.cell_pressure_[cell-1][0]; simstate.cell_pressure_[cell] = PhaseVec(press); state = fluid.computeState(simstate.cell_pressure_[cell], simstate.cell_z_[cell]); fluid_vol_dens = state.total_phase_volume_density_; simstate.cell_z_[cell] *= 1.0/fluid_vol_dens; ++cnt; } while (std::fabs((fluid_vol_dens-1.0)) > 1.0e-8 && cnt < 10); } } else { std::cout << "---- Exit - BlackoilSimulator.hpp: No gravity, no fun ... ----" << std::endl; exit(-1); } } else if (param.getDefault("CO2-injection", false)) { CompVec init_water(0.0); // Initially water filled (use Oil-component for water in order // to utilise blackoil mechanisms for brine-co2 interaction) init_water[Fluid::Oil] = 1.0; simstate.cell_z_.resize(grid.numCells()); std::fill(simstate.cell_z_.begin(),simstate.cell_z_.end(),init_water); double datum_pressure_barsa = param.getDefault<double>("datum_pressure", 200.0); double datum_pressure = Opm::unit::convert::from(datum_pressure_barsa, Opm::unit::barsa); PhaseVec init_p(datum_pressure); simstate.cell_pressure_.resize(grid.numCells(), init_p); // Simple initial condition based on "incompressibility"-assumption double zMin = grid.cellCentroid(0)[2]; for (int cell = 1; cell < grid.numCells(); ++cell) { if (grid.cellCentroid(cell)[2] < zMin) zMin = grid.cellCentroid(cell)[2]; } typename Fluid::FluidState state = fluid.computeState(init_p, init_water); simstate.cell_z_[0] *= 1.0/state.total_phase_volume_density_; double density = (init_water*fluid.surfaceDensities())/state.total_phase_volume_density_; for (int cell = 0; cell < grid.numCells(); ++cell) { double pressure(datum_pressure + (grid.cellCentroid(cell)[2] - zMin)*gravity[2]*density); simstate.cell_pressure_[cell] = PhaseVec(pressure); state = fluid.computeState(simstate.cell_pressure_[cell], simstate.cell_z_[cell]); simstate.cell_z_[cell] *= 1.0/state.total_phase_volume_density_; } } else { CompVec init_z(0.0); double initial_mixture_gas = param.getDefault("initial_mixture_gas", 0.0); double initial_mixture_oil = param.getDefault("initial_mixture_oil", 1.0); double initial_mixture_water = param.getDefault("initial_mixture_water", 0.0); init_z[Fluid::Water] = initial_mixture_water; init_z[Fluid::Gas] = initial_mixture_gas; init_z[Fluid::Oil] = initial_mixture_oil; simstate.cell_z_.resize(grid.numCells(), init_z); OPM_MESSAGE("******* Assuming zero capillary pressures *******"); PhaseVec init_p(param.getDefault("initial_pressure", 100.0*Opm::unit::barsa)); simstate.cell_pressure_.resize(grid.numCells(), init_p); if (gravity.two_norm() != 0.0) { double ref_gravpot = grid.cellCentroid(0)*gravity; double rho = init_z*fluid.surfaceDensities(); // Assuming incompressible, and constant initial z. for (int cell = 1; cell < grid.numCells(); ++cell) { double press = rho*(grid.cellCentroid(cell)*gravity - ref_gravpot) + simstate.cell_pressure_[0][0]; simstate.cell_pressure_[cell] = PhaseVec(press); } } } }