00001 !======================================================================= 00002 !BOP 00003 ! 00004 ! !MODULE: ice_domain_size 00005 ! 00006 ! !DESCRIPTION: 00007 ! 00008 ! Defines the global domain size and number of categories and layers. 00009 ! Code originally based on domain_size.F in POP 00010 ! 00011 ! !REVISION HISTORY: 00012 ! SVN:$Id: ice_domain_size.F90 52 2007-01-30 18:04:24Z eclare $ 00013 ! 00014 ! author Elizabeth C. Hunke, LANL 00015 ! 2004: Block structure and snow parameters added by William Lipscomb 00016 ! Renamed (used to be ice_model_size) 00017 ! 2006: Converted to free source form (F90) by Elizabeth Hunke 00018 ! Removed hardwired sizes (NX...can now be set in compile scripts) 00019 ! 00020 ! !INTERFACE: 00021 ! 00022 module ice_domain_size 00023 ! 00024 ! !USES: 00025 ! 00026 use ice_kinds_mod 00027 ! 00028 !EOP 00029 !======================================================================= 00030 00031 implicit none 00032 save 00033 00034 integer (kind=int_kind), parameter :: 00035 nx_global = NXGLOB , ! i-axis size 00036 ny_global = NYGLOB , ! j-axis size 00037 ncat = NCAT , ! number of categories 00038 nilyr = 4 , ! number of ice layers per category 00039 ntilyr = ncat*nilyr, ! number of ice layers in all categories 00040 nslyr = 1 , ! number of snow layers per category 00041 ntslyr = ncat*nslyr, ! number of snow layers in all categories 00042 n_aeromx = 6 , ! number of aerosols maximum 00043 #ifdef CCSMCOUPLED 00044 ntr_iage = NTR_IAGE , & ! 1 or 0 00045 ntr_FY = NTR_FY , & ! 1 or 0 00046 ntr_pond = NTR_POND , & ! 1 or 0 00047 ntr_aero = NTR_AERO , & ! number of aerosols in use (<= N_AEROMX) 00048 n_aero = ntr_aero , & 00049 ! number of tracers 00050 ! (defined in ice_state) 00051 ! 1 = surface temperature 00052 ntrcr = 1 + ntr_iage + ntr_FY + ntr_pond + ntr_aero*4 00053 #else 00054 n_aero = 0 , & ! number of aerosols in use 00055 ntrcr = 2 ! number of tracers (defined in ice_state) 00056 ! 1 = surface temperature 00057 ! ice age, FY ice, pond volume 00058 ! plus 4 for each of the n_aero aerosols MH 00059 #endif 00060 00061 integer (kind=int_kind), parameter :: 00062 max_nstrm = 5 ! Number of output streams 00063 00064 integer (kind=int_kind), parameter :: 00065 block_size_x = BLCKX , ! size of block in first horiz dimension 00066 block_size_y = BLCKY ! size of block in second horiz dimension 00067 00068 !*** The model will inform the user of the correct 00069 !*** values for the parameter below. A value higher than 00070 !*** necessary will not cause the code to fail, but will 00071 !*** allocate more memory than is necessary. A value that 00072 !*** is too low will cause the code to exit. 00073 !*** A good initial guess is found using 00074 !*** max_blocks = (nx_global/block_size_x)*(ny_global/block_size_y)/ 00075 !*** num_procs 00076 00077 integer (kind=int_kind), parameter :: 00078 max_blocks = MXBLCKS ! max number of blocks per processor 00079 00080 !======================================================================= 00081 00082 end module ice_domain_size 00083 00084 !=======================================================================