diff --git a/model/src/wav_comp_nuopc.F90 b/model/src/wav_comp_nuopc.F90 index 78f65202e..ccca334ec 100644 --- a/model/src/wav_comp_nuopc.F90 +++ b/model/src/wav_comp_nuopc.F90 @@ -945,7 +945,7 @@ subroutine InitializeRealize(gcomp, importState, exportState, clock, rc) end if if (dbug_flag > 5) then - call write_meshdecomp(Emesh, 'emesh', rc=rc) + call write_meshdecomp(Emesh, 'emesh', nseal_cpl, rc=rc) if (ChkErr(rc,__LINE__,u_FILE_u)) return end if diff --git a/model/src/wav_history_mod.F90 b/model/src/wav_history_mod.F90 index e7a3e71a9..bfbeb59cc 100644 --- a/model/src/wav_history_mod.F90 +++ b/model/src/wav_history_mod.F90 @@ -114,6 +114,7 @@ subroutine write_history ( timen ) logical :: s_axis = .false., m_axis = .false., p_axis = .false., k_axis = .false. integer :: lmap(nseal_cpl) + integer :: ltrigp(3,nseal_cpl) ! ------------------------------------------------------------- ! create the netcdf file @@ -256,14 +257,25 @@ subroutine write_history ( timen ) call handle_err(ierr, 'put time') if (gtype .eq. ungtype) then + ! trigp is global + ltrigp(:,:) = 0 + !call init_get_isea(isea, jsea) + !if (lglobal) then + ! varloc = var(isea) + !else + !varout(jsea) = varloc*dir(isea) + do jsea = 1,nseal_cpl + call init_get_isea(isea, jsea) + ltrigp(:,jsea) = trigp(:,isea) + print *,'YYY ',jsea,isea,trigp(:,isea) + end do + print *,'XXX ',iaproc,size(trigp,1),size(trigp,2) ierr = pio_inq_varid(pioid, 'nconn', varid) call handle_err(ierr, 'inquire variable nconn ') - ierr = pio_put_var(pioid, varid, trigp) + ierr = pio_put_var(pioid, varid, ltrigp) call handle_err(ierr, 'put trigp') end if - ! TODO: tried init decomp w/ use_int=.true. but getting garbage - ! land values....sea values OK ! mapsta is global lmap(:) = 0 do jsea = 1,nseal_cpl diff --git a/model/src/wav_shr_mod.F90 b/model/src/wav_shr_mod.F90 index e0a3ccc8f..8a3f3a086 100644 --- a/model/src/wav_shr_mod.F90 +++ b/model/src/wav_shr_mod.F90 @@ -229,7 +229,7 @@ end subroutine diagnose_mesh !! !> @author mvertens@ucar.edu, Denise.Worthen@noaa.gov !> @date 09-12-2022 - subroutine write_meshdecomp(EMeshIn, mesh_name, rc) + subroutine write_meshdecomp(EMeshIn, mesh_name, nseal_cpl, rc) use ESMF , only : ESMF_Mesh, ESMF_DistGrid, ESMF_Field, ESMF_FieldBundle, ESMF_FieldBundleAdd use ESMF , only : ESMF_DistGridGet, ESMF_FieldBundleCreate, ESMF_FieldCreate, ESMF_FieldBundleGet @@ -237,22 +237,27 @@ subroutine write_meshdecomp(EMeshIn, mesh_name, rc) use ESMF , only : ESMF_FieldBundleWrite, ESMF_FieldBundleDestroy use w3odatmd , only : iaproc + use w3gdatmd , only : ntri, trigp + use w3parall , only : init_get_isea ! input/output variables type(ESMF_Mesh) , intent(in) :: EMeshIn character(len=*), intent(in) :: mesh_name + integer , intent(in) :: nseal_cpl integer , intent(out) :: rc ! local variables type(ESMF_FieldBundle) :: FBTemp type(ESMF_Field) :: lfield type(ESMF_DistGrid) :: distgrid - type(ESMF_Field) :: doffield + type(ESMF_Field) :: doffield, trifield character(len=6), dimension(4) :: lfieldlist integer :: i,ndims,nelements + integer :: isea,jsea real(r8), pointer :: fldptr1d(:) integer(i4), allocatable :: dof(:) integer(i4), pointer :: dofptr(:) + integer(i4), pointer :: itri(:,:) real(r8), pointer :: ownedElemCoords(:), ownedElemCoords_x(:), ownedElemCoords_y(:) character(len=*),parameter :: subname = '(wav_shr_mod:write_meshdecomp) ' !------------------------------------------------------- @@ -266,6 +271,20 @@ subroutine write_meshdecomp(EMeshIn, mesh_name, rc) call ESMF_MeshGet(EMeshIn, spatialDim=ndims, numOwnedElements=nelements, elementDistgrid=distgrid, rc=rc) if (chkerr(rc,__LINE__,u_FILE_u)) return + if (unstr_mesh) then + trifield = ESMF_FieldCreate(EMeshIn, ESMF_TYPEKIND_I4, name='nconn', meshloc=ESMF_MESHLOC_ELEMENT, & + ungriddedLBound=(/1/), ungriddedUBound=(/size(trigp,1)/), gridToFieldMap=(/2/), rc=rc) + call ESMF_FieldGet(trifield, farrayPtr=itri, rc=rc) + if (chkerr(rc,__LINE__,u_FILE_u)) return + ! retrieve DE local trigp array + itri = 0 + do jsea = 1,nseal_cpl + call init_get_isea(isea, jsea) + itri(:,jsea) = trigp(:,isea) + end do + call ESMF_FieldBundleAdd(FBTemp, (/trifield/), rc=rc) + if (chkerr(rc,__LINE__,u_FILE_u)) return + end if lfieldlist = (/'dof ', 'coordx', 'coordy', 'decomp'/) ! index array