Changeset 5079 for LMDZ6/trunk/libf/dyn3d_common/advyp.F
- Timestamp:
- Jul 19, 2024, 11:28:59 AM (2 months ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
LMDZ6/trunk/libf/dyn3d_common/advyp.F
r2600 r5079 153 153 C-AA 20/10/94 le signe -1 est necessaire car indexation opposee 154 154 155 DO 500l = 1,llm156 DO 500j = 1,jjm157 DO 500 i = 1,iip1155 DO l = 1,llm 156 DO j = 1,jjm 157 DO i = 1,iip1 158 158 vgri (i,j,llm+1-l)=-1.*pbarv (i,j,l) 159 500 CONTINUE 159 END DO 160 END DO 161 END DO 160 162 161 163 CAA Initialisation de flux fictifs aux bords sup. des boites pol. … … 171 173 C boucle sur les niveaux 172 174 C 173 DO 1L=1,NIV175 DO L=1,NIV 174 176 C 175 177 C place limits on appropriate moments before transport … … 178 180 IF(.NOT.LIMIT) GO TO 11 179 181 C 180 DO 10JV=1,NTRA181 DO 10K=1,LAT182 DO 100I=1,LON183 IF(S0(I,K,L,JV) .GT.0.) THEN182 DO JV=1,NTRA 183 DO K=1,LAT 184 DO I=1,LON 185 IF(S0(I,K,L,JV)>0.) THEN 184 186 SLPMAX=AMAX1(S0(I,K,L,JV),0.) 185 187 S1MAX=1.5*SLPMAX … … 197 199 SYZ(I,K,L,JV)=0. 198 200 ENDIF 199 100 CONTINUE 200 10 CONTINUE 201 END DO 202 END DO 203 END DO 201 204 C 202 205 11 CONTINUE … … 205 208 C 206 209 SM0=0. 207 DO 20JV=1,NTRA210 DO JV=1,NTRA 208 211 S00(JV)=0. 209 20 CONTINUE210 C 211 DO 21I=1,LON212 C 213 IF(VGRI(I,0,L) .LE.0.) THEN212 END DO 213 C 214 DO I=1,LON 215 C 216 IF(VGRI(I,0,L)<=0.) THEN 214 217 FM(I,0)=-VGRI(I,0,L)*DTY 215 218 ALF(I,0)=FM(I,0)/SM(I,1,L) … … 225 228 ALF4(I,0)=ALF1(I,0)*ALF1Q(I,0) 226 229 C 227 21 CONTINUE230 END DO 228 231 c print*,'ADVYP 21' 229 232 C 230 DO 22JV=1,NTRA231 DO 220I=1,LON232 C 233 IF(VGRI(I,0,L) .LE.0.) THEN233 DO JV=1,NTRA 234 DO I=1,LON 235 C 236 IF(VGRI(I,0,L)<=0.) THEN 234 237 C 235 238 F0(I,0,JV)=ALF(I,0)* ( S0(I,1,L,JV)-ALF1(I,0)* … … 253 256 ENDIF 254 257 C 255 220 CONTINUE256 22 CONTINUE257 C 258 DO 23I=1,LON259 IF(VGRI(I,0,L) .GT.0.) THEN258 END DO 259 END DO 260 C 261 DO I=1,LON 262 IF(VGRI(I,0,L)>0.) THEN 260 263 FM(I,0)=VGRI(I,0,L)*DTY 261 264 ALF(I,0)=FM(I,0)/SM0 262 265 ENDIF 263 23 CONTINUE264 C 265 DO 24JV=1,NTRA266 DO 240I=1,LON267 IF(VGRI(I,0,L) .GT.0.) THEN266 END DO 267 C 268 DO JV=1,NTRA 269 DO I=1,LON 270 IF(VGRI(I,0,L)>0.) THEN 268 271 F0(I,0,JV)=ALF(I,0)*S00(JV) 269 272 ENDIF 270 240 CONTINUE271 24 CONTINUE273 END DO 274 END DO 272 275 C 273 276 C puts the temporary moments Fi into appropriate neighboring boxes 274 277 C 275 278 c print*,'av ADVYP 25' 276 DO 25I=1,LON277 C 278 IF(VGRI(I,0,L) .GT.0.) THEN279 DO I=1,LON 280 C 281 IF(VGRI(I,0,L)>0.) THEN 279 282 SM(I,1,L)=SM(I,1,L)+FM(I,0) 280 283 ALF(I,0)=FM(I,0)/SM(I,1,L) … … 287 290 ALF3(I,0)=ALF1(I,0)*ALF(I,0) 288 291 C 289 25 CONTINUE292 END DO 290 293 c print*,'av ADVYP 25' 291 294 C 292 DO 26JV=1,NTRA293 DO 260I=1,LON294 C 295 IF(VGRI(I,0,L) .GT.0.) THEN295 DO JV=1,NTRA 296 DO I=1,LON 297 C 298 IF(VGRI(I,0,L)>0.) THEN 296 299 C 297 300 TEMPTM=ALF(I,0)*S0(I,1,L,JV)-ALF1(I,0)*F0(I,0,JV) … … 305 308 ENDIF 306 309 C 307 260 CONTINUE308 26 CONTINUE310 END DO 311 END DO 309 312 C 310 313 C calculate flux and moments between adjacent boxes … … 315 318 C 316 319 c print*,'av ADVYP 30' 317 DO 30K=1,LAT-1320 DO K=1,LAT-1 318 321 KP=K+1 319 DO 300I=1,LON320 C 321 IF(VGRI(I,K,L) .LT.0.) THEN322 DO I=1,LON 323 C 324 IF(VGRI(I,K,L)<0.) THEN 322 325 FM(I,K)=-VGRI(I,K,L)*DTY 323 326 ALF(I,K)=FM(I,K)/SM(I,KP,L) … … 336 339 ALF4(I,K)=ALF1(I,K)*ALF1Q(I,K) 337 340 C 338 300 CONTINUE339 30 CONTINUE341 END DO 342 END DO 340 343 c print*,'ap ADVYP 30' 341 344 C 342 DO 31JV=1,NTRA343 DO 31K=1,LAT-1345 DO JV=1,NTRA 346 DO K=1,LAT-1 344 347 KP=K+1 345 DO 310I=1,LON346 C 347 IF(VGRI(I,K,L) .LT.0.) THEN348 DO I=1,LON 349 C 350 IF(VGRI(I,K,L)<0.) THEN 348 351 C 349 352 F0 (I,K,JV)=ALF (I,K)* ( S0(I,KP,L,JV)-ALF1(I,K)* … … 403 406 ENDIF 404 407 C 405 310 CONTINUE 406 31 CONTINUE 408 END DO 409 END DO 410 END DO 407 411 c print*,'ap ADVYP 31' 408 412 C 409 413 C puts the temporary moments Fi into appropriate neighboring boxes 410 414 C 411 DO 32K=1,LAT-1415 DO K=1,LAT-1 412 416 KP=K+1 413 DO 320I=1,LON414 C 415 IF(VGRI(I,K,L) .LT.0.) THEN417 DO I=1,LON 418 C 419 IF(VGRI(I,K,L)<0.) THEN 416 420 SM(I,K,L)=SM(I,K,L)+FM(I,K) 417 421 ALF(I,K)=FM(I,K)/SM(I,K,L) … … 427 431 ALF3(I,K)=ALF1(I,K)*ALF(I,K) 428 432 C 429 320 CONTINUE430 32 CONTINUE433 END DO 434 END DO 431 435 c print*,'ap ADVYP 32' 432 436 C 433 DO 33JV=1,NTRA434 DO 33K=1,LAT-1437 DO JV=1,NTRA 438 DO K=1,LAT-1 435 439 KP=K+1 436 DO 330I=1,LON437 C 438 IF(VGRI(I,K,L) .LT.0.) THEN440 DO I=1,LON 441 C 442 IF(VGRI(I,K,L)<0.) THEN 439 443 C 440 444 TEMPTM=-ALF(I,K)*S0(I,K,L,JV)+ALF1(I,K)*F0(I,K,JV) … … 474 478 ENDIF 475 479 C 476 330 CONTINUE 477 33 CONTINUE 480 END DO 481 END DO 482 END DO 478 483 c print*,'ap ADVYP 33' 479 484 C … … 483 488 C 484 489 SM0=0. 485 DO 40JV=1,NTRA490 DO JV=1,NTRA 486 491 S00(JV)=0. 487 40 CONTINUE488 C 489 DO 41I=1,LON490 C 491 IF(VGRI(I,K,L) .GE.0.) THEN492 END DO 493 C 494 DO I=1,LON 495 C 496 IF(VGRI(I,K,L)>=0.) THEN 492 497 FM(I,K)=VGRI(I,K,L)*DTY 493 498 ALF(I,K)=FM(I,K)/SM(I,K,L) … … 503 508 ALF4(I,K)=ALF1(I,K)*ALF1Q(I,K) 504 509 C 505 41 CONTINUE510 END DO 506 511 c print*,'ap ADVYP 41' 507 512 C 508 DO 42JV=1,NTRA509 DO 420I=1,LON510 C 511 IF(VGRI(I,K,L) .GE.0.) THEN513 DO JV=1,NTRA 514 DO I=1,LON 515 C 516 IF(VGRI(I,K,L)>=0.) THEN 512 517 F0 (I,K,JV)=ALF(I,K)* ( S0(I,K,L,JV)+ALF1(I,K)* 513 518 + ( SY(I,K,L,JV)+ALF2(I,K)*SYY(I,K,L,JV) ) ) … … 527 532 ENDIF 528 533 C 529 420 CONTINUE530 42 CONTINUE534 END DO 535 END DO 531 536 c print*,'ap ADVYP 42' 532 537 C 533 DO 43I=1,LON534 IF(VGRI(I,K,L) .LT.0.) THEN538 DO I=1,LON 539 IF(VGRI(I,K,L)<0.) THEN 535 540 FM(I,K)=-VGRI(I,K,L)*DTY 536 541 ALF(I,K)=FM(I,K)/SM0 537 542 ENDIF 538 43 CONTINUE543 END DO 539 544 c print*,'ap ADVYP 43' 540 545 C 541 DO 44JV=1,NTRA542 DO 440I=1,LON543 IF(VGRI(I,K,L) .LT.0.) THEN546 DO JV=1,NTRA 547 DO I=1,LON 548 IF(VGRI(I,K,L)<0.) THEN 544 549 F0(I,K,JV)=ALF(I,K)*S00(JV) 545 550 ENDIF 546 440 CONTINUE547 44 CONTINUE551 END DO 552 END DO 548 553 C 549 554 C puts the temporary moments Fi into appropriate neighboring boxes 550 555 C 551 DO 45I=1,LON552 C 553 IF(VGRI(I,K,L) .LT.0.) THEN556 DO I=1,LON 557 C 558 IF(VGRI(I,K,L)<0.) THEN 554 559 SM(I,K,L)=SM(I,K,L)+FM(I,K) 555 560 ALF(I,K)=FM(I,K)/SM(I,K,L) … … 562 567 ALF3(I,K)=ALF1(I,K)*ALF(I,K) 563 568 C 564 45 CONTINUE569 END DO 565 570 c print*,'ap ADVYP 45' 566 571 C 567 DO 46JV=1,NTRA568 DO 460I=1,LON569 C 570 IF(VGRI(I,K,L) .LT.0.) THEN572 DO JV=1,NTRA 573 DO I=1,LON 574 C 575 IF(VGRI(I,K,L)<0.) THEN 571 576 C 572 577 TEMPTM=-ALF(I,K)*S0(I,K,L,JV)+ALF1(I,K)*F0(I,K,JV) … … 580 585 ENDIF 581 586 C 582 460 CONTINUE583 46 CONTINUE587 END DO 588 END DO 584 589 c print*,'ap ADVYP 46' 585 590 C 586 1 CONTINUE591 END DO 587 592 588 593 c--------------------------------------------------
Note: See TracChangeset
for help on using the changeset viewer.