Télécharger conjp2.eso

Retour à la liste

Numérotation des lignes :

conjp2
  1. C CONJP2 SOURCE CB215821 16/04/21 21:15:57 8920
  2. SUBROUTINE CONJP2(JL,JR,WVEC_L,WVEC_R,NVECT,TVECT,
  3. & ga)
  4. C************************************************************************
  5. C
  6. C PROJET : CASTEM 2000
  7. C
  8. C NOM : CONJP2
  9. C
  10. C DESCRIPTION : Voir KONJP2
  11. C
  12. C LANGAGE : FORTRAN 77 + ESOPE 2000 (avec estensions CISI)
  13. C
  14. C AUTEUR : S. KUDRIAKOV, DM2S/SFME/LTMF
  15. C
  16. C************************************************************************
  17. C
  18. c----------------------------------------------------------------------
  19. c GENERAL DESCRIPTION:
  20. c This subroutine provides the jacobians which are the derivatives
  21. c of the numerical flux function defined at the cell interface
  22. c with respect to the primitive variables of the left and right
  23. c cells (relative to the cell interface).
  24. c
  25. c EQUATIONS: 2D Euler equations of gas dynamics
  26. c
  27. c
  28. c REFERENCE: JCP, 129, 364-382 (1996)
  29. c " A Sequel to AUSM: AUSM+ ".
  30. c----------------------------------------------------------------------
  31. c INPUT:
  32. c
  33. c alpha -- parameter of the AUSM+ scheme in the Pressure function;
  34. c ( -3/4 <= alpha <= 3/16 ) (imposed as a parameter)
  35. c
  36. c beta -- parameter of the AUSM+ scheme in the Mach function;
  37. c ( -1/16 <= beta <= 1/2 ) (imposed as a parameter)
  38. c
  39. c wvec_l -- vector of the primitive variables (rho,ux,uy,p) at the
  40. c left cell;
  41. c
  42. c wvec_r -- vector of the primitive variables (rho,ux,uy,p) at the
  43. c right cell;
  44. c
  45. c nvect -- normal vector to the interface (2 components in 2D);
  46. c
  47. c tvect -- tangential vector to the interface;
  48. c
  49. c ga -- ratio of the specific heats (assumed constant)
  50. c----------------------------------------------------------------------
  51. c
  52. c OUTPUT:
  53. c
  54. c jl -- jakobian matrix 4 by 4 - derivatives of the numerical
  55. c flux function with respect to the primitive variables
  56. c from the left cell;
  57. c
  58. c jr -- jakobian matrix 4 by 4 - derivatives of the numerical
  59. c flux function with respect to the primitive variables
  60. c from the right cell.
  61. c
  62. c N.B. Numerical flux function is given by
  63. c \rho un
  64. c \rho un ux + p (n.x)
  65. c \rho un uy + p (n.y)
  66. c \rho un ht
  67. c----------------------------------------------------------------------
  68. IMPLICIT INTEGER(I-N)
  69. real*8 wvec_l(4),wvec_r(4)
  70. real*8 nvect(2),tvect(2)
  71. real*8 jl(4,4),jr(4,4),f(4)
  72. real*8 alpha,beta
  73. real*8 ga, gm1,temph
  74. real*8 n_x,n_y,t_x,t_y
  75. real*8 un_l, un_r, ut_l, ut_r
  76. real*8 ml,mr,Mplus,Mmin,mmid
  77. real*8 mpl_m, mmin_m,am
  78. real*8 rold_l,uold_l,vold_l,pold_l,eold_l
  79. real*8 rold_r,uold_r,vold_r,pold_r,eold_r
  80. real*8 Pplus,Pmin,pmid
  81. real*8 hr_l,hr_r,det
  82. real*8 br1,br2,br3,br4,temp_l,temp_r,brac_l,brac_r
  83. real*8 aleft, arigh
  84. real*8 damr_l,damr_r,damu_l,damu_r
  85. real*8 damv_l,damv_r,damp_l,damp_r
  86. real*8 dmlr_l,dmlr_r,dmlu_l,dmlu_r
  87. real*8 dmlv_l,dmlv_r,dmlp_l,dmlp_r
  88. real*8 dmrr_l,dmrr_r,dmru_l,dmru_r
  89. real*8 dmrv_l,dmrv_r,dmrp_l,dmrp_r
  90. real*8 dMpr_l,dMpr_r,dMpu_l,dMpu_r
  91. real*8 dMpv_l,dMpv_r,dMpp_l,dMpp_r
  92. real*8 dMmr_l,dMmr_r,dMmu_l,dMmu_r
  93. real*8 dMmv_l,dMmv_r,dMmp_l,dMmp_r
  94. real*8 dmir_l,dmir_r,dmiu_l,dmiu_r
  95. real*8 dmiv_l,dmiv_r,dmip_l,dmip_r
  96. real*8 d3mr_l,d3mr_r,d3mu_l,d3mu_r
  97. real*8 d3mv_l,d3mv_r,d3mp_l,d3mp_r
  98. real*8 d2mr_l,d2mr_r,d2mu_l,d2mu_r
  99. real*8 d2mv_l,d2mv_r,d2mp_l,d2mp_r
  100. real*8 dPpr_l,dPpr_r,dPpu_l,dPpu_r
  101. real*8 dPpv_l,dPpv_r,dPpp_l,dPpp_r
  102. real*8 dPmr_l,dPmr_r,dPmu_l,dPmu_r
  103. real*8 dPmv_l,dPmv_r,dPmp_l,dPmp_r
  104. real*8 dpir_l,dpir_r,dpiu_l,dpiu_r
  105. real*8 dpiv_l,dpiv_r,dpip_l,dpip_r
  106. parameter(alpha = 0.1875D0, beta = 0.125D0)
  107. c-----------------------
  108. gm1=ga-1.0d0
  109. c-----------------------
  110. n_x=nvect(1)
  111. n_y=nvect(2)
  112. t_x=tvect(1)
  113. t_y=tvect(2)
  114. c----------------------------
  115. c----------------------------
  116. rold_l=wvec_l(1)
  117. uold_l=wvec_l(2)
  118. vold_l=wvec_l(3)
  119. pold_l=wvec_l(4)
  120. c-----------------------
  121. rold_r=wvec_r(1)
  122. uold_r=wvec_r(2)
  123. vold_r=wvec_r(3)
  124. pold_r=wvec_r(4)
  125. c------------------------------------------------------------------
  126. c Computation of the specific total energy on the left and right.
  127. c------------------------------------------------------------------
  128. eold_l=(uold_l*uold_l+vold_l*vold_l)/2.0d0
  129. eold_l=eold_l+pold_l/(gm1*rold_l)
  130. eold_r=(uold_r*uold_r+vold_r*vold_r)/2.0d0
  131. eold_r=eold_r+pold_r/(gm1*rold_r)
  132. c-------------------------------------------------------------------
  133. c Computation of the speed of sound and its derivatives;
  134. c numerical speed of sound at the interface is taken as an average
  135. c of the speeds of sounds of the neighbouring cells
  136. c-------------------------------------------------------------------
  137. aleft=SQRT(ga*pold_l/rold_l)
  138. arigh=SQRT(ga*pold_r/rold_r)
  139. am=0.5d0*(aleft+arigh)
  140. c-------------------------------------------------------------------
  141. damr_r=-arigh/(4.0d0*rold_r)
  142. damu_r=0.0d0
  143. damv_r=0.0d0
  144. damp_r=ga/(4.0d0*arigh*rold_r)
  145. c-----------------------
  146. damr_l=-aleft/(4.0d0*rold_l)
  147. damu_l=0.0d0
  148. damv_l=0.0d0
  149. damp_l=ga/(4.0d0*aleft*rold_l)
  150. c-------------------------------------------------------------------
  151. c Computing numerical Mach number and its derivatives,
  152. c see p.370, under (A1).
  153. c-------------------------------------------------------------------
  154. un_l=uold_l*n_x+vold_l*n_y
  155. un_r=uold_r*n_x+vold_r*n_y
  156. ut_l=uold_l*t_x+vold_l*t_y
  157. ut_r=uold_r*t_x+vold_r*t_y
  158. c-------------------------------------------------------------------
  159. ml=un_l/am
  160. mr=un_r/am
  161. c-------------------------------------------------------------------
  162. c Mplus and Mmin are calligraphic lettes M+ and M- from the paper,
  163. c see (19a) and (19b), p.367.
  164. c-------------------------------------------------------------------
  165. if(ABS(ml) .ge. 1.0d0) then
  166. Mplus=(ml+ABS(ml))/2.0d0
  167. else
  168. Mplus=(ml+1.0d0)*(ml+1.0d0)/4.0d0
  169. Mplus=Mplus+beta*(ml*ml-1.0d0)*(ml*ml-1.0d0)
  170. endif
  171. c-------------------------------------------------------------------
  172. if(ABS(mr) .ge. 1.0d0) then
  173. Mmin=(mr-ABS(mr))/2.0d0
  174. else
  175. Mmin=-(mr-1.0d0)*(mr-1.0d0)/4.0d0
  176. Mmin=Mmin-beta*(mr*mr-1.0d0)*(mr*mr-1.0d0)
  177. endif
  178. c-------------------------------------------------------------------
  179. c Derivatives of ml and mr with respect to both sets of primitive
  180. c variables: left and right.
  181. c-------------------------------------------------------------------
  182. temp_l=-un_l/(am*am)
  183. temp_r=-un_r/(am*am)
  184. c--------
  185. dmlr_l=temp_l*damr_l
  186. dmlr_r=temp_l*damr_r
  187. dmrr_l=temp_r*damr_l
  188. dmrr_r=temp_r*damr_r
  189. c--------
  190. dmlu_l=n_x/am+temp_l*damu_l
  191. dmlu_r=temp_l*damu_r
  192. dmru_l=temp_r*damu_l
  193. dmru_r=n_x/am+temp_r*damu_r
  194. c--------
  195. dmlv_l=n_y/am+temp_l*damv_l
  196. dmlv_r=temp_l*damv_r
  197. dmrv_l=temp_r*damv_l
  198. dmrv_r=n_y/am+temp_r*damv_r
  199. c--------
  200. dmlp_l=temp_l*damp_l
  201. dmlp_r=temp_l*damp_r
  202. dmrp_l=temp_r*damp_l
  203. dmrp_r=temp_r*damp_r
  204. c-----------------------------------------------------------
  205. c mmid is m_{1/2} (notation as in the paper, see (13),p.366)
  206. c-----------------------------------------------------------
  207. mmid=Mplus+Mmin
  208. c-----------------------------------------------------------
  209. c Computing the derivatives of M+ and M-
  210. c-----------------------------------------------------------
  211. if(ml .ge. 1.0d0) then
  212. dMpr_l=dmlr_l
  213. dMpu_l=dmlu_l
  214. dMpv_l=dmlv_l
  215. dMpp_l=dmlp_l
  216. c--------------------
  217. dMpr_r=dmlr_r
  218. dMpu_r=dmlu_r
  219. dMpv_r=dmlv_r
  220. dMpp_r=dmlp_r
  221. else
  222. if((ml .gt. -1.0d0) .and. (ml .lt. 1.0d0)) then
  223. temph=(ml+1.0d0)/2.0d0
  224. dMpr_l=(temph+4.0d0*beta*ml*(ml*ml-1.0d0))*dmlr_l
  225. dMpu_l=(temph+4.0d0*beta*ml*(ml*ml-1.0d0))*dmlu_l
  226. dMpv_l=(temph+4.0d0*beta*ml*(ml*ml-1.0d0))*dmlv_l
  227. dMpp_l=(temph+4.0d0*beta*ml*(ml*ml-1.0d0))*dmlp_l
  228. c--------------------
  229. dMpr_r=(temph+4.0d0*beta*ml*(ml*ml-1.0d0))*dmlr_r
  230. dMpu_r=(temph+4.0d0*beta*ml*(ml*ml-1.0d0))*dmlu_r
  231. dMpv_r=(temph+4.0d0*beta*ml*(ml*ml-1.0d0))*dmlv_r
  232. dMpp_r=(temph+4.0d0*beta*ml*(ml*ml-1.0d0))*dmlp_r
  233. else
  234. dMpr_l=0.0d0
  235. dMpu_l=0.0d0
  236. dMpv_l=0.0d0
  237. dMpp_l=0.0d0
  238. c---------------------
  239. dMpr_r=0.0d0
  240. dMpu_r=0.0d0
  241. dMpv_r=0.0d0
  242. dMpp_r=0.0d0
  243. endif
  244. endif
  245. c-----------------------------------------------------------
  246. if(mr .ge. 1.0d0) then
  247. dMmr_l=0.0d0
  248. dMmu_l=0.0d0
  249. dMmv_l=0.0d0
  250. dMmp_l=0.0d0
  251. c---------------------
  252. dMmr_r=0.0d0
  253. dMmu_r=0.0d0
  254. dMmv_r=0.0d0
  255. dMmp_r=0.0d0
  256. else
  257. if((mr .gt. -1.0d0) .and. (mr .lt. 1.0d0)) then
  258. temph=(-mr+1.0d0)/2.0d0
  259. dMmr_l=(temph-4.0d0*beta*mr*(mr*mr-1.0d0))*dmrr_l
  260. dMmu_l=(temph-4.0d0*beta*mr*(mr*mr-1.0d0))*dmru_l
  261. dMmv_l=(temph-4.0d0*beta*mr*(mr*mr-1.0d0))*dmrv_l
  262. dMmp_l=(temph-4.0d0*beta*mr*(mr*mr-1.0d0))*dmrp_l
  263. c--------------------
  264. dMmr_r=(temph-4.0d0*beta*mr*(mr*mr-1.0d0))*dmrr_r
  265. dMmu_r=(temph-4.0d0*beta*mr*(mr*mr-1.0d0))*dmru_r
  266. dMmv_r=(temph-4.0d0*beta*mr*(mr*mr-1.0d0))*dmrv_r
  267. dMmp_r=(temph-4.0d0*beta*mr*(mr*mr-1.0d0))*dmrp_r
  268. else
  269. dMmr_l=dmrr_l
  270. dMmu_l=dmru_l
  271. dMmv_l=dmrv_l
  272. dMmp_l=dmrp_l
  273. c--------------------
  274. dMmr_r=dmrr_r
  275. dMmu_r=dmru_r
  276. dMmv_r=dmrv_r
  277. dMmp_r=dmrp_r
  278. endif
  279. endif
  280. c-----------------------------------------------------------------
  281. c computing the derivatives of m_{1/2} (notation as in the paper)
  282. c-----------------------------------------------------------------
  283. dmir_l=dMpr_l+dMmr_l
  284. dmir_r=dMpr_r+dMmr_r
  285. c-------------
  286. dmiu_l=dMpu_l+dMmu_l
  287. dmiu_r=dMpu_r+dMmu_r
  288. c-------------
  289. dmiv_l=dMpv_l+dMmv_l
  290. dmiv_r=dMpv_r+dMmv_r
  291. c-------------
  292. dmip_l=dMpp_l+dMmp_l
  293. dmip_r=dMpp_r+dMmp_r
  294. c----------------------------------------------------------------
  295. c computing the main convective variables and their derivatives
  296. c mpl_m is m^{+}_{1/2} (paper's notation) and
  297. c mmin_m is m^{-}_{1/2} (paper's notation), see (A2) on p.370.
  298. c----------------------------------------------------------------
  299. if(mmid .ge. 0.0d0) then
  300. mpl_m = mmid
  301. d2mr_l=dmir_l
  302. d2mu_l=dmiu_l
  303. d2mv_l=dmiv_l
  304. d2mp_l=dmip_l
  305. c------------
  306. d2mr_r=dmir_r
  307. d2mu_r=dmiu_r
  308. d2mv_r=dmiv_r
  309. d2mp_r=dmip_r
  310. c------------
  311. else
  312. mpl_m = 0.0d0
  313. d2mr_l=0.0d0
  314. d2mu_l=0.0d0
  315. d2mv_l=0.0d0
  316. d2mp_l=0.0d0
  317. c------------
  318. d2mr_r=0.0d0
  319. d2mu_r=0.0d0
  320. d2mv_r=0.0d0
  321. d2mp_r=0.0d0
  322. endif
  323. c---------------------------------------------
  324. if(mmid .le. 0.0d0) then
  325. mmin_m = mmid
  326. d3mr_l=dmir_l
  327. d3mu_l=dmiu_l
  328. d3mv_l=dmiv_l
  329. d3mp_l=dmip_l
  330. c------------
  331. d3mr_r=dmir_r
  332. d3mu_r=dmiu_r
  333. d3mv_r=dmiv_r
  334. d3mp_r=dmip_r
  335. c------------
  336. else
  337. mmin_m = 0.0d0
  338. d3mr_l=0.0d0
  339. d3mu_l=0.0d0
  340. d3mv_l=0.0d0
  341. d3mp_l=0.0d0
  342. c------------
  343. d3mr_r=0.0d0
  344. d3mu_r=0.0d0
  345. d3mv_r=0.0d0
  346. d3mp_r=0.0d0
  347. endif
  348. c---------------------------------------------------------------
  349. c Computing the calligraphic P+ and P- with their derivatives,
  350. c see (21a) & (21b) on p.368.
  351. c---------------------------------------------------------------
  352. if(ml .ge. 1.0d0) then
  353. Pplus = 1.0d0
  354. else
  355. if((ml .gt. -1.0d0) .and. (ml .lt. 1.0d0)) then
  356. Pplus=(ml+1.0d0)*(ml+1.0d0)*(2.0d0-ml)/4.0d0
  357. Pplus=Pplus+alpha*ml*(ml*ml-1.0d0)*(ml*ml-1.0d0)
  358. else
  359. Pplus = 0.0d0
  360. endif
  361. endif
  362. c---------------------------------------------------------------
  363. if(mr .ge. 1.0d0) then
  364. Pmin = 0.0d0
  365. else
  366. if((mr .gt. -1.0d0) .and. (mr .lt. 1.0d0)) then
  367. Pmin=(mr-1.0d0)*(mr-1.0d0)*(2.0d0+mr)/4.0d0
  368. Pmin=Pmin-alpha*mr*(mr*mr-1.0d0)*(mr*mr-1.0d0)
  369. else
  370. Pmin = 1.0d0
  371. endif
  372. endif
  373. c---------------------------------------------------------------
  374. brac_l=(ml+1.0d0)*(2.0d0-ml)/2.0d0-(ml+1.0d0)*(ml+1.0d0)/4.0d0
  375. brac_l=brac_l+alpha*(ml*ml-1.0d0)*(ml*ml-1.0d0)
  376. brac_l=brac_l+4.0d0*alpha*ml*ml*(ml*ml-1.0d0)
  377. c--------------
  378. brac_r=(mr-1.0d0)*(2.0d0+mr)/2.0d0+(mr-1.0d0)*(mr-1.0d0)/4.0d0
  379. brac_r=brac_r-alpha*(mr*mr-1.0d0)*(mr*mr-1.0d0)
  380. brac_r=brac_r-4.0d0*alpha*mr*mr*(mr*mr-1.0d0)
  381. c---------------------------------------------------------------
  382. if((ml .gt. -1.0d0) .and. (ml .lt. 1.0d0)) then
  383. dPpr_l=brac_l*dmlr_l
  384. dPpr_r=brac_l*dmlr_r
  385. c------------
  386. dPpu_l=brac_l*dmlu_l
  387. dPpu_r=brac_l*dmlu_r
  388. c------------
  389. dPpv_l=brac_l*dmlv_l
  390. dPpv_r=brac_l*dmlv_r
  391. c------------
  392. dPpp_l=brac_l*dmlp_l
  393. dPpp_r=brac_l*dmlp_r
  394. c------------
  395. else
  396. dPpr_l=0.0d0
  397. dPpr_r=0.0d0
  398. c-----------
  399. dPpu_l=0.0d0
  400. dPpu_r=0.0d0
  401. c-----------
  402. dPpv_l=0.0d0
  403. dPpv_r=0.0d0
  404. c-----------
  405. dPpp_l=0.0d0
  406. dPpp_r=0.0d0
  407. c-----------
  408. endif
  409. c---------------------------------------------------------------
  410. if((mr .gt. -1.0d0) .and. (mr .lt. 1.0d0)) then
  411. dPmr_l=brac_r*dmrr_l
  412. dPmr_r=brac_r*dmrr_r
  413. c------------
  414. dPmu_l=brac_r*dmru_l
  415. dPmu_r=brac_r*dmru_r
  416. c------------
  417. dPmv_l=brac_r*dmrv_l
  418. dPmv_r=brac_r*dmrv_r
  419. c------------
  420. dPmp_l=brac_r*dmrp_l
  421. dPmp_r=brac_r*dmrp_r
  422. c------------
  423. else
  424. dPmr_l=0.0d0
  425. dPmr_r=0.0d0
  426. c-----------
  427. dPmu_l=0.0d0
  428. dPmu_r=0.0d0
  429. c-----------
  430. dPmv_l=0.0d0
  431. dPmv_r=0.0d0
  432. c-----------
  433. dPmp_l=0.0d0
  434. dPmp_r=0.0d0
  435. c-----------
  436. endif
  437. c-------------------------------------------------------------------
  438. c computing pmid -- p_{1/2} and its derivatives, see (20b), p.367.
  439. c-------------------------------------------------------------------
  440. pmid=Pplus*pold_l + Pmin*pold_r
  441. dpir_l=dPpr_l*pold_l+dPmr_l*pold_r
  442. dpiu_l=dPpu_l*pold_l+dPmu_l*pold_r
  443. dpiv_l=dPpv_l*pold_l+dPmv_l*pold_r
  444. dpip_l=dPpp_l*pold_l+Pplus+dPmp_l*pold_r
  445. c----------------------------
  446. dpir_r=dPpr_r*pold_l+dPmr_r*pold_r
  447. dpiu_r=dPpu_r*pold_l+dPmu_r*pold_r
  448. dpiv_r=dPpv_r*pold_l+dPmv_r*pold_r
  449. dpip_r=dPpp_r*pold_l+Pmin+dPmp_r*pold_r
  450. c---------------------------------------------------------------------
  451. c computing JACOBIAN as a derivative of the numerical flux function
  452. c with respect to the primitive variables.
  453. c Notation: jl(i,j) --- is the derivative of the i-component of the
  454. c flux function with respect to the j-component of the
  455. c vector of primitive variables of the left state.
  456. c jr(i,j) --- is the derivative of the i-component of the
  457. c flux function with respect to the j-component of the
  458. c vector of primitive variables of the right state.
  459. c---------------------------------------------------------------------
  460. f(1)=am*(mpl_m*rold_l+mmin_m*rold_r)
  461. c---------------------------------------------------------------------
  462. jl(1,1)=damr_l*f(1)/am+am*(d2mr_l*rold_l+mpl_m)
  463. jl(1,1)=jl(1,1)+am*d3mr_l*rold_r
  464. jl(1,2)=damu_l*f(1)/am+am*(d2mu_l*rold_l+d3mu_l*rold_r)
  465. jl(1,3)=damv_l*f(1)/am+am*(d2mv_l*rold_l+d3mv_l*rold_r)
  466. jl(1,4)=damp_l*f(1)/am+am*(d2mp_l*rold_l+d3mp_l*rold_r)
  467. c------------------------------------
  468. jr(1,1)=damr_r*f(1)/am+am*(d2mr_r*rold_l+mmin_m)
  469. jr(1,1)=jr(1,1)+am*d3mr_r*rold_r
  470. jr(1,2)=damu_r*f(1)/am+am*(d2mu_r*rold_l+d3mu_r*rold_r)
  471. jr(1,3)=damv_r*f(1)/am+am*(d2mv_r*rold_l+d3mv_r*rold_r)
  472. jr(1,4)=damp_r*f(1)/am+am*(d2mp_r*rold_l+d3mp_r*rold_r)
  473. c------------------------------------
  474. c------------------------------------
  475. br1=mpl_m*rold_l*un_l+mmin_m*rold_r*un_r
  476. br2=mpl_m*rold_l*ut_l+mmin_m*rold_r*ut_r
  477. f(2)=n_x*(am*br1+pmid)+am*t_x*br2
  478. c------------------
  479. det=n_x*t_y-n_y*t_x
  480. c---------------------------------------------------------
  481. br3=d2mr_l*rold_l*un_l+mpl_m*un_l+d3mr_l*rold_r*un_r
  482. br4=d2mr_l*rold_l*ut_l+mpl_m*ut_l+d3mr_l*rold_r*ut_r
  483. jl(2,1)=n_x*(damr_l*br1+am*br3+dpir_l)
  484. jl(2,1)=jl(2,1)+t_x*damr_l*br2+am*t_x*br4
  485. c-------------------
  486. br3=d2mu_l*rold_l*un_l+mpl_m*rold_l*t_y/det
  487. br3=br3+d3mu_l*rold_r*un_r
  488. br4=d2mu_l*rold_l*ut_l+mpl_m*rold_l*(-n_y)/det
  489. br4=br4+d3mu_l*rold_r*ut_r
  490. jl(2,2)=n_x*(damu_l*br1+am*br3+dpiu_l)
  491. jl(2,2)=jl(2,2)+t_x*damu_l*br2+am*t_x*br4
  492. c-------------------
  493. br3=d2mv_l*rold_l*un_l+mpl_m*rold_l*(-t_x)/det
  494. br3=br3+d3mv_l*rold_r*un_r
  495. br4=d2mv_l*rold_l*ut_l+mpl_m*rold_l*n_x/det
  496. br4=br4+d3mv_l*rold_r*ut_r
  497. jl(2,3)=n_x*(damv_l*br1+am*br3+dpiv_l)
  498. jl(2,3)=jl(2,3)+t_x*damv_l*br2+am*t_x*br4
  499. c-------------------
  500. br3=d2mp_l*rold_l*un_l+d3mp_l*rold_r*un_r
  501. br4=d2mp_l*rold_l*ut_l+d3mp_l*rold_r*ut_r
  502. jl(2,4)=n_x*(damp_l*br1+am*br3+dpip_l)
  503. jl(2,4)=jl(2,4)+t_x*damp_l*br2+am*t_x*br4
  504. c-------------------------------------------------------------
  505. br3=d2mr_r*rold_l*un_l+mmin_m*un_r+d3mr_r*rold_r*un_r
  506. br4=d2mr_r*rold_l*ut_l+mmin_m*ut_r+d3mr_r*rold_r*ut_r
  507. jr(2,1)=n_x*(damr_r*br1+am*br3+dpir_r)
  508. jr(2,1)=jr(2,1)+t_x*damr_r*br2+am*t_x*br4
  509. c-------------------
  510. br3=d2mu_r*rold_l*un_l+mmin_m*rold_r*t_y/det
  511. br3=br3+d3mu_r*rold_r*un_r
  512. br4=d2mu_r*rold_l*ut_l+mmin_m*rold_r*(-n_y/det)
  513. br4=br4+d3mu_r*rold_r*ut_r
  514. jr(2,2)=n_x*(damu_r*br1+am*br3+dpiu_r)
  515. jr(2,2)=jr(2,2)+t_x*damu_r*br2+am*t_x*br4
  516. c-------------------
  517. br3=d2mv_r*rold_l*un_l+mmin_m*rold_r*(-t_x/det)
  518. br3=br3+d3mv_r*rold_r*un_r
  519. br4=d2mv_r*rold_l*ut_l+mmin_m*rold_r*n_x/det
  520. br4=br4+d3mv_r*rold_r*ut_r
  521. jr(2,3)=n_x*(damv_r*br1+am*br3+dpiv_r)
  522. jr(2,3)=jr(2,3)+t_x*damv_r*br2+am*t_x*br4
  523. c-------------------
  524. br3=d2mp_r*rold_l*un_l+d3mp_r*rold_r*un_r
  525. br4=d2mp_r*rold_l*ut_l+d3mp_r*rold_r*ut_r
  526. jr(2,4)=n_x*(damp_r*br1+am*br3+dpip_r)
  527. jr(2,4)=jr(2,4)+t_x*damp_r*br2+am*t_x*br4
  528. c-------------------------------------------------------------
  529. c-------------------------------------------------------------
  530. br1=mpl_m*rold_l*un_l+mmin_m*rold_r*un_r
  531. br2=mpl_m*rold_l*ut_l+mmin_m*rold_r*ut_r
  532. f(3)=n_y*(am*br1+pmid)+am*t_y*br2
  533. br3=d2mr_l*rold_l*un_l+mpl_m*un_l+d3mr_l*rold_r*un_r
  534. br4=d2mr_l*rold_l*ut_l+mpl_m*ut_l+d3mr_l*rold_r*ut_r
  535. jl(3,1)=n_y*(damr_l*br1+am*br3+dpir_l)
  536. jl(3,1)=jl(3,1)+t_y*damr_l*br2+am*t_y*br4
  537. c-------------------
  538. br3=d2mu_l*rold_l*un_l+mpl_m*rold_l*t_y/det
  539. br3=br3+d3mu_l*rold_r*un_r
  540. br4=d2mu_l*rold_l*ut_l+mpl_m*rold_l*(-n_y/det)
  541. br4=br4+d3mu_l*rold_r*ut_r
  542. jl(3,2)=n_y*(damu_l*br1+am*br3+dpiu_l)
  543. jl(3,2)=jl(3,2)+t_y*damu_l*br2+am*t_y*br4
  544. c-------------------
  545. br3=d2mv_l*rold_l*un_l+mpl_m*rold_l*(-t_x/det)
  546. br3=br3+d3mv_l*rold_r*un_r
  547. br4=d2mv_l*rold_l*ut_l+mpl_m*rold_l*n_x/det
  548. br4=br4+d3mv_l*rold_r*ut_r
  549. jl(3,3)=n_y*(damv_l*br1+am*br3+dpiv_l)
  550. jl(3,3)=jl(3,3)+t_y*damv_l*br2+am*t_y*br4
  551. c-------------------
  552. br3=d2mp_l*rold_l*un_l+d3mp_l*rold_r*un_r
  553. br4=d2mp_l*rold_l*ut_l+d3mp_l*rold_r*ut_r
  554. jl(3,4)=n_y*(damp_l*br1+am*br3+dpip_l)
  555. jl(3,4)=jl(3,4)+t_y*damp_l*br2+am*t_y*br4
  556. c-------------------------------------------------------------
  557. br3=d2mr_r*rold_l*un_l+mmin_m*un_r+d3mr_r*rold_r*un_r
  558. br4=d2mr_r*rold_l*ut_l+mmin_m*ut_r+d3mr_r*rold_r*ut_r
  559. jr(3,1)=n_y*(damr_r*br1+am*br3+dpir_r)
  560. jr(3,1)=jr(3,1)+t_y*damr_r*br2+am*t_y*br4
  561. c-------------------
  562. br3=d2mu_r*rold_l*un_l+mmin_m*rold_r*t_y/det
  563. br3=br3+d3mu_r*rold_r*un_r
  564. br4=d2mu_r*rold_l*ut_l+mmin_m*rold_r*(-n_y/det)
  565. br4=br4+d3mu_r*rold_r*ut_r
  566. jr(3,2)=n_y*(damu_r*br1+am*br3+dpiu_r)
  567. jr(3,2)=jr(3,2)+t_y*damu_r*br2+am*t_y*br4
  568. c-------------------
  569. br3=d2mv_r*rold_l*un_l+mmin_m*rold_r*(-t_x/det)
  570. br3=br3+d3mv_r*rold_r*un_r
  571. br4=d2mv_r*rold_l*ut_l+mmin_m*rold_r*n_x/det
  572. br4=br4+d3mv_r*rold_r*ut_r
  573. jr(3,3)=n_y*(damv_r*br1+am*br3+dpiv_r)
  574. jr(3,3)=jr(3,3)+t_y*damv_r*br2+am*t_y*br4
  575. c-------------------
  576. br3=d2mp_r*rold_l*un_l+d3mp_r*rold_r*un_r
  577. br4=d2mp_r*rold_l*ut_l+d3mp_r*rold_r*ut_r
  578. jr(3,4)=n_y*(damp_r*br1+am*br3+dpip_r)
  579. jr(3,4)=jr(3,4)+t_y*damp_r*br2+am*t_y*br4
  580. c-------------------------------------------------------------
  581. c ------ f44444444444444444444444444444 ---------
  582. c-------------------------------------------------------------
  583. hr_l=rold_l*(uold_l*uold_l+vold_l*vold_l)/2.0d0+ga*pold_l/gm1
  584. hr_r=rold_r*(uold_r*uold_r+vold_r*vold_r)/2.0d0+ga*pold_r/gm1
  585. f(4)=am*(mpl_m*hr_l+mmin_m*hr_r)
  586. c---------------------
  587. br1=d2mr_l*hr_l+mpl_m*(uold_l*uold_l+vold_l*vold_l)/2.0d0
  588. br1=br1+d3mr_l*hr_r
  589. jl(4,1)=damr_l*f(4)/am+am*br1
  590. c---------------------
  591. br1=d2mu_l*hr_l+mpl_m*uold_l*rold_l
  592. br1=br1+d3mu_l*hr_r
  593. jl(4,2)=damu_l*f(4)/am+am*br1
  594. c---------------------
  595. br1=d2mv_l*hr_l+mpl_m*vold_l*rold_l
  596. br1=br1+d3mv_l*hr_r
  597. jl(4,3)=damv_l*f(4)/am+am*br1
  598. c---------------------
  599. br1=d2mp_l*hr_l+mpl_m*ga/gm1
  600. br1=br1+d3mp_l*hr_r
  601. jl(4,4)=damp_l*f(4)/am+am*br1
  602. c----------------------------------------------------------
  603. c----------------------------------------------------------
  604. br1=d2mr_r*hr_l+mmin_m*(uold_r*uold_r+vold_r*vold_r)/2.0d0
  605. br1=br1+d3mr_r*hr_r
  606. jr(4,1)=damr_r*f(4)/am+am*br1
  607. c---------------------
  608. br1=d2mu_r*hr_l+mmin_m*uold_r*rold_r
  609. br1=br1+d3mu_r*hr_r
  610. jr(4,2)=damu_r*f(4)/am+am*br1
  611. c---------------------
  612. br1=d2mv_r*hr_l+mmin_m*vold_r*rold_r
  613. br1=br1+d3mv_r*hr_r
  614. jr(4,3)=damv_r*f(4)/am+am*br1
  615. c---------------------
  616. br1=d2mp_r*hr_l+mmin_m*ga/gm1
  617. br1=br1+d3mp_r*hr_r
  618. jr(4,4)=damp_r*f(4)/am+am*br1
  619. c-------------------------------------------------------------
  620. c-------------------------------------------------------------
  621. return
  622. end
  623.  
  624.  
  625.  
  626.  
  627.  
  628.  
  629.  
  630.  
  631.  
  632.  
  633.  
  634.  
  635.  
  636.  
  637.  
  638.  
  639.  
  640.  
  641.  
  642.  
  643.  
  644.  
  645.  
  646.  

© Cast3M 2003 - Tous droits réservés.
Mentions légales