Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update CICE namelist implementation #677

Merged
merged 1 commit into from
Dec 22, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion cicecore/cicedynB/analysis/ice_diagnostics.F90
Original file line number Diff line number Diff line change
Expand Up @@ -1706,7 +1706,7 @@ subroutine print_state(plabel,i,j,iblk)
! dynamics (transport and/or ridging) causes the floe size distribution to become non-normal
! if (tr_fsd) then
! if (abs(sum(trcrn(i,j,nt_fsd:nt_fsd+nfsd-1,n,iblk))-c1) > puny) &
! print*,'afsdn not normal', &
! write(nu_diag,*) 'afsdn not normal', &
! sum(trcrn(i,j,nt_fsd:nt_fsd+nfsd-1,n,iblk)), &
! trcrn(i,j,nt_fsd:nt_fsd+nfsd-1,n,iblk)
! endif
Expand Down
44 changes: 15 additions & 29 deletions cicecore/cicedynB/analysis/ice_history.F90
Original file line number Diff line number Diff line change
Expand Up @@ -93,8 +93,7 @@ subroutine init_hist (dt)
integer (kind=int_kind), dimension(max_nstrm) :: &
ntmp
integer (kind=int_kind) :: nml_error ! namelist i/o error flag
character(len=char_len_long) :: tmpstr2 ! for namelist errors


character(len=*), parameter :: subname = '(init_hist)'

!-----------------------------------------------------------------
Expand Down Expand Up @@ -123,40 +122,27 @@ subroutine init_hist (dt)
if (icepack_warnings_aborted()) call abort_ice(error_message=subname, &
file=__FILE__, line=__LINE__)

call get_fileunit(nu_nml)
if (my_task == master_task) then
open (nu_nml, file=nml_filename, status='old',iostat=nml_error)
write(nu_diag,*) subname,' Reading icefields_nml'

call get_fileunit(nu_nml)
open (nu_nml, file=trim(nml_filename), status='old',iostat=nml_error)
if (nml_error /= 0) then
nml_error = -1
else
nml_error = 1
call abort_ice(subname//'ERROR: icefields_nml open file '// &
trim(nml_filename), &
file=__FILE__, line=__LINE__)
endif

nml_error = 1
do while (nml_error > 0)
read(nu_nml, nml=icefields_nml,iostat=nml_error)
if (nml_error /= 0) exit
end do
!if (nml_error == 0) close(nu_nml)

! check if there was an error.
! Write out errorneous line.
if (nml_error == 0) then
close(nu_nml) ! no error. close file
else ! nml_error not zero
! backspace, re-read erroneous line
backspace(nu_nml)
read(nu_nml,fmt='(A)') tmpstr2
if (nml_error /= 0) then
call abort_ice(subname//'ERROR: icefields_nml reading ', &
file=__FILE__, line=__LINE__)
endif

endif
call release_fileunit(nu_nml)

call broadcast_scalar(nml_error, master_task)
call broadcast_scalar(tmpstr2, master_task)
if (nml_error /= 0) then
close (nu_nml)
call abort_ice(subname//'ERROR: reading icefields_nml: ' // &
trim(tmpstr2), &
file=__FILE__, line=__LINE__)
close(nu_nml)
call release_fileunit(nu_nml)
endif

! histfreq options ('1','h','d','m','y')
Expand Down
41 changes: 14 additions & 27 deletions cicecore/cicedynB/analysis/ice_history_bgc.F90
Original file line number Diff line number Diff line change
Expand Up @@ -283,7 +283,6 @@ subroutine init_hist_bgc_2D
tr_bgc_DON, tr_bgc_Fe, tr_bgc_hum, &
skl_bgc, solve_zsal, z_tracers

character(len=char_len_long) :: tmpstr2 ! for namelist errors
character(len=*), parameter :: subname = '(init_hist_bgc_2D)'

