Line data Source code
1 : !=======================================================================
2 : ! Copyright (c) 2024, Triad National Security, LLC
3 : ! All rights reserved.
4 : !
5 : ! Copyright 2024. Triad National Security, LLC. This software was
6 : ! produced under U.S. Government contract DE-AC52-06NA25396 for Los
7 : ! Alamos National Laboratory (LANL), which is operated by Triad
8 : ! National Security, LLC for the U.S. Department of Energy. The U.S.
9 : ! Government has rights to use, reproduce, and distribute this software.
10 : ! NEITHER THE GOVERNMENT NOR TRIAD NATIONAL SECURITY, LLC MAKES ANY
11 : ! WARRANTY, EXPRESS OR IMPLIED, OR ASSUMES ANY LIABILITY FOR THE USE OF
12 : ! THIS SOFTWARE. If software is modified to produce derivative works,
13 : ! such modified software should be clearly marked, so as not to confuse
14 : ! it with the version available from LANL.
15 : !
16 : ! The full license and distribution policy are available from
17 : ! https://github.com/CICE-Consortium
18 : !
19 : !=======================================================================
20 :
21 : ! Main driver routine for Icepack, the column package for CICE.
22 : ! Initializes and steps through the model.
23 : !
24 : ! author Elizabeth C. Hunke, LANL
25 : !
26 83 : program icedrv
27 :
28 83 : use icedrv_InitMod
29 : use icedrv_RunMod
30 : use icedrv_constants, only: ice_stdout, nu_diag, nu_diag_out
31 : use icedrv_domain_size, only: nx
32 : use icepack_intfc, only: icepack_warnings_flush, icepack_warnings_aborted
33 : use icedrv_system, only: icedrv_system_abort, icedrv_system_flush
34 :
35 : implicit none
36 :
37 : integer n
38 : logical openflag
39 : character(len=*), parameter :: subname='(icedrv)'
40 :
41 : !-----------------------------------------------------------------
42 : ! Initialize Icepack
43 : !-----------------------------------------------------------------
44 :
45 83 : call icedrv_initialize
46 :
47 : !-----------------------------------------------------------------
48 : ! Run Icepack
49 : !-----------------------------------------------------------------
50 :
51 83 : call icedrv_run
52 :
53 83 : call icepack_warnings_flush(nu_diag)
54 83 : if (icepack_warnings_aborted()) call icedrv_system_abort(string=subname, &
55 0 : file=__FILE__,line= __LINE__)
56 :
57 83 : write(ice_stdout, *) "ICEPACK COMPLETED SUCCESSFULLY "
58 :
59 83 : inquire(unit=ice_stdout,opened=openflag)
60 83 : if (openflag) then
61 83 : call icedrv_system_flush(ice_stdout)
62 83 : close (ice_stdout)
63 : endif
64 :
65 83 : inquire(unit=nu_diag,opened=openflag)
66 83 : if (openflag) then
67 0 : call icedrv_system_flush(nu_diag)
68 0 : close (nu_diag)
69 : endif
70 :
71 415 : do n = 1, nx
72 332 : inquire(unit=nu_diag_out+n-1,opened=openflag)
73 415 : if (openflag) then
74 332 : call icedrv_system_flush(nu_diag_out+n-1)
75 332 : close (nu_diag_out+n-1)
76 : endif
77 : enddo
78 :
79 83 : end program icedrv
80 :
81 : !=======================================================================
|