Changeset 1762 in lmdz_wrf for trunk/tools/module_ForDiagnostics.f90
- Timestamp:
- Jan 24, 2018, 3:54:22 PM (7 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/tools/module_ForDiagnostics.f90
r1761 r1762 533 533 534 534 END SUBROUTINE compute_psl_ptarget4d2 535 536 SUBROUTINE compute_massvertint1D(var, mutot, dz, deta, integral) 537 ! Subroutine to vertically integrate a 1D variable in eta vertical coordinates 538 539 IMPLICIT NONE 540 541 INTEGER, INTENT(in) :: dz 542 REAL(r_k), INTENT(in) :: mutot 543 REAL(r_k), DIMENSION(dz), INTENT(in) :: var, deta 544 REAL(r_k), INTENT(out) :: integral 545 546 ! Local 547 INTEGER :: k 548 549 !!!!!!! Variables 550 ! var: vertical variable to integrate (assuming kgkg-1) 551 ! mutot: total dry-air mass in column 552 ! dz: vertical dimension 553 ! deta: eta-levels difference between full eta-layers 554 555 fname = 'compute_massvertint1D' 556 557 ! integral=0. 558 ! DO k=1,dz 559 ! integral = integral + var(k)*deta(k) 560 ! END DO 561 integral = SUM(var*deta) 562 563 integral=integral*mutot/g 564 565 RETURN 566 567 END SUBROUTINE compute_massvertint1D 568 569 SUBROUTINE compute_zint4D(var4D, dlev, zweight, d1, d2, d3, d4, int3D) 570 ! Subroutine to vertically integrate a 4D variable in any vertical coordinates 571 572 IMPLICIT NONE 573 574 INTEGER, INTENT(in) :: d1,d2,d3,d4 575 REAL(r_k), DIMENSION(d1,d2,d3,d4), INTENT(in) :: var4D, dlev, zweight 576 REAL(r_k), DIMENSION(d1,d2,d4), INTENT(out) :: int3D 577 578 ! Local 579 INTEGER :: i,j,l 580 581 !!!!!!! Variables 582 ! var4D: vertical variable to integrate 583 ! dlev: height of layers 584 ! zweight: weight for each level to be applied (=1. for no effect) 585 586 fname = 'compute_zint4D' 587 588 DO i=1,d1 589 DO j=1,d2 590 DO l=1,d4 591 CALL compute_vertint1D(var4D(i,j,:,l),d3, dlev(i,j,:,l), zweight(i,j,:,l), & 592 int3D(i,j,l)) 593 END DO 594 END DO 595 END DO 596 597 RETURN 598 599 END SUBROUTINE compute_zint4D 600 601 SUBROUTINE compute_vertint1D(var, dz, deta, zweight, integral) 602 ! Subroutine to vertically integrate a 1D variable in any vertical coordinates 603 604 IMPLICIT NONE 605 606 INTEGER, INTENT(in) :: dz 607 REAL(r_k), DIMENSION(dz), INTENT(in) :: var, deta, zweight 608 REAL(r_k), INTENT(out) :: integral 609 610 ! Local 611 INTEGER :: k 612 613 !!!!!!! Variables 614 ! var: vertical variable to integrate 615 ! dz: vertical dimension 616 ! deta: eta-levels difference between layers 617 ! zweight: weight for each level to be applied (=1. for no effect) 618 619 fname = 'compute_vertint1D' 620 621 ! integral=0. 622 ! DO k=1,dz 623 ! integral = integral + var(k)*deta(k) 624 ! END DO 625 integral = SUM(var*deta*zweight) 626 627 RETURN 628 629 END SUBROUTINE compute_vertint1D 535 630 536 631 SUBROUTINE compute_tv4d(ta,qv,tv,d1,d2,d3,d4)
Note: See TracChangeset
for help on using the changeset viewer.