99 module sat_vapor_pres_mod
180 use constants_mod,
only: tfreeze, rdgas, rvgas, hlv, es0
184 use mpp_mod,
only: input_nml_file
192 use platform_mod,
only: r4_kind, r8_kind
265 module procedure lookup_es_0d_r4, lookup_es_0d_r8
266 module procedure lookup_es_1d_r4, lookup_es_1d_r8
267 module procedure lookup_es_2d_r4, lookup_es_2d_r8
268 module procedure lookup_es_3d_r4, lookup_es_3d_r8
273 module procedure lookup_es_0d_r4, lookup_es_0d_r8
274 module procedure lookup_es_1d_r4, lookup_es_1d_r8
275 module procedure lookup_es_2d_r4, lookup_es_2d_r8
276 module procedure lookup_es_3d_r4, lookup_es_3d_r8
342 module procedure lookup_des_0d_r4, lookup_des_0d_r8
343 module procedure lookup_des_1d_r4, lookup_des_1d_r8
344 module procedure lookup_des_2d_r4, lookup_des_2d_r8
345 module procedure lookup_des_3d_r4, lookup_des_3d_r8
351 module procedure lookup_des_0d_r4, lookup_des_0d_r8
352 module procedure lookup_des_1d_r4, lookup_des_1d_r8
353 module procedure lookup_des_2d_r4, lookup_des_2d_r8
354 module procedure lookup_des_3d_r4, lookup_des_3d_r8
432 module procedure lookup_es_des_0d_r4, lookup_es_des_0d_r8
433 module procedure lookup_es_des_1d_r4, lookup_es_des_1d_r8
434 module procedure lookup_es_des_2d_r4, lookup_es_des_2d_r8
435 module procedure lookup_es_des_3d_r4, lookup_es_des_3d_r8
440 module procedure lookup_es2_0d_r4, lookup_es2_0d_r8
441 module procedure lookup_es2_1d_r4, lookup_es2_1d_r8
442 module procedure lookup_es2_2d_r4, lookup_es2_2d_r8
443 module procedure lookup_es2_3d_r4, lookup_es2_3d_r8
448 module procedure lookup_des2_0d_r4, lookup_des2_0d_r8
449 module procedure lookup_des2_1d_r4, lookup_des2_1d_r8
450 module procedure lookup_des2_2d_r4, lookup_des2_2d_r8
451 module procedure lookup_des2_3d_r4, lookup_des2_3d_r8
456 module procedure lookup_es2_des2_0d_r4, lookup_es2_des2_0d_r8
457 module procedure lookup_es2_des2_1d_r4, lookup_es2_des2_1d_r8
458 module procedure lookup_es2_des2_2d_r4, lookup_es2_des2_2d_r8
459 module procedure lookup_es2_des2_3d_r4, lookup_es2_des2_3d_r8
464 module procedure lookup_es3_0d_r4, lookup_es3_0d_r8
465 module procedure lookup_es3_1d_r4, lookup_es3_1d_r8
466 module procedure lookup_es3_2d_r4, lookup_es3_2d_r8
467 module procedure lookup_es3_3d_r4, lookup_es3_3d_r8
472 module procedure lookup_des3_0d_r4, lookup_des3_0d_r8
473 module procedure lookup_des3_1d_r4, lookup_des3_1d_r8
474 module procedure lookup_des3_2d_r4, lookup_des3_2d_r8
475 module procedure lookup_des3_3d_r4, lookup_des3_3d_r8
480 module procedure lookup_es3_des3_0d_r4, lookup_es3_des3_0d_r8
481 module procedure lookup_es3_des3_1d_r4, lookup_es3_des3_1d_r8
482 module procedure lookup_es3_des3_2d_r4, lookup_es3_des3_2d_r8
483 module procedure lookup_es3_des3_3d_r4, lookup_es3_des3_3d_r8
581 module procedure compute_qs_0d_r4, compute_qs_0d_r8
582 module procedure compute_qs_1d_r4, compute_qs_1d_r8
583 module procedure compute_qs_2d_r4, compute_qs_2d_r8
584 module procedure compute_qs_3d_r4, compute_qs_3d_r8
683 module procedure compute_mrs_0d_r4, compute_mrs_0d_r8
684 module procedure compute_mrs_1d_r4, compute_mrs_1d_r8
685 module procedure compute_mrs_2d_r4, compute_mrs_2d_r8
686 module procedure compute_mrs_3d_r4, compute_mrs_3d_r8
719 module procedure check_1d_r4, check_1d_r8
723 module procedure check_2d_r4, check_2d_r8
728 module procedure temp_check_1d_r4, temp_check_1d_r8
729 module procedure temp_check_2d_r4, temp_check_2d_r8
730 module procedure temp_check_3d_r4, temp_check_3d_r8
735 module procedure show_all_bad_0d_r4, show_all_bad_0d_r8
736 module procedure show_all_bad_1d_r4, show_all_bad_1d_r8
737 module procedure show_all_bad_2d_r4, show_all_bad_2d_r8
738 module procedure show_all_bad_3d_r4, show_all_bad_3d_r8
745 #include<file_version.h>
747 logical :: module_is_initialized = .false.
752 real(r8_kind),
parameter :: EPSILO = real(rdgas,r8_kind)/real(rvgas, r8_kind)
753 real(r8_kind),
parameter :: ZVIR = real(rvgas,r8_kind)/real(rdgas,r8_kind) - 1.0_r8_kind
758 integer,
public :: tcmin = -160
759 integer,
public :: tcmax = 100
760 integer :: esres = 10
764 integer :: stdoutunit=0
767 real(r8_kind) :: tmin, dtinv, teps
770 logical :: show_bad_value_count_by_slice=.true.
771 logical :: show_all_bad_values=.false.
772 logical :: use_exact_qs = .false.
773 logical :: do_simple =.false.
774 logical :: construct_table_wrt_liq = .false.
775 logical :: construct_table_wrt_liq_and_ice = .false.
777 namelist / sat_vapor_pres_nml / show_bad_value_count_by_slice, show_all_bad_values, &
778 use_exact_qs, do_simple, &
779 construct_table_wrt_liq, &
780 construct_table_wrt_liq_and_ice
784 subroutine sat_vapor_pres_init(err_msg)
801 character(len=*),
intent(out),
optional :: err_msg
802 character(len=128) :: err_msg_local
803 integer :: iunit, ierr, io
806 if (module_is_initialized)
return
809 read (input_nml_file, sat_vapor_pres_nml, iostat=io)
816 if (
mpp_pe() == mpp_root_pe())
write (iunit, nml=sat_vapor_pres_nml)
822 nsize = (tcmax-tcmin)*esres+1
825 real(TFREEZE,r8_kind),
real(HLV,r8_kind),&
826 real(RVGAS,r8_kind),
real(ES0,r8_kind), err_msg_local, use_exact_qs, do_simple,&
827 construct_table_wrt_liq, &
828 construct_table_wrt_liq_and_ice, &
830 if ( err_msg_local ==
'' )
then
831 if(
present(err_msg)) err_msg =
''
836 module_is_initialized = .true.
838 end subroutine sat_vapor_pres_init
840 #include "sat_vapor_pres_r4.fh"
841 #include "sat_vapor_pres_r8.fh"
922 end module sat_vapor_pres_mod
integer function, public check_nml_error(IOSTAT, NML_NAME)
Checks the iostat argument that is returned after reading a namelist and determines if the error code...
subroutine, public write_version_number(version, tag, unit)
Prints to the log file (or a specified unit) the version id string and tag name.
logical function, public fms_error_handler(routine, message, err_msg)
Facilitates the control of fatal error conditions.
subroutine, public error_mesg(routine, message, level)
Print notes, warnings and error messages; terminates program for warning and error messages....
integer function stdout()
This function returns the current standard fortran unit numbers for output.
integer function stdlog()
This function returns the current standard fortran unit numbers for log messages. Log messages,...
integer function mpp_pe()
Returns processor ID.
For the given temperatures, pressures and optionally vapor mixing ratio, returns the vapor mixing rat...
For the given temperatures, pressures and optionally vapor specific humidity, returns the specific hu...
Provided for backward compatibility (to be removed soon)
Provided for backward compatibility (to be removed soon)
For the given temperatures, returns the derivative of saturation vapor pressure with respect to tempe...
For the given temperatures, returns the saturation vapor pressures.
For the given temperatures, returns the saturation vapor pressure and the derivative of saturation va...