call icepack_query_parameters(skl_bgc_out=skl_bgc, &
Expand All @@ -305,39 +304,27 @@ subroutine init_hist_bgc_2D
! read namelist
!-----------------------------------------------------------------

call get_fileunit(nu_nml)
if (my_task == master_task) then
open (nu_nml, file=nml_filename, status='old',iostat=nml_error)
write(nu_diag,*) subname,' Reading icefields_bgc_nml'

call get_fileunit(nu_nml)
open (nu_nml, file=trim(nml_filename), status='old',iostat=nml_error)
if (nml_error /= 0) then
nml_error = -1
else
nml_error = 1
call abort_ice(subname//'ERROR: icefields_bgc_nml open file '// &
trim(nml_filename), &
file=__FILE__, line=__LINE__)
endif

nml_error = 1
do while (nml_error > 0)
read(nu_nml, nml=icefields_bgc_nml,iostat=nml_error)
if (nml_error /= 0) exit
end do

! check if there was an error.
! Write out errorneous line.
if (nml_error == 0) then
close(nu_nml) ! no error. close file
else ! nml_error not zero
! backspace, re-read erroneous line
backspace(nu_nml)
read(nu_nml,fmt='(A)') tmpstr2
if (nml_error /= 0) then
call abort_ice(subname//'ERROR: icefields_bgc_nml reading ', &
file=__FILE__, line=__LINE__)
endif

endif
call release_fileunit(nu_nml)

call broadcast_scalar(nml_error, master_task)
call broadcast_scalar(tmpstr2, master_task)
if (nml_error /= 0) then
close (nu_nml)
call abort_ice(subname//'ERROR: reading icefields_bgc_nml: ' // &
trim(tmpstr2), &
file=__FILE__, line=__LINE__)
close(nu_nml)
call release_fileunit(nu_nml)
endif

if (.not. tr_iso) then
Expand Down
42 changes: 14 additions & 28 deletions cicecore/cicedynB/analysis/ice_history_drag.F90
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,6 @@ subroutine init_hist_drag_2D
integer (kind=int_kind) :: ns
integer (kind=int_kind) :: nml_error ! namelist i/o error flag
logical (kind=log_kind) :: formdrag
character(len=char_len_long) :: tmpstr2 ! for namelist errors

character(len=*), parameter :: subname = '(init_hist_drag_2D)'

Expand All @@ -81,40 +80,27 @@ subroutine init_hist_drag_2D
! read namelist
!-----------------------------------------------------------------

call get_fileunit(nu_nml)
if (my_task == master_task) then
open (nu_nml, file=nml_filename, status='old',iostat=nml_error)
write(nu_diag,*) subname,' Reading icefields_drag_nml'

call get_fileunit(nu_nml)
open (nu_nml, file=trim(nml_filename), status='old',iostat=nml_error)
if (nml_error /= 0) then
nml_error = -1
else
nml_error = 1
call abort_ice(subname//'ERROR: icefields_drag_nml open file '// &
trim(nml_filename), &
file=__FILE__, line=__LINE__)
endif

nml_error = 1
do while (nml_error > 0)
read(nu_nml, nml=icefields_drag_nml,iostat=nml_error)
! if (nml_error > 0) read(nu_nml,*) ! for Nagware compiler
if (nml_error /= 0) exit
end do

! check if there was an error.
! Write out errorneous line.
if (nml_error == 0) then
close(nu_nml) ! no error. close file
else ! nml_error not zero
! backspace, re-read erroneous line
backspace(nu_nml)
read(nu_nml,fmt='(A)') tmpstr2
if (nml_error /= 0) then
call abort_ice(subname//'ERROR: icefields_drag_nml reading ', &
file=__FILE__, line=__LINE__)
endif

endif
call release_fileunit(nu_nml)

call broadcast_scalar(nml_error, master_task)
call broadcast_scalar(tmpstr2, master_task)
if (nml_error /= 0) then
close (nu_nml)
call abort_ice(subname//'ERROR: reading icefields_drag_nml: ' // &
trim(tmpstr2), &
file=__FILE__, line=__LINE__)
close(nu_nml)
call release_fileunit(nu_nml)
endif

call broadcast_scalar (f_Cdn_atm, master_task)
Expand Down
42 changes: 15 additions & 27 deletions cicecore/cicedynB/analysis/ice_history_fsd.F90
Original file line number Diff line number Diff line change
Expand Up @@ -81,8 +81,7 @@ subroutine init_hist_fsd_2D
integer (kind=int_kind) :: nml_error ! namelist i/o error flag
real (kind=dbl_kind) :: secday
logical (kind=log_kind) :: tr_fsd, wave_spec
character(len=char_len_long) :: tmpstr2 ! for namelist errors


character(len=*), parameter :: subname = '(init_hist_fsd_2D)'

call icepack_query_tracer_flags(tr_fsd_out=tr_fsd)
Expand All @@ -97,38 +96,27 @@ subroutine init_hist_fsd_2D
! read namelist
!-----------------------------------------------------------------

call get_fileunit(nu_nml)
if (my_task == master_task) then
open (nu_nml, file=nml_filename, status='old',iostat=nml_error)
write(nu_diag,*) subname,' Reading icefields_fsd_nml'

call get_fileunit(nu_nml)
open (nu_nml, file=trim(nml_filename), status='old',iostat=nml_error)
if (nml_error /= 0) then
nml_error = -1
else
nml_error = 1
call abort_ice(subname//'ERROR: icefields_fsd_nml open file '// &
trim(nml_filename), &
file=__FILE__, line=__LINE__)
endif

nml_error = 1
do while (nml_error > 0)
read(nu_nml, nml=icefields_fsd_nml,iostat=nml_error)
if (nml_error /= 0) exit
end do

! check if there was an error.
! Write out errorneous line.
if (nml_error == 0) then
close(nu_nml) ! no error. close file
else ! nml_error not zero
! backspace, re-read erroneous line
backspace(nu_nml)
read(nu_nml,fmt='(A)') tmpstr2
if (nml_error /= 0) then
call abort_ice(subname//'ERROR: icefields_fsd_nml reading ', &
file=__FILE__, line=__LINE__)
endif
endif
call release_fileunit(nu_nml)

call broadcast_scalar(nml_error, master_task)
call broadcast_scalar(tmpstr2, master_task)
if (nml_error /= 0) then
close (nu_nml)
call abort_ice(subname//'ERROR: reading icefields_fsd_nml: '// &
trim(tmpstr2), &
file=__FILE__, line=__LINE__)
close(nu_nml)
call release_fileunit(nu_nml)
endif

call broadcast_scalar (f_afsd, master_task)
Expand Down
42 changes: 14 additions & 28 deletions cicecore/cicedynB/analysis/ice_history_mechred.F90
Original file line number Diff line number Diff line change
Expand Up @@ -89,7 +89,6 @@ subroutine init_hist_mechred_2D
integer (kind=int_kind) :: nml_error ! namelist i/o error flag
real (kind=dbl_kind) :: secday
logical (kind=log_kind) :: tr_lvl
character(len=char_len_long) :: tmpstr2 ! for namelist errors

character(len=*), parameter :: subname = '(init_hist_mechred_2D)'

Expand All @@ -103,40 +102,27 @@ subroutine init_hist_mechred_2D
! read namelist
!-----------------------------------------------------------------

call get_fileunit(nu_nml)
if (my_task == master_task) then
open (nu_nml, file=nml_filename, status='old',iostat=nml_error)
write(nu_diag,*) subname,' Reading icefields_mechred_nml'

call get_fileunit(nu_nml)
open (nu_nml, file=trim(nml_filename), status='old',iostat=nml_error)
if (nml_error /= 0) then
nml_error = -1
else
nml_error = 1
call abort_ice(subname//'ERROR: icefields_mechred_nml open file '// &
trim(nml_filename), &
file=__FILE__, line=__LINE__)
endif

nml_error = 1
do while (nml_error > 0)
read(nu_nml, nml=icefields_mechred_nml,iostat=nml_error)
if (nml_error /= 0) exit
end do

! check if there was an error.
! Write out errorneous line.
if (nml_error == 0) then
close(nu_nml) ! no error. close file
else ! nml_error not zero
! backspace, re-read erroneous line
backspace(nu_nml)
read(nu_nml,fmt='(A)') tmpstr2
if (nml_error /= 0) then
call abort_ice(subname//'ERROR: icefields_mechred_nml reading ', &
file=__FILE__, line=__LINE__)
endif


endif
call release_fileunit(nu_nml)

call broadcast_scalar(nml_error, master_task)
call broadcast_scalar(tmpstr2, master_task)
if (nml_error /= 0) then
close (nu_nml)
call abort_ice(subname//'ERROR: reading icefields_mechred_nml: ' // &
trim(tmpstr2), &
file=__FILE__, line=__LINE__)
close(nu_nml)
call release_fileunit(nu_nml)
endif

if (.not. tr_lvl) then
Expand Down
44 changes: 15 additions & 29 deletions cicecore/cicedynB/analysis/ice_history_pond.F90
Original file line number Diff line number Diff line change
Expand Up @@ -73,8 +73,7 @@ subroutine init_hist_pond_2D
integer (kind=int_kind) :: ns
integer (kind=int_kind) :: nml_error ! namelist i/o error flag
logical (kind=log_kind) :: tr_pond
character(len=char_len_long) :: tmpstr2 ! for namelist errors


character(len=*), parameter :: subname = '(init_hist_pond_2D)'

call icepack_query_tracer_flags(tr_pond_out=tr_pond)
Expand All @@ -86,40 +85,27 @@ subroutine init_hist_pond_2D
! read namelist
!-----------------------------------------------------------------

call get_fileunit(nu_nml)
if (my_task == master_task) then
open (nu_nml, file=nml_filename, status='old',iostat=nml_error)
write(nu_diag,*) subname,' Reading icefields_pond_nml'

call get_fileunit(nu_nml)
open (nu_nml, file=trim(nml_filename), status='old',iostat=nml_error)
if (nml_error /= 0) then
nml_error = -1
else
nml_error = 1
call abort_ice(subname//'ERROR: icefields_pond_nml open file '// &
trim(nml_filename), &
file=__FILE__, line=__LINE__)
endif

nml_error = 1
do while (nml_error > 0)
read(nu_nml, nml=icefields_pond_nml,iostat=nml_error)
if (nml_error /= 0) exit
end do

! check if there was an error.
! Write out errorneous line.
if (nml_error == 0) then
close(nu_nml) ! no error. close file
else ! nml_error not zero
! backspace, re-read erroneous line
backspace(nu_nml)
read(nu_nml,fmt='(A)') tmpstr2
if (nml_error /= 0) then
call abort_ice(subname//'ERROR: icefields_pond_nml reading ', &
file=__FILE__, line=__LINE__)
endif


endif
call release_fileunit(nu_nml)

call broadcast_scalar(nml_error, master_task)
call broadcast_scalar(tmpstr2, master_task)
if (nml_error /= 0) then
close (nu_nml)
call abort_ice(subname//'ERROR: reading icefields_pond_nml: ' // &
trim(tmpstr2), &
file=__FILE__, line=__LINE__)
close(nu_nml)
call release_fileunit(nu_nml)
endif

if (.not. tr_pond) then
Expand Down
Loading