subroutine execute_model( model, & y0, z0, v0, b0, R0, gamma_oo, ac_speed, & runway_elev, surf_rho, i_hw, hw_avg, & ntemp, tempz, temp, theta, rho, bvfsq, & ncw, cwz, cw, cw_spln, nhw, hwz, hw, nq, qz, q, & t1, t2, n_steps, & nt_model, time_model, & y_model_p, z_model_p, cir_model_p, & y_model_s, z_model_s, cir_model_s, & tld, tssd ) implicit none include 'vpr20.h' real y0, z0, v0, b0, R0, gamma_oo, ac_speed, & runway_elev, surf_rho, hw_avg, & t1, t2, tld, tssd, & tempz(ntemp), temp(ntemp), theta(ntemp), rho(ntemp), & bvfsq(ntemp), cwz(ncw), cw(ncw), cw_spln(ncw), & hwz(nhw), hw(nhw), qz(nq), q(nq), & y_model_p(*), z_model_p(*), cir_model_p(*), & y_model_s(*), z_model_s(*), cir_model_s(*), time_model(*) integer i_hw, ntemp, ncw, nhw, nq, n_steps, nt_model character(12) model real rnt, ntog, flag select case( model ) case('viper30') call viper30( & y0, z0, b0, R0, gamma_oo, ac_speed, i_hw, & ntemp, tempz, theta, rho, bvfsq, & ncw, cwz, cw, cw_spln, nhw, hwz, hw, nq, qz, q, & t1, t2, n_steps, & nt_model, time_model, & y_model_p, z_model_p, cir_model_p, & y_model_s, z_model_s, cir_model_s ) tld = 0.0; tssd = 0.0 case('viper20' ) rnt = float(ntemp) ntog = -float(n_steps+1) call viper20( & y0,z0,v0,b0,zmf,zgf,gmf,grf,gng, & rnt,tempz,temp,rho,bvfsq, & ncw,cwz,cw,nhw,hwz,hw,nq,qz,q, & tlag_fac,tige1_fac, & t1,t2,ntog, & runway_elev,surf_rho,ac_speed,i_hw, & rte0, rte0_edr, rte0_n2, & rte1, rte1_edr, rte1_n2, & rte2, rte2_edr, rte2_n2, & a_grav, & vcdotsc, & vbdotsb, & a_ci, & aeff_b, & aeff_s, & alink, & a_ige_nge, & a_db, & a_particle, & nt_model,time_model, & y_model_p,z_model_p,cir_model_p, & y_model_s,z_model_s,cir_model_s, flag, & linear,hw_avg,tld,tssd) case default print *, 'ERROR: model ',trim(model),' is not valid' stop end select return end