Changeset 1762 in lmdz_wrf
- Timestamp:
- Jan 24, 2018, 3:54:22 PM (7 years ago)
- Location:
- trunk/tools
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/tools/diag_tools.py
r1759 r1762 639 639 return virtual 640 640 641 def Forcompute_zint(var, zinterlev, zweights, dimns, dimvns): 642 """ Function to compute a vertical integration of volumetric quantities 643 Forcompute_mrso(smois, dsoil, dimns, dimvns) 644 [var]= values (assuming [[t],z,y,x]) [volumetric units] 645 [zinterlev]= depth of each layer (assuming [z]) [same z units as var] 646 [zweights]= weights to apply to each level (just in case...) 647 [dimns]= list of the name of the dimensions of [smois] 648 [dimvns]= list of the name of the variables with the values of the 649 dimensions of [smois] 650 """ 651 fname = 'Forcompute_zint' 652 653 vardims = dimns[:] 654 varvdims = dimvns[:] 655 656 if len(var.shape) == 4: 657 zint = np.zeros((var.shape[0],var.shape[2],var.shape[3]), dtype=np.float) 658 dx = var.shape[3] 659 dy = var.shape[2] 660 dz = var.shape[1] 661 dt = var.shape[0] 662 vardims.pop(1) 663 varvdims.pop(1) 664 665 zintvart=fdin.module_fordiagnostics.compute_zint4d(var4d=var[:].transpose(), \ 666 dlev=zinterlev[:].transpose(), zweight=zweights[:].transpose(), d1=dx, \ 667 d2=dy, d3=dz, d4=dt) 668 zintvar = zintvart.transpose() 669 else: 670 print errormsg 671 print ' ' + fname + ': rank', len(var.shape), 'not ready !!' 672 print ' it only computes 4D [t,z,y,x] rank values' 673 quit(-1) 674 675 return zintvar, vardims, varvdims 641 676 642 677 def var_mslp(pres, psfc, ter, tk, qv): -
trunk/tools/diagnostics.inf
r1760 r1762 16 16 hurs, TSrhs, psfc@t@q 17 17 hurs, WRFrhs, PSFC@T2@Q2 18 mrso, WRFmrso, SMOIS@DZS 18 19 p, WRFp, P@PB 19 20 pr, RAINTOT, RAINC@RAINNC@WRFtime … … 26 27 rvor, rvor, U@V 27 28 rvors, WRFrvors, U10@V10@WRFpos 29 slw, WRFslw, SH2O@DZS 28 30 ta, WRFt, T@P@PB 29 31 td, WRFtd, WRFp@WRFt2@QVAPOR -
trunk/tools/diagnostics.py
r1761 r1762 78 78 availdiags = ['ACRAINTOT', 'accum', 'clt', 'cllmh', 'deaccum', 'LMDZrh', 'mslp', \ 79 79 'OMEGAw', 'RAINTOT', \ 80 'rvors', 'td', 'turbulence', 'WRFclivi', 'WRFclwvl', 'WRFgeop', 'WRFp', \ 81 'WRFpsl_ptarget', 'WRFrvors', 'ws', 'wds', 'wss', 'WRFheight', 'WRFheightrel', \ 82 'WRFua', 'WRFva'] 80 'rvors', 'td', 'turbulence', 'WRFcape_afwa', 'WRFclivi', 'WRFclwvl', 'WRFgeop', \ 81 'WRFmrso', 'WRFp', \ 82 'WRFpsl_ptarget', 'WRFrvors', 'WRFslw', 'ws', 'wds', 'wss', 'WRFheight', \ 83 'WRFheightrel', 'WRFua', 'WRFva'] 83 84 84 85 methods = ['accum', 'deaccum'] … … 489 490 490 491 ncvar.insert_variable(ncobj, 'hurs', diagout, diagoutd, diagoutvd, newnc) 492 493 # mrso: total soil moisture SMOIS, DZS 494 elif diagn == 'WRFmrso': 495 496 var0 = ncobj.variables[depvars[0]][:] 497 var10 = ncobj.variables[depvars[1]][:] 498 dnamesvar = list(ncobj.variables[depvars[0]].dimensions) 499 dvnamesvar = ncvar.var_dim_dimv(dnamesvar,dnames,dvnames) 500 501 var1 = var0.copy()*0. 502 var2 = var0.copy()*0.+1. 503 # Must be a better way.... 504 for j in range(var0.shape[2]): 505 for i in range(var0.shape[3]): 506 var1[:,:,j,i] = var10 507 508 diagout, diagoutd, diagoutvd = diag.Forcompute_zint(var0, var1, var2, \ 509 dnamesvar, dvnamesvar) 510 511 # Removing the nonChecking variable-dimensions from the initial list 512 varsadd = [] 513 diagoutvd = list(dvnames) 514 for nonvd in NONchkvardims: 515 if gen.searchInlist(dvnames,nonvd): diagoutvd.remove(nonvd) 516 varsadd.append(nonvd) 517 ncvar.insert_variable(ncobj, 'mrso', diagout, diagoutd, diagoutvd, newnc) 491 518 492 519 # mslp: mean sea level pressure (pres, psfc, terrain, temp, qv) … … 601 628 ncvar.insert_variable(ncobj, 'hurs', diagout, diagoutd, diagoutvd, newnc) 602 629 630 # slw: total soil liquid water SH2O, DZS 631 elif diagn == 'WRFslw': 632 633 var0 = ncobj.variables[depvars[0]][:] 634 var10 = ncobj.variables[depvars[1]][:] 635 dnamesvar = list(ncobj.variables[depvars[0]].dimensions) 636 dvnamesvar = ncvar.var_dim_dimv(dnamesvar,dnames,dvnames) 637 638 var1 = var0.copy()*0. 639 var2 = var0.copy()*0.+1. 640 # Must be a better way.... 641 for j in range(var0.shape[2]): 642 for i in range(var0.shape[3]): 643 var1[:,:,j,i] = var10 644 645 diagout, diagoutd, diagoutvd = diag.Forcompute_zint(var0, var1, var2, \ 646 dnamesvar, dvnamesvar) 647 648 # Removing the nonChecking variable-dimensions from the initial list 649 varsadd = [] 650 diagoutvd = list(dvnames) 651 for nonvd in NONchkvardims: 652 if gen.searchInlist(dvnames,nonvd): diagoutvd.remove(nonvd) 653 varsadd.append(nonvd) 654 ncvar.insert_variable(ncobj, 'slw', diagout, diagoutd, diagoutvd, newnc) 655 603 656 # td (psfc, t, q) from TimeSeries files 604 657 elif diagn == 'TStd' or diagn == 'td': -
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) -
trunk/tools/variables_values.dat
r1759 r1762 249 249 lon, lon, longitude, 0., 360., longitude, degrees_East, seismic 250 250 nav_lon, lon, longitude, 0., 360., longitude, degrees_East, seismic 251 mrso, mrso, soil_moisture_content, 0., 0.003, Total|soil|moisture|content, kg m-2, Blues 251 252 mrsos, mrsos, moisture_content_of_soil_layer, 0., 0.003, Moisture|content|of|first|soil|layer, kg m-2, Blues 252 253 SMOIS, mrsos, moisture_content_of_soil_layer, 0., 0.003, Moisture|content|of|first|soil|layer, kg m-2, Blues … … 397 398 s, s, snow_mixing_ratio, 0., 0.0003, snow|mixing|ratio, kgkg-1, Purples 398 399 QSNOW, s, snow_mixing_ratio, 0., 0.0003, snow|mixing|ratio, kgkg-1, Purples 400 slw, slw, soil_liquid_water, 0., 0.003, Total|soil|liquid|water|content, kg m-2, Blues 399 401 sftls, sftls, land_binary_mask, 0., 1., land|mask, 1, bwr 400 402 LANDMASK, sftls, land_binary_mask, 0., 1., land|mask, 1, bwr
Note: See TracChangeset
for help on using the changeset viewer.