597c597
< function get_umd_atmPrf_quality(infile) result(r)
---
> function get_ucar_atmPrf_quality(infile) result(r)
617,619c617,619
<   !call check( nf90_get_att(ncid,nf90_global,"snr2avg",snr2avg))
<   !status = nf90_get_att(ncid,nf90_global,"freq2",freq2)
<   !IF ( status/=nf90_noerr ) freq2 = '???'
---
>   call check( nf90_get_att(ncid,nf90_global,"snr2avg",snr2avg))
>   status = nf90_get_att(ncid,nf90_global,"freq2",freq2)
>   IF ( status/=nf90_noerr ) freq2 = '???'
622c622
< !  if (freq2=='???') then
---
>   if (freq2=='???') then
624c624
< !  else
---
>   else
626,627c626,627
< !     if ( bad=='1' ) r = .true.
< !  endif
---
>      if ( bad=='1' ) r = .true.
>   endif
633c633
< end function get_umd_atmPrf_quality
---
> end function get_ucar_atmPrf_quality
638c638
< subroutine get_umd_atmPrf_dims(infile,LProf,LProf_ba)
---
> subroutine get_ucar_atmPrf_dims(infile,LProf)
644c644
<     integer (kind=4),intent(inout) :: LProf, LProf_ba         !No. 1
---
>     integer (kind=4),intent(inout) :: LProf         !No. 1
648,650c648
<     character(len = 9) :: vname
< 
<     !vname = "MSL_alt"
---
>     character(len = 7) :: vname
651a650
>     vname = "MSL_alt"
657,660c656
<     call check(nf90_inq_dimid(ncid, "dim_lev1b", dimid))
<     call check(nf90_inquire_dimension(ncid,dimid,vname,LProf_ba))
< 
<     call check(nf90_inq_dimid(ncid, "dim_lev2a", dimid))
---
>     call check(nf90_inq_dimid(ncid, vname, dimid))
666c662
< end subroutine get_umd_atmPrf_dims
---
> end subroutine get_ucar_atmPrf_dims
1338c1334
< SUBROUTINE Read_atmPrf_4SR (infile, LProf, LProf_ba, fileStamp_obs   & 
---
> SUBROUTINE Read_atmPrf_4SR (infile, LProf, fileStamp_obs   & 
1340c1336
<            , snr2avg, irs_attr &
---
>            , snr2avg, irs_attr, balmax, zbalmax   &
1343,1344c1339,1341
<            , Alt_obs, Refr_obs, Tdry_obs          &   ! km, N, K
<            , rEarth, Impact_height )        ! km, rad, km
---
>            , Alt_obs, Refr_obs                    &   ! km, N
>            , Pdry_ucar, Tdry_ucar                 &   ! mb, [C]-->[K] here
>            , rEarth, Bend_ang, Impact_height )        ! km, rad, km
1353c1350
<   integer (kind=4),intent(in)    :: LProf,LProf_ba   !SK
---
>   integer (kind=4),intent(in)    :: LProf        !SK
1358,1360c1355,1357
<   real    (kind=8),intent(inout) :: stdv_obs   ! xinjia
<   real    (kind=8),intent(inout) :: snr1avg    ! xinjia
<   real    (kind=8),intent(inout) :: snr2avg      !SK
---
>   real    (kind=4),intent(inout) :: stdv_obs
>   real    (kind=4),intent(inout) :: snr1avg
>   real    (kind=4),intent(inout) :: snr2avg      !SK
1362c1359,1362
<   real    (kind=8),intent(inout) :: freq1_attr, freq2_attr !SK
---
>   real    (kind=4),intent(inout) :: balmax       !SK
>   real    (kind=4),intent(inout) :: zbalmax      !SK
>   character(len=*),intent(inout) :: freq1_attr   !SK
>   character(len=*),intent(inout) :: freq2_attr   !SK
1364,1367c1364,1367
<   real    (kind=4),dimension(:) &
<                   ,intent(inout) :: Lat_Prof, Lon_Prof,  &
<                                     Alt_obs, Tdry_obs
<   real    (kind=8),intent(inout) :: rEarth
---
>   real    (kind=4), dimension(:) &
>                   ,intent(inout) :: Lat_Prof, Lon_Prof,  Alt_obs,   &
>                                     Refr_obs, Pdry_ucar, Tdry_ucar
>   real    (kind=8), intent(inout) :: rEarth
1369c1369,1371
<                   ,intent(inout) :: Impact_height, Refr_obs
---
>                   ,intent(inout) :: Bend_ang
>   real    (kind=4), dimension(:) &
>                   ,intent(inout) :: Impact_height
1373c1375
<   integer(kind = 4) :: ncid,varid,dimid,ic
---
>   integer(kind = 4) :: ncid,varid,dimid, status
1380,1407c1382,1399
<     !===== Get 1 element variables
<     ! GN04.2025.001.19.17.G10
<     ic = INDEX(infile, 'atmPrf_UMD_')
<     fileStamp_obs=infile(ic+11:ic+34)
<     !print *,fileStamp_obs
< 
<     call check(nf90_inq_varid(ncid,"lat",varid))
<     call check(nf90_get_var(ncid,varid,Lat_obs))
<     call check(nf90_inq_varid(ncid,"lon",varid))
<     call check(nf90_get_var(ncid,varid,Lon_obs))
<     call check(nf90_inq_varid(ncid,"azimuth",varid))
<     call check(nf90_get_var(ncid,varid,azim))
<     call check(nf90_inq_varid(ncid,"stdv",varid))
<     call check(nf90_get_var(ncid,varid,stdv_obs))
<     call check(nf90_inq_varid(ncid,"snr1avg",varid))
<     call check(nf90_get_var(ncid,varid,snr1avg))
<     call check(nf90_inq_varid(ncid,"snr2avg",varid))
<     call check(nf90_get_var(ncid,varid,snr2avg))
<     call check(nf90_inq_varid(ncid,"irs",varid))
<     call check(nf90_get_var(ncid,varid,irs_attr))
<     call check(nf90_inq_varid(ncid,"occfreq1",varid))
<     call check(nf90_get_var(ncid,varid,freq1_attr))
<     call check(nf90_inq_varid(ncid,"occfreq2",varid))
<     call check(nf90_get_var(ncid,varid,freq2_attr))
<     call check(nf90_inq_varid(ncid,"roc",varid))
<     call check(nf90_get_var(ncid,varid,rEarth))
< 
<     call check(nf90_get_att(ncid,nf90_global,"bad",bad_attr))    
---
>     !===== Get attributes
>     call check( nf90_get_att(ncid,nf90_global,"fileStamp",fileStamp_obs))
>     call check( nf90_get_att(ncid,nf90_global,"lat",Lat_obs))
>     call check( nf90_get_att(ncid,nf90_global,"lon",Lon_obs))
>     call check( nf90_get_att(ncid,nf90_global,"azim",azim))         !SK
>     call check( nf90_get_att(ncid,nf90_global,"stdv",stdv_obs))
>     call check( nf90_get_att(ncid,nf90_global,"snr1avg",snr1avg))
>     call check( nf90_get_att(ncid,nf90_global,"snr2avg",snr2avg))   !SK
>     call check( nf90_get_att(ncid,nf90_global,"irs",irs_attr))      !SK
>     call check( nf90_get_att(ncid,nf90_global,"balmax",balmax))     !SK
>     call check( nf90_get_att(ncid,nf90_global,"zbalmax",zbalmax))   !SK
>     status = nf90_get_att(ncid,nf90_global,"freq1",freq1_attr)      !SK
>     IF ( status/=nf90_noerr ) freq1_attr = '???'
>     status = nf90_get_att(ncid,nf90_global,"freq2",freq2_attr)      !SK
>     IF ( status/=nf90_noerr ) freq2_attr = '???'
>     call check( nf90_get_att(ncid,nf90_global,"bad",bad_attr))      !SK
>     call check( nf90_get_att(ncid,nf90_global,"rfict",rfict))       !SK: Effective Earth radius [km]
>     rEarth = DBLE(rfict)                                            !SK: Effective Earth radius [km], R*8
1415a1408,1409
> !write (*,*) '...Read atmPrf Attr: balmax    =', balmax
> !write (*,*) '...Read atmPrf Attr: zbalmax   =', zbalmax
1423,1424c1417,1428
<     call check(nf90_inq_varid(ncid,"alt_refrac",varid))
<     call check(nf90_get_var(ncid,varid,Alt_obs(LProf:1:-1))) ! ROPP is bottom to top, convert to top to bottom
---
>     call check(nf90_inq_varid(ncid,"MSL_alt",varid))
>     call check(nf90_get_var(ncid,varid,Alt_obs(1:LProf)))
> 
>     call check(nf90_inq_varid(ncid,"Ref",varid))
>     call check(nf90_get_var(ncid,varid,Refr_obs(1:LProf)))
> 
>     call check(nf90_inq_varid(ncid,"Pres",varid))
>     call check(nf90_get_var(ncid,varid,Pdry_ucar(1:LProf)))
> 
>     call check(nf90_inq_varid(ncid,"Temp",varid))
>     call check(nf90_get_var(ncid,varid,Tdry_ucar(1:LProf)))
>     Tdry_ucar(1:LProf) = Tdry_ucar(1:LProf) + 273.15   !!!     *** [C]-->[K] ***
1426,1427c1430,1431
<     call check(nf90_inq_varid(ncid,"dry_temp",varid))
<     call check(nf90_get_var(ncid,varid,Tdry_obs(LProf:1:-1))) 
---
>     call check(nf90_inq_varid(ncid,"Lat",varid))    !SK
>     call check(nf90_get_var(ncid,varid,Lat_Prof(1:LProf)))   !SK
1429,1430c1433,1434
<     call check(nf90_inq_varid(ncid,"refrac",varid))
<     call check(nf90_get_var(ncid,varid,Refr_obs(LProf:1:-1)))
---
>     call check(nf90_inq_varid(ncid,"Lon",varid))    !SK
>     call check(nf90_get_var(ncid,varid,Lon_Prof(1:LProf)))   !SK
1432,1433c1436,1437
<     call check(nf90_inq_varid(ncid,"lat_tp",varid))   
<     call check(nf90_get_var(ncid,varid,Lat_Prof(LProf:1:-1)))
---
>     call check(nf90_inq_varid(ncid,"Bend_ang",varid))
>     call check(nf90_get_var(ncid,varid,Bend_ang(1:LProf)))
1435,1436c1439,1440
<     call check(nf90_inq_varid(ncid,"lon_tp",varid))  
<     call check(nf90_get_var(ncid,varid,Lon_Prof(LProf:1:-1)))
---
>     call check(nf90_inq_varid(ncid,"Impact_height",varid))
>     call check(nf90_get_var(ncid,varid,Impact_height(1:LProf)))
1438,1439d1441
<     call check(nf90_inq_varid(ncid,"impact_opt",varid))
<     call check(nf90_get_var(ncid,varid,Impact_height(LProf_ba:1:-1)))
1445a1448,1770
> 
> 
> 
> 
> !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
> subroutine write_star_wetPrf_4SR (outfile, dim0  &
>     , MSL_alt, QC_lev &
>     , star_lat, star_lon &
>     , star_T1gs, star_Vp1gs  &
>     , star_sph, star_rh      &
>     , star_Pdry, star_Tdry   &
>     , star_Pwet, star_Twet   &
>     , star_Vp, star_Nobs     &
>     , year, month, day, hour, minute, second, doy  &
>     , lat, lon, azim, fileStamp    &
>     , Profile_Flag, stdv_obs, snr1avg &
>     , string_date, string_atmPrf, string_1gs   &
>     , string_landmask, version, H_Switch       &
>     , snr2avg, irs_attr, balmax, zbalmax       &
>     , freq1_attr,  freq2_attr, atmprf_bad, wetprf_bad  &
>     , do_Ncorr, SR_Flag, flag_corr, SR_h1, SR_h2, SR_h3 )
> !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
> 
>   implicit none
> 
>   ! ------------------
>   ! In/Out Variable(s)
>   ! ------------------
>   character (len=* ), intent(in)  :: outfile
>   integer   (kind=4), intent(in)  :: dim0
>   real      (kind=4), intent(in)  &
>                     ,dimension(:) :: star_lat, star_lon &
>                                    , star_T1gs, star_Vp1gs  &
>                                    , star_sph, star_rh  &
>                                    , MSL_alt &
>                                    , star_Pdry, star_Tdry &
>                                    , star_Pwet,star_Twet &
>                                    , star_Vp,  star_Nobs
>   real      (kind=4), intent(in)  :: lat, lon, azim
>   integer   (kind=4), intent(in)  &
>                     ,dimension(:) :: QC_lev
>   integer   (kind=4), intent(in)  :: year,month,day,hour,minute,doy,Profile_Flag
>   real      (kind=4), intent(in)  :: second,stdv_obs,snr1avg
>   character (len=23), intent(in)  :: fileStamp
>   character (len=24), intent(in)  :: string_date
>   character (len=* ), intent(in)  :: string_atmPrf
>   character (len=* ), intent(in)  :: string_1gs
>   character (len=* ), intent(in)  :: string_landmask
>   character (len= 4), intent(in)  :: version
>   real      (kind=4), intent(in)  :: H_Switch
>   real      (kind=4), intent(in)  :: snr2avg
>   integer   (kind=4), intent(in)  :: irs_attr
>   real      (kind=4), intent(in)  :: balmax
>   real      (kind=4), intent(in)  :: zbalmax
>   character (len=3) , intent(in)  :: freq1_attr
>   character (len=3) , intent(in)  :: freq2_attr
>   character (len=1) , intent(in)  :: atmprf_bad
>   character (len=1) , intent(in)  :: wetprf_bad
>   !===== SR Attributes:
>   integer   (kind=4), intent(in)  :: do_Ncorr
>   integer   (kind=4), intent(in)  :: SR_Flag, flag_corr
>   real      (kind=4), intent(in)  :: SR_h1, SR_h2, SR_h3
> 
> 
>   ! ------------------
>   ! Local Variable(s)
>   ! ------------------
>   integer(kind=4)   :: ncid, dimid0, i_print, status, i
>   integer(kind=4)   :: varid01, varid02, varid03, varid04, varid05   &
>                      , varid06, varid07, varid08, varid09, varid10   &
>                      , varid11, varid12, varid13, varid14
>   character(len=41) :: string_lat
>   character(len=42) :: string_lon
>   character(len=10) :: string_version
> 
> 
> 
>     i_print = 0   !==> 1 = "Verbose"
> 
>     IF ( i_print==1 ) THEN
>     write (*,*) 'dim0 =', dim0
>     write (*,*) 'lat, lon, azim =', lat, lon, azim
>     write (*,*) 'year, month, day, doy =', year, month, day, doy
>     write (*,*) 'hour, minute, second =', hour, minute, second
>     write (*,*) 'do_Ncorr =', do_Ncorr
>     write (*,*) 'Profile_Flag =', Profile_Flag
>     write (*,*) 'stdv_obs, snr1avg, snr2avg =', stdv_obs, snr1avg, snr2avg
>     write (*,*) 'H_Switch =', H_Switch
>     write (*,*) 'irs_attr =', irs_attr
>     write (*,*) 'balmax, zbalmax =', balmax, zbalmax
>     write (*,'(A)') '                      >----+----1----+----2----+----3----+----4----+----5----+----6'
>     write (*,'(A)') 'outfile          CH***>'//trim(outfile)
>     write (*,'(A)') 'fileStamp        CH*23>'//fileStamp
>     write (*,'(A)') 'string_date      CH*24>'//string_date
>     write (*,'(A)') 'string_atmPrf    CH***>'//string_atmPrf
>     write (*,'(A)') 'string_1gs       CH***>'//string_1gs
>     write (*,'(A)') 'string_landmask  CH***>'//string_landmask
>     write (*,'(A)') 'version          CH*04>'//version
>     write (*,'(A)') 'freq1_attr       CH*03>'//freq1_attr
>     write (*,'(A)') 'freq2_attr       CH*03>'//freq2_attr
>     write (*,'(A)') 'atmprf_bad       CH*01>'//atmprf_bad
>     write (*,'(A)') 'wetprf_bad       CH*01>'//wetprf_bad
>     write (*,'(A)') '                      >----+----1----+----2----+----3----+----4----+----5----+----6'
>     i = 1
>     write (*,'(i3,F8.2,I3,12F8.2)') i  &
>         , MSL_alt(i),   QC_lev(i)      &
>         , star_lat(i),  star_lon(i)    &
>         , star_T1gs(i), star_Vp1gs(i)  &
>         , star_sph(i),  star_rh(i)     &
>         , star_Pdry(i), star_Tdry(i)   &
>         , star_Pwet(i), star_Twet(i)   &
>         , star_Vp(i),   star_Nobs(i)
>     i = dim0
>     write (*,'(i3,F8.2,I3,12F8.2)') i  &
>         , MSL_alt(i),   QC_lev(i)      &
>         , star_lat(i),  star_lon(i)    &
>         , star_T1gs(i), star_Vp1gs(i)  &
>         , star_sph(i),  star_rh(i)     &
>         , star_Pdry(i), star_Tdry(i)   &
>         , star_Pwet(i), star_Twet(i)   &
>         , star_Vp(i),   star_Nobs(i)
>     ENDIF
> 
> 
>     !===== Create the netCDF file
>     call check(nf90_create(outfile,NF90_HDF5 ,ncid))
>     IF ( i_print==1 ) write (*,*) "WRITE_STAR_WETPRF: Test #01..."
> 
>     !===== Define the dimensions
>     call check(nf90_def_dim(ncid,"MSL_alt",dim0,dimid0))
>     IF ( i_print==1 ) write (*,*) "WRITE_STAR_WETPRF: Test #02..."
> 
>     !===== Define variable
> 
>     !...varid01 = Altitude
>     call check(nf90_def_var(ncid,"MSL_alt",NF90_FLOAT,(/dimid0/),varid01))
>     call check(nf90_put_att(ncid,varid01,"units","km"))
>     call check(nf90_put_att(ncid,varid01,"valid_range",real((/ 0.0, 60.0 /))))
>     call check(nf90_put_att(ncid,varid01,"_FillValue",(-999.0)))
>     call check(nf90_put_att(ncid,varid01,"Long_name","Mean sea level altitude of perigee point"))
>     IF ( i_print==1 ) write (*,*) "WRITE_STAR_WETPRF: Test #03..."
> 
>     !...varid02 = QC
>     call check(nf90_def_var(ncid,"QC_lev",NF90_INT,(/dimid0/),varid02))
>     call check(nf90_put_att(ncid,varid02,"_FillValue",(-999)))
>     call check(nf90_put_att(ncid,varid02,"Long_name","Profile Retrieval quality by levels: 0=bad; 1=good"))
>     IF ( i_print==1 ) write (*,*) "WRITE_STAR_WETPRF: Test #04..."
> 
>     !...varid03 = Latitude
>     call check(nf90_def_var(ncid,"lat",NF90_FLOAT,(/dimid0/),varid03))
>     call check(nf90_put_att(ncid,varid03,"units","deg"))
>     call check(nf90_put_att(ncid,varid03,"valid_range",real((/ -90.0, 90.0 /))))
>     call check(nf90_put_att(ncid,varid03,"_FillValue",(-999.0)))
>     call check(nf90_put_att(ncid,varid03,"Long_name","Latitude of perigee point"))
>     IF ( i_print==1 ) write (*,*) "WRITE_STAR_WETPRF: Test #05..."
> 
>     !...varid04 = Longitude
>     call check(nf90_def_var(ncid,"lon",NF90_FLOAT,(/dimid0/),varid04))
>     call check(nf90_put_att(ncid,varid04,"units","deg"))
>     call check(nf90_put_att(ncid,varid04,"valid_range",real((/ -180.0, 360.0 /))))
>     call check(nf90_put_att(ncid,varid04,"_FillValue",(-999.0)))
>     call check(nf90_put_att(ncid,varid04,"Long_name","Longitude of perigee point"))
>     IF ( i_print==1 ) write (*,*) "WRITE_STAR_WETPRF: Test #06..."
> 
>     !...varid05 = Temperature
>     call check(nf90_def_var(ncid,"Temp",NF90_FLOAT,(/dimid0/),varid05))
>     call check(nf90_put_att(ncid,varid05,"units","Celsius_degree"))
>     call check(nf90_put_att(ncid,varid05,"valid_range",real((/ -200.0, 100.0 /))))
>     call check(nf90_put_att(ncid,varid05,"_FillValue",(-999.0)))
>     call check(nf90_put_att(ncid,varid05,"Long_name","STAR retrieved temperature"))
>     IF ( i_print==1 ) write (*,*) "WRITE_STAR_WETPRF: Test #07..."
> 
>     !...varid06 = Pressure
>     call check(nf90_def_var(ncid,"Pres",NF90_FLOAT,(/dimid0/),varid06))
>     call check(nf90_put_att(ncid,varid06,"units","mb"))
>     call check(nf90_put_att(ncid,varid06,"valid_range",real((/ 0.0, 1200.0 /))))
>     call check(nf90_put_att(ncid,varid06,"_FillValue",(-999.0)))
>     call check(nf90_put_att(ncid,varid06,"Long_name","STAR retrieved pressure"))
>     IF ( i_print==1 ) write (*,*) "WRITE_STAR_WETPRF: Test #08..."
> 
>     !...varid07 = Water Vapor
>     call check(nf90_def_var(ncid,"Vp",NF90_FLOAT,(/dimid0/),varid07))
>     call check(nf90_put_att(ncid,varid07,"units","mb"))
>     call check(nf90_put_att(ncid,varid07,"valid_range",real((/ 0.0, 100.0 /))))
>     call check(nf90_put_att(ncid,varid07,"_FillValue",(-999.0)))
>     call check(nf90_put_att(ncid,varid07,"Long_name","STAR retrieved water vapor partial pressure"))
>     IF ( i_print==1 ) write (*,*) "WRITE_STAR_WETPRF: Test #09..."
> 
>     !...varid08 = Specific Humidity
>     call check(nf90_def_var(ncid,"sph",NF90_FLOAT,(/dimid0/),varid08))
>     call check(nf90_put_att(ncid,varid08,"units","g/kg"))
>     call check(nf90_put_att(ncid,varid08,"valid_range",real((/ 0.0, 80.0 /))))
>     call check(nf90_put_att(ncid,varid08,"_FillValue",(-999.0)))
>     call check(nf90_put_att(ncid,varid08,"Long_name","STAR retrieved specific humidity"))
>     IF ( i_print==1 ) write (*,*) "WRITE_STAR_WETPRF: Test #10..."
> 
>     !...varid09 = Relative Humidity
>     call check(nf90_def_var(ncid,"rh",NF90_FLOAT,(/dimid0/),varid09))
>     call check(nf90_put_att(ncid,varid09,"units","%"))
>     call check(nf90_put_att(ncid,varid09,"valid_range",real((/ 0.0, 100.0 /))))
>     call check(nf90_put_att(ncid,varid09,"_FillValue",(-999.0)))
>     call check(nf90_put_att(ncid,varid09,"Long_name","STAR retrieved relative humidity"))
>     IF ( i_print==1 ) write (*,*) "WRITE_STAR_WETPRF: Test #11..."
> 
>     !...varid10 = Observed Refractivity
>     call check(nf90_def_var(ncid,"ref",NF90_FLOAT,(/dimid0/),varid10))
>     call check(nf90_put_att(ncid,varid10,"units","N-unit"))
>     call check(nf90_put_att(ncid,varid10,"valid_range",real((/ 0.0, 500.0 /))))
>     call check(nf90_put_att(ncid,varid10,"_FillValue",(-999.0)))
>     call check(nf90_put_att(ncid,varid10,"Long_name","STAR thinning observed refractivity"))
>     IF ( i_print==1 ) write (*,*) "WRITE_STAR_WETPRF: Test #12..."
> 
>     !...varid11 = Dry Temperature
>     call check(nf90_def_var(ncid,"temp_dry",NF90_FLOAT,(/dimid0/),varid11))
>     call check(nf90_put_att(ncid,varid11,"units","Celsius_degree"))
>     call check(nf90_put_att(ncid,varid11,"valid_range",real((/ -200.0, 100.0 /))))
>     call check(nf90_put_att(ncid,varid11,"_FillValue",(-999.0)))
>     call check(nf90_put_att(ncid,varid11,"Long_name","STAR retrieved dry temperature"))
>     IF ( i_print==1 ) write (*,*) "WRITE_STAR_WETPRF: Test #13..."
> 
>     !...varid12 = Dry Pressure
>     call check(nf90_def_var(ncid,"pres_dry",NF90_FLOAT,(/dimid0/),varid12))
>     call check(nf90_put_att(ncid,varid12,"units","mb"))
>     call check(nf90_put_att(ncid,varid12,"valid_range",real((/ 0.0, 1200.0 /))))
>     call check(nf90_put_att(ncid,varid12,"_FillValue",(-999.0)))
>     call check(nf90_put_att(ncid,varid12,"Long_name","STAR retrieved dry pressure"))
>     IF ( i_print==1 ) write (*,*) "WRITE_STAR_WETPRF: Test #14..."
> 
>     !...varid13 = First Guess Temperature
>     call check(nf90_def_var(ncid,"Temp_1gs",NF90_FLOAT,(/dimid0/),varid13))
>     call check(nf90_put_att(ncid,varid13,"units","Celsius_degree"))
>     call check(nf90_put_att(ncid,varid13,"valid_range",real((/ -200.0, 100.0 /))))
>     call check(nf90_put_att(ncid,varid13,"_FillValue",(-999.0)))
>     call check(nf90_put_att(ncid,varid13,"Long_name","Used First Guess Temperature"))
>     IF ( i_print==1 ) write (*,*) "WRITE_STAR_WETPRF: Test #15..."
> 
>     !...varid14 = First Guess Water Vapor
>     call check(nf90_def_var(ncid,"Vp_1gs",NF90_FLOAT,(/dimid0/),varid14))
>     call check(nf90_put_att(ncid,varid14,"units","mb"))
>     call check(nf90_put_att(ncid,varid14,"valid_range",real((/ 0.0, 100.0 /))))
>     call check(nf90_put_att(ncid,varid14,"_FillValue",(-999.0)))
>     call check(nf90_put_att(ncid,varid14,"Long_name","Used First Guess Water Vapor"))
>     IF ( i_print==1 ) write (*,*) "WRITE_STAR_WETPRF: Test #16..."
> 
> 
>     !===== Global Attributes
>     call check(nf90_put_att(ncid,NF90_GLOBAL,'fileStamp',fileStamp))
>     call check(nf90_put_att(ncid,NF90_GLOBAL,"year",year))
>     call check(nf90_put_att(ncid,NF90_GLOBAL,"month",month))
>     call check(nf90_put_att(ncid,NF90_GLOBAL,"day",day))
>     call check(nf90_put_att(ncid,NF90_GLOBAL,"hour",hour))
>     call check(nf90_put_att(ncid,NF90_GLOBAL,"minute",minute))
>     call check(nf90_put_att(ncid,NF90_GLOBAL,"second",second))
>     call check(nf90_put_att(ncid,NF90_GLOBAL,"DOY",doy))
>     call check(nf90_put_att(ncid,NF90_GLOBAL,"date",string_date))
>     call check(nf90_put_att(ncid,NF90_GLOBAL,"atmPrf",string_atmPrf))
>     call check(nf90_put_att(ncid,NF90_GLOBAL,"fgsUsed",string_1gs))
>          write (string_lat,'(F7.3)') lat
>          string_lat(8:41) = ", Nominal latitude (degrees North)"
>     call check(nf90_put_att(ncid,NF90_GLOBAL,'lat',string_lat))
>          write (string_lon,'(F8.3)') lon
>          string_lon(9:42) = ", Nominal longitude (degrees East)"
>     call check(nf90_put_att(ncid,NF90_GLOBAL,'lon',string_lon))
>     call check(nf90_put_att(ncid,NF90_GLOBAL,"landmask",string_landmask))
>     call check(nf90_put_att(ncid,NF90_GLOBAL,'Overall_retrieval_quality',Profile_Flag))
>     call check(nf90_put_att(ncid,NF90_GLOBAL,'H_switch',H_Switch))
>     !===== SR Attributes:
>     call check(nf90_put_att(ncid,NF90_GLOBAL,'SR_Check',do_Ncorr))
>     call check(nf90_put_att(ncid,NF90_GLOBAL,'SR_Flag',SR_Flag))
>     call check(nf90_put_att(ncid,NF90_GLOBAL,'SR_Flag_Corr',flag_corr))
>     call check(nf90_put_att(ncid,NF90_GLOBAL,'SR_h1',SR_h1))
>     call check(nf90_put_att(ncid,NF90_GLOBAL,'SR_h2',SR_h2))
>     call check(nf90_put_att(ncid,NF90_GLOBAL,'SR_h3',SR_h3))
>     !===== atmPrf Copied Attributes (not used in 1DVar):
>     call check(nf90_put_att(ncid,NF90_GLOBAL,'atmPrf_azim',azim))
>     call check(nf90_put_att(ncid,NF90_GLOBAL,'atmPrf_stdv',stdv_obs))
>     call check(nf90_put_att(ncid,NF90_GLOBAL,'atmPrf_snr1avg',snr1avg))
>     call check(nf90_put_att(ncid,NF90_GLOBAL,'atmPrf_snr2avg',snr2avg))
>     call check(nf90_put_att(ncid,NF90_GLOBAL,'atmPrf_irs',irs_attr))
>     call check(nf90_put_att(ncid,NF90_GLOBAL,'atmPrf_balmax',balmax))
>     call check(nf90_put_att(ncid,NF90_GLOBAL,'atmPrf_zbalmax',zbalmax))
>     call check(nf90_put_att(ncid,NF90_GLOBAL,'atmPrf_freq1',freq1_attr))
>     call check(nf90_put_att(ncid,NF90_GLOBAL,'atmPrf_freq2',freq2_attr))
>     call check(nf90_put_att(ncid,NF90_GLOBAL,'atmPrf_bad',atmprf_bad))
>     !===== The Last Attributes:
>     call check(nf90_put_att(ncid,NF90_GLOBAL,'bad',wetprf_bad))
>          string_version = "1DVar "//version
>     call check(nf90_put_att(ncid,NF90_GLOBAL,'version',string_version))
>     call check(nf90_put_att(ncid,NF90_GLOBAL,'center',"STAR"))
>     IF ( i_print==1 ) write (*,*) "WRITE_STAR_WETPRF: Test #17..."
> 
> 
>     !===== End Definitions
> !!! call check(nf90_enddef(ncid))
>     status = nf90_enddef(ncid)
>     IF ( i_print==1 ) write (*,*) "WRITE_STAR_WETPRF: Test #18: status(nf90_enddef) =", status
> 
> 
>     !===== Write Data
>     call check(nf90_put_var(ncid,varid01,MSL_alt))
>     call check(nf90_put_var(ncid,varid02,QC_lev))
>     call check(nf90_put_var(ncid,varid03,star_lat))
>     call check(nf90_put_var(ncid,varid04,star_lon))
>     call check(nf90_put_var(ncid,varid05,star_Twet))
>     call check(nf90_put_var(ncid,varid06,star_Pwet))
>     call check(nf90_put_var(ncid,varid07,star_Vp))
>     call check(nf90_put_var(ncid,varid08,star_sph))
>     call check(nf90_put_var(ncid,varid09,star_rh))
>     call check(nf90_put_var(ncid,varid10,star_Nobs))
>     call check(nf90_put_var(ncid,varid11,star_Tdry))
>     call check(nf90_put_var(ncid,varid12,star_Pdry))
>     call check(nf90_put_var(ncid,varid13,star_T1gs))
>     call check(nf90_put_var(ncid,varid14,star_Vp1gs))
>     IF ( i_print==1 ) write (*,*) "WRITE_STAR_WETPRF: Test #19..."
> 
> 
>     !===== Close file
>     call check(nf90_close(ncid))
>     IF ( i_print==1 ) write (*,*) "WRITE_STAR_WETPRF: Test #20: Close netcdf"
> 
> end subroutine write_star_wetPrf_4SR
> 
> 
