diff --git a/model/src/wav_import_export.F90 b/model/src/wav_import_export.F90 index 35d3e8d089..a3d492153a 100644 --- a/model/src/wav_import_export.F90 +++ b/model/src/wav_import_export.F90 @@ -138,17 +138,11 @@ subroutine advertise_fields(importState, ExportState, flds_scalar_name, rc) call fldlist_add(fldsFrWav_num, fldsFrWav, 'Sw_ustokes') call fldlist_add(fldsFrWav_num, fldsFrWav, 'Sw_vstokes') !call fldlist_add(fldsFrWav_num, fldsFrWav, 'Sw_hstokes') - call fldlist_add(fldsFrWav_num, fldsFrWav, 'Sw_pstokes_x', ungridded_lbound=1, ungridded_ubound=3) - call fldlist_add(fldsFrWav_num, fldsFrWav, 'Sw_pstokes_y', ungridded_lbound=1, ungridded_ubound=3) else call fldlist_add(fldsFrWav_num, fldsFrWav, 'Sw_z0') - call fldlist_add(fldsFrWav_num, fldsFrWav, 'Sw_ustokes1') - call fldlist_add(fldsFrWav_num, fldsFrWav, 'Sw_ustokes2') - call fldlist_add(fldsFrWav_num, fldsFrWav, 'Sw_ustokes3') - call fldlist_add(fldsFrWav_num, fldsFrWav, 'Sw_vstokes1') - call fldlist_add(fldsFrWav_num, fldsFrWav, 'Sw_vstokes2') - call fldlist_add(fldsFrWav_num, fldsFrWav, 'Sw_vstokes3') end if + call fldlist_add(fldsFrWav_num, fldsFrWav, 'Sw_pstokes_x', ungridded_lbound=1, ungridded_ubound=3) + call fldlist_add(fldsFrWav_num, fldsFrWav, 'Sw_pstokes_y', ungridded_lbound=1, ungridded_ubound=3) ! AA TODO: In the above fldlist_add calls, we are passing hardcoded ungridded_ubound values (3) because, USSPF(2) ! is not initialized yet. It is set during w3init which gets called at a later phase (realize). A permanent solution @@ -599,7 +593,11 @@ subroutine export_fields (gcomp, rc) integer , intent(out) :: rc ! Local variables +#ifdef W3_CESMCOUPLED real(R8) :: fillvalue = 1.0e30_R8 ! special missing value +#else + real(R8) :: fillvalue = zero ! special missing value +#endif type(ESMF_State) :: exportState integer :: n, jsea, isea, ix, iy, ib @@ -608,8 +606,6 @@ subroutine export_fields (gcomp, rc) real(r8), pointer :: wbcuru(:) real(r8), pointer :: wbcurv(:) real(r8), pointer :: wbcurp(:) - !real(r8), pointer :: uscurr(:) - !real(r8), pointer :: vscurr(:) real(r8), pointer :: sxxn(:) real(r8), pointer :: sxyn(:) real(r8), pointer :: syyn(:) @@ -622,14 +618,8 @@ subroutine export_fields (gcomp, rc) real(r8), pointer :: wave_elevation_spectrum(:,:) ! Partitioned stokes drift - real(r8), pointer :: sw_pstokes_x(:,:) ! cesm - real(r8), pointer :: sw_pstokes_y(:,:) ! cesm - real(r8), pointer :: sw_ustokes1(:) ! ufs - real(r8), pointer :: sw_vstokes1(:) ! ufs - real(r8), pointer :: sw_ustokes2(:) ! ufs - real(r8), pointer :: sw_vstokes2(:) ! ufs - real(r8), pointer :: sw_ustokes3(:) ! ufs - real(r8), pointer :: sw_vstokes3(:) ! ufs + real(r8), pointer :: sw_pstokes_x(:,:) + real(r8), pointer :: sw_pstokes_y(:,:) character(len=*), parameter :: subname='(wav_import_export:export_fields)' !--------------------------------------------------------------------------- @@ -666,7 +656,6 @@ subroutine export_fields (gcomp, rc) enddo end if #endif - ! surface stokes drift if (state_fldchk(exportState, 'Sw_ustokes')) then call state_getfldptr(exportState, 'Sw_ustokes', sw_ustokes, rc=rc) @@ -711,19 +700,6 @@ subroutine export_fields (gcomp, rc) call CalcRoughl(z0rlen) endif - !TODO: what is difference between uscurr/vscurr and sw_ustokes,sw_vstokes? - ! uscurr has standard name eastward_stokes_drift_current - ! vscurr has standard name northward_stokes_drift_current - ! in fd_nems.yaml but this seems to be calculated a (:,:) value - !if ( state_fldchk(exportState, 'uscurr') .and. & - ! state_fldchk(exportState, 'vscurr')) then - ! call state_getfldptr(exportState, 'uscurr', uscurr, rc=rc) - ! if (ChkErr(rc,__LINE__,u_FILE_u)) return - ! call state_getfldptr(exportState, 'vscurr', vscurr, rc=rc) - ! if (ChkErr(rc,__LINE__,u_FILE_u)) return - ! call CalcStokes3D( va, uscurr, vscurr ) - !endif - if ( state_fldchk(exportState, 'wbcuru') .and. & state_fldchk(exportState, 'wbcurv') .and. & state_fldchk(exportState, 'wbcurp')) then @@ -775,42 +751,6 @@ subroutine export_fields (gcomp, rc) end if endif - if ( state_fldchk(exportState, 'Sw_ustokes1') .and. & - state_fldchk(exportState, 'Sw_ustokes2') .and. & - state_fldchk(exportState, 'Sw_ustokes3') .and. & - state_fldchk(exportState, 'Sw_vstokes1') .and. & - state_fldchk(exportState, 'Sw_vstokes2') .and. & - state_fldchk(exportState, 'Sw_vstokes3') ) then - - call state_getfldptr(exportState, 'Sw_ustokes1', sw_ustokes1, rc=rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - call state_getfldptr(exportState, 'Sw_ustokes2', sw_ustokes2, rc=rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - call state_getfldptr(exportState, 'Sw_ustokes3', sw_ustokes3, rc=rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - call state_getfldptr(exportState, 'Sw_vstokes1', sw_vstokes1, rc=rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - call state_getfldptr(exportState, 'Sw_vstokes2', sw_vstokes2, rc=rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - call state_getfldptr(exportState, 'Sw_vstokes3', sw_vstokes3, rc=rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - sw_ustokes1(:)= zero - sw_vstokes1(:)= zero - sw_ustokes2(:)= zero - sw_vstokes2(:)= zero - sw_ustokes3(:)= zero - sw_vstokes3(:)= zero - call CALC_U3STOKES(va, 2) - do jsea = 1,nseal - sw_ustokes1(jsea)=ussp(jsea,1) - sw_vstokes1(jsea)=ussp(jsea,nk+1) - sw_ustokes2(jsea)=ussp(jsea,2) - sw_vstokes2(jsea)=ussp(jsea,nk+2) - sw_ustokes3(jsea)=ussp(jsea,3) - sw_vstokes3(jsea)=ussp(jsea,nk+3) - end do - end if - if (dbug_flag > 5) then call state_diagnose(exportState, 'at export ', rc=rc) if (ChkErr(rc,__LINE__,u_FILE_u)) return @@ -1008,7 +948,6 @@ subroutine CalcCharnk ( chkn ) real(ESMF_KIND_R8), pointer :: chkn(:) ! 1D Charnock export field pointer ! local variables - real , parameter :: zero = 0.0 integer :: isea, jsea, ix, iy real :: emean, fmean, fmean1, wnmean, amax, ustar, ustdr real :: tauwx, tauwy, cd, z0, fmeanws, dlwmean