source: trunk/LMDZ.COMMON/libf/misc/handle_err_m.F90 @ 1523

Last change on this file since 1523 was 1391, checked in by emillour, 10 years ago

Common dynamical core:
Updates in the dynamics to keeup up with updates in LMDZ5
(up to LMDZ5 trunk rev 2200):

  • compilation:
  • create_make_gcm : added processing of .f & .f90 files (not just .F and .F90)
  • makelmdz: add "mix" option for -io (ouptut with both IOIPSL and XIOS)
  • makelmdz_fcm: add "mix" option for -io
  • filtrez:
  • acc.F and eigen.F : add "implicit none" and variable declarations
  • bibio:
  • handle_err_m.F90: replace "stop" with call to abort_gcm()
  • i1mach.F, j4save.F: add "implicit none" and variable declarations
  • xercnt.F, xermsg.F, xerprn.F, xersve.F, xgetua.F: add "implicit none" and variable declarations
  • dyn3d_common:
  • disvert.F90 : added comments on meaning of "pa" variable
  • grid_atob.F : better control on level of default ouputs
  • infotrac.F90: update Earth-specific stuff (nqo water tracers)
  • interpre.F: correction on the size of input array w
  • juldate.F, massbar.F, ppm3d.F, ran1.F: add "implicit none" and variable declarations
  • sortvarc.F: code cleanup
  • iniacademic.F90: cleanup and extra sanity check.
  • dyn3d:
  • abort_gcm.F: additions for XIOS
  • conf_gcm.F90: transformed to free form from conf_gcm.F
  • gcm.F: added test to check that iphysiq is a multiple of iperiod
  • getparam.F90, guidz_mod.F: update from LMDZ5
  • integrd.F: replace stop with call_abort()
  • dyn3dpar:
  • abort_gcm.F: minor cleanup
  • gcm.F: added test to check that iphysiq is a multiple of iperiod
  • getparam.F90, guide_p_mod.F90: update from LMDZ5
  • integrd_p.F: abort with call_abort when there is negative surface pressure
  • leapfrog_p.F: add INCA specific stuff to keep up with current LMDZ5
  • conf_gcm.F90: transformed to free form from conf_gcm.F

EM

File size: 1.2 KB
Line 
1! $Id$
2module handle_err_m
3
4  implicit none
5
6contains
7
8  subroutine handle_err(message, ncerr, ncid, varid)
9
10    use netcdf, only: nf90_strerror, nf90_noerr, nf90_close
11
12    character(len=*), intent(in):: message
13    ! (should include name of calling procedure)
14
15    integer, intent(in):: ncerr
16
17    integer, intent(in), optional :: ncid
18    ! (Provide this argument if you want "handle_err" to try to close
19    ! the file.)
20
21    integer, intent(in), optional :: varid
22
23    ! Variable local to the procedure:
24    integer ncerr_close
25
26    !-------------------
27
28    if (ncerr /= nf90_noerr) then
29       print *, message, ":"
30       if (present(varid)) print *, "varid = ", varid
31       print *, trim(nf90_strerror(ncerr))
32       if (present(ncid)) then
33          ! Try to close, to leave the file in a consistent state:
34          ncerr_close = nf90_close(ncid)
35          ! (do not call "nf95_close", we do not want to recurse)
36          if (ncerr_close /= nf90_noerr) then
37             print *, "nf90_close:"
38             print *, trim(nf90_strerror(ncerr_close))
39          end if
40       end if
41       call abort_gcm("NetCDF95 handle_err", "", 1)
42    end if
43
44  end subroutine handle_err
45
46end module handle_err_m
Note: See TracBrowser for help on using the repository browser.