@@ -223,7 +223,7 @@ end if
223223 var_in_exclude = (/"lat" , "lon" , "area" , "date_written" , "time_written" /)
224224
225225 ;--- Specify a list of variables on the source SE file that should be directly copied
226- var_in_copy = (/"time_bnds" /)
226+ var_in_copy = (/"time_bnds" , "cosp_ht_bnds" , "cosp_sr_bnds" , "cosp_prs_bnds" , "cosp_tau_bnds" /)
227227
228228 ;--- Specify a list of variables to be regridded
229229 var_out = "All_Variables" ; to be regridded
@@ -293,11 +293,34 @@ end if
293293 ib = ind (dNames.eq. "ilev" )
294294 klev = dSizes(ia)
295295 klevi = dSizes(ib)
296- ; standard CAM dimensions
297- dimNames = (/"time" , "lat" , "lon" , "lev" , "ilev" , "nbnd" , "chars" /)
298- dimSizes = (/ -1 , nlat , mlon , klev, klevi , 2 , 8 /)
299- dimUnlim = (/ True , False , False , False , False , False , False /)
300- filedimdef (dst_file,dimNames,dimSizes,dimUnlim)
296+ ; cosp dimensions
297+ if (any ("cosp_scol" .eq. dNames))
298+ iscol = ind (dNames.eq. "cosp_scol" )
299+ nscol = dSizes(iscol)
300+ itau = ind (dNames.eq. "cosp_tau" )
301+ ntau = dSizes(itau)
302+ iprs = ind (dNames.eq. "cosp_prs" )
303+ nprs = dSizes(iprs)
304+ isr = ind (dNames.eq. "cosp_sr" )
305+ nsr = dSizes(isr)
306+ isza = ind (dNames.eq. "cosp_sza" )
307+ nsza = dSizes(isza)
308+ iht = ind (dNames.eq. "cosp_ht" )
309+ nht = dSizes(iht)
310+ ; CAM dimensions plus cosp
311+ dimNames = (/"time" , "lat" , "lon" , "lev" , "ilev" , "nbnd" , "chars" ,"cosp_scol" ,"cosp_prs" ,"cosp_sr" ,"cosp_tau" ,"cosp_sza" ,"cosp_ht" /)
312+ dimSizes = (/ -1 , nlat , mlon , klev, klevi , 2 , 8 ,nscol ,nprs ,nsr ,ntau ,nsza ,nht /)
313+ dimUnlim = (/ True , False , False , False , False , False , False ,False ,False ,False ,False ,False ,False /)
314+ filedimdef (dst_file,dimNames,dimSizes,dimUnlim)
315+ else
316+ ; standard CAM dimensions
317+ dimNames = (/"time" , "lat" , "lon" , "lev" , "ilev" , "nbnd" , "chars" /)
318+ dimSizes = (/ -1 , nlat , mlon , klev, klevi , 2 , 8 /)
319+ dimUnlim = (/ True , False , False , False , False , False , False /)
320+ filedimdef (dst_file,dimNames,dimSizes,dimUnlim)
321+ end if
322+
323+
301324
302325;--- The following are explicitly added because they are 'special'
303326
@@ -332,6 +355,13 @@ end if
332355 vdims = getfilevardims (src_file, var_in(nv))
333356 filevardef (dst_file, var_in(nv), getfilevartypes (src_file,var_in(nv)) \
334357 , (/ "time" , vdims(1 ), "lat" , "lon" /) )
358+ delete (vdims)
359+ end if
360+ if (rank_in .eq. 4 .and. var_in(nv).eq. "FISCCP1_COSP" ) then
361+ vdims = getfilevardims (src_file, var_in(nv))
362+ filevardef (dst_file, var_in(nv), getfilevartypes (src_file,var_in(nv)) \
363+ , (/ "time" , "cosp_prs" , "cosp_tau" ,"lat" , "lon" /) )
364+ delete (vdims)
335365 end if
336366
337367 dumAtts = new ( 1 , getfilevartypes (src_file,var_in(nv)))
@@ -374,13 +404,13 @@ end if
374404 any (var_in(nv).eq. var_in_copy) ) then
375405
376406 rank_in = dimsizes (getfilevardimsizes (src_file, var_in(nv)))
377-
378407 if (rank_in .eq. 1 .or. any (var_in(nv).eq. var_in_copy) ) then
379408 dst_file->$var_in(nv)$ = (/ src_file->$var_in(nv)$ /)
380409 end if
381410 if (rank_in .ge. 2 .and. .not. any (var_in(nv).eq. var_in_copy)) then
382411 dst_file->$var_in(nv)$ = (/ ESMF_regrid_with_weights(src_file->$var_in(nv)$,wgtFileName,Opt_RGRD) /)
383412 end if
413+ delete (rank_in)
384414 end if
385415 end if
386416 end do ; nv
0 commit comments