Changeset 1221 for palm/trunk/SOURCE/tridia_solver.f90
- Timestamp:
- Sep 10, 2013 8:59:13 AM (12 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
palm/trunk/SOURCE/tridia_solver.f90
r1217 r1221 20 20 ! Current revisions: 21 21 ! ------------------ 22 ! 22 ! dummy argument tri in 1d-routines replaced by tri_for_1d because of name 23 ! conflict with arry tri in module arrays_3d 23 24 ! 24 25 ! Former revisions: … … 382 383 383 384 384 SUBROUTINE tridia_1dd( ddx2, ddy2, nx, ny, j, ar, tri )385 SUBROUTINE tridia_1dd( ddx2, ddy2, nx, ny, j, ar, tri_for_1d ) 385 386 386 387 !------------------------------------------------------------------------------! … … 408 409 409 410 REAL, DIMENSION(0:nx,1:nz) :: ar 410 REAL, DIMENSION(5,0:nx,0:nz-1) :: tri 411 REAL, DIMENSION(5,0:nx,0:nz-1) :: tri_for_1d 411 412 412 413 … … 424 425 DO k = 0, nz-1 425 426 DO i = 0,nx 426 tri (2,i,k) = ddzu_pres(k+1) * ddzw(k+1)427 tri (3,i,k) = ddzu_pres(k+2) * ddzw(k+1)427 tri_for_1d(2,i,k) = ddzu_pres(k+1) * ddzw(k+1) 428 tri_for_1d(3,i,k) = ddzu_pres(k+2) * ddzw(k+1) 428 429 ENDDO 429 430 ENDDO … … 433 434 IF ( j <= nnyh ) THEN 434 435 #if defined( __intel11 ) 435 CALL maketri_1dd( j, tri )436 CALL maketri_1dd( j, tri_for_1d ) 436 437 #else 437 438 CALL maketri_1dd( j ) … … 439 440 ELSE 440 441 #if defined( __intel11 ) 441 CALL maketri_1dd( ny+1-j, tri )442 CALL maketri_1dd( ny+1-j, tri_for_1d ) 442 443 #else 443 444 CALL maketri_1dd( ny+1-j ) … … 445 446 ENDIF 446 447 #if defined( __intel11 ) 447 CALL split_1dd( tri )448 CALL split_1dd( tri_for_1d ) 448 449 #else 449 450 CALL split_1dd 450 451 #endif 451 CALL substi_1dd( ar, tri )452 CALL substi_1dd( ar, tri_for_1d ) 452 453 453 454 CONTAINS 454 455 455 456 #if defined( __intel11 ) 456 SUBROUTINE maketri_1dd( j, tri )457 SUBROUTINE maketri_1dd( j, tri_for_1d ) 457 458 #else 458 459 SUBROUTINE maketri_1dd( j ) … … 473 474 474 475 #if defined( __intel11 ) 475 REAL, DIMENSION(5,0:nx,0:nz-1) :: tri 476 REAL, DIMENSION(5,0:nx,0:nz-1) :: tri_for_1d 476 477 #endif 477 478 … … 502 503 a = -1.0 * ddzu_pres(k+2) * ddzw(k+1) 503 504 c = -1.0 * ddzu_pres(k+1) * ddzw(k+1) 504 tri (1,i,k) = a + c - l(i)505 tri_for_1d(1,i,k) = a + c - l(i) 505 506 ENDDO 506 507 ENDDO 507 508 IF ( ibc_p_b == 1 ) THEN 508 509 DO i = 0, nx 509 tri (1,i,0) = tri(1,i,0) + tri(2,i,0)510 tri_for_1d(1,i,0) = tri_for_1d(1,i,0) + tri_for_1d(2,i,0) 510 511 ENDDO 511 512 ENDIF 512 513 IF ( ibc_p_t == 1 ) THEN 513 514 DO i = 0, nx 514 tri (1,i,nz-1) = tri(1,i,nz-1) + tri(3,i,nz-1)515 tri_for_1d(1,i,nz-1) = tri_for_1d(1,i,nz-1) + tri_for_1d(3,i,nz-1) 515 516 ENDDO 516 517 ENDIF … … 520 521 521 522 #if defined( __intel11 ) 522 SUBROUTINE split_1dd( tri )523 SUBROUTINE split_1dd( tri_for_1d ) 523 524 #else 524 525 SUBROUTINE split_1dd … … 534 535 535 536 #if defined( __intel11 ) 536 REAL, DIMENSION(5,0:nx,0:nz-1) :: tri 537 REAL, DIMENSION(5,0:nx,0:nz-1) :: tri_for_1d 537 538 #endif 538 539 … … 541 542 !-- Splitting 542 543 DO i = 0, nx 543 tri (4,i,0) = tri(1,i,0)544 tri_for_1d(4,i,0) = tri_for_1d(1,i,0) 544 545 ENDDO 545 546 DO k = 1, nz-1 546 547 DO i = 0, nx 547 tri (5,i,k) = tri(2,i,k) / tri(4,i,k-1)548 tri (4,i,k) = tri(1,i,k) - tri(3,i,k-1) * tri(5,i,k)548 tri_for_1d(5,i,k) = tri_for_1d(2,i,k) / tri_for_1d(4,i,k-1) 549 tri_for_1d(4,i,k) = tri_for_1d(1,i,k) - tri_for_1d(3,i,k-1) * tri_for_1d(5,i,k) 549 550 ENDDO 550 551 ENDDO … … 553 554 554 555 555 SUBROUTINE substi_1dd( ar, tri )556 SUBROUTINE substi_1dd( ar, tri_for_1d ) 556 557 557 558 !------------------------------------------------------------------------------! … … 565 566 REAL, DIMENSION(0:nx,nz) :: ar 566 567 REAL, DIMENSION(0:nx,0:nz-1) :: ar1 567 REAL, DIMENSION(5,0:nx,0:nz-1) :: tri 568 REAL, DIMENSION(5,0:nx,0:nz-1) :: tri_for_1d 568 569 569 570 ! … … 574 575 DO k = 1, nz-1 575 576 DO i = 0, nx 576 ar1(i,k) = ar(i,k+1) - tri (5,i,k) * ar1(i,k-1)577 ar1(i,k) = ar(i,k+1) - tri_for_1d(5,i,k) * ar1(i,k-1) 577 578 ENDDO 578 579 ENDDO … … 584 585 !-- the model domain. 585 586 DO i = 0, nx 586 ar(i,nz) = ar1(i,nz-1) / ( tri (4,i,nz-1) + 1.0E-20 )587 ar(i,nz) = ar1(i,nz-1) / ( tri_for_1d(4,i,nz-1) + 1.0E-20 ) 587 588 ENDDO 588 589 DO k = nz-2, 0, -1 589 590 DO i = 0, nx 590 ar(i,k+1) = ( ar1(i,k) - tri (3,i,k) * ar(i,k+2) ) &591 / tri (4,i,k)591 ar(i,k+1) = ( ar1(i,k) - tri_for_1d(3,i,k) * ar(i,k+2) ) & 592 / tri_for_1d(4,i,k) 592 593 ENDDO 593 594 ENDDO
Note: See TracChangeset
for help on using the changeset viewer.