Oasis3 4.0.2
|
00001 SUBROUTINE chkpar 00002 C**** 00003 C ***************************** 00004 C * OASIS ROUTINE - LEVEL 0 * 00005 C * ------------- ------- * 00006 C ***************************** 00007 C 00008 C**** *chkpar* - Parameter checking 00009 C 00010 C Purpose: 00011 C ------- 00012 C Checks option compatibility between oasis and remote models 00013 C as well as some basic dimension checks 00014 C 00015 C** Interface: 00016 C --------- 00017 C *CALL* *chkpar* 00018 C 00019 C Input: 00020 C ----- 00021 C None 00022 C 00023 C Output: 00024 C ------ 00025 C None 00026 C 00027 C Workspace: 00028 C --------- 00029 C 00030 C Externals: 00031 C --------- 00032 C imaxim 00033 C 00034 C Reference: 00035 C --------- 00036 C See OASIS manual (1995) 00037 C 00038 C History: 00039 C ------- 00040 C Version Programmer Date Description 00041 C ------- ---------- ---- ----------- 00042 C 2.0 L. Terray 95/10/01 created 00043 C 2.2 L. Terray 97/11/13 added: check nitfn if cchan 00044 C equals NONE 00045 C 2.3 S. Valcke 99/04/30 added: printing levels 00046 C 2.3 S. Valcke 99/10/12 check if nninnfl and nninnflg 00047 C are different 00048 C 2.4 S. Valcke 2K/02/03 check CLIM_MaxPOrt and jpfield 00049 C 2.4 S. Valcke 2K/02/03 check CLIM_MaxSegment and jpparal 00050 C 00051 C %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 00052 C 00053 C* --------------- Include files and use of modules--------------------------- 00054 C 00055 USE mod_unit 00056 USE mod_parameter 00057 USE mod_string 00058 USE mod_extrapol 00059 USE mod_experiment 00060 USE mod_timestep 00061 USE mod_hardware 00062 USE mod_printing 00063 C 00064 C* ---------------------------- Local declarations ---------------------- 00065 C 00066 INTEGER (kind=ip_intwp_p), DIMENSION(:), ALLOCATABLE :: itime, 00067 $ iexch 00068 C 00069 C* ---------------------------- Poema verses ---------------------------- 00070 C 00071 C %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 00072 C 00073 C* 1. Allocations and Initializations 00074 C ------------------------------- 00075 C 00076 IF (nlogprt .GE. 1) THEN 00077 WRITE (UNIT = nulou,FMT = *) ' ' 00078 WRITE (UNIT = nulou,FMT = *) ' ' 00079 WRITE (UNIT = nulou,FMT = *) 00080 $ ' ROUTINE chkpar - Level 0' 00081 WRITE (UNIT = nulou,FMT = *) 00082 $ ' ************** *******' 00083 WRITE (UNIT = nulou,FMT = *) ' ' 00084 WRITE (UNIT = nulou,FMT = *) ' control of run time options' 00085 WRITE (UNIT = nulou,FMT = *) ' ' 00086 WRITE (UNIT = nulou,FMT = *) ' ' 00087 WRITE (UNIT = nulou,FMT = *) ' ' 00088 CALL FLUSH(nulou) 00089 ENDIF 00090 C 00091 C* In the CLIM CASE, mstep, mfcpl and mdt are not defined anymore in inicmc.f. 00092 C 00093 IF (cchan.ne.'MPI1'.and.cchan.ne.'MPI2'.and.cchan.ne.'GSIP') then 00094 C 00095 C* Array allocation 00096 C 00097 ALLOCATE (itime(ig_nmodel)) 00098 ALLOCATE (iexch(ig_nmodel)) 00099 C 00100 C* Initialization of remote models time variables. 00101 C 00102 DO 110 jm = 1, ig_nmodel 00103 itime(jm) = mstep(jm) * mdt(jm) 00104 iexch(jm) = mfcpl(jm) * mdt(jm) 00105 110 CONTINUE 00106 00107 C 00108 C* 2. Basic checks 00109 C ------------ 00110 C 00111 C* 3. Time compatibility checks 00112 C ------------------------- 00113 C 00114 DO 310 jm = 1, ig_nmodel 00115 WRITE (UNIT = nulou,FMT = *)'itime ',itime(jm) 00116 WRITE (UNIT = nulou,FMT = *)'ntime ',ntime 00117 IF (itime(jm) .NE. ntime) THEN 00118 WRITE (UNIT = nulou,FMT = *) ' ***WARNING***' 00119 WRITE (UNIT = nulou,FMT = *) 00120 $ ' ===>>> : total runtime for model',jm 00121 WRITE (UNIT = nulou,FMT = *) 00122 $ ' incompatible with coupler total time ' 00123 WRITE (UNIT = nulou,FMT = *) 00124 $ ' ====== ======= ' 00125 WRITE (UNIT = nulou,FMT = *) ' ' 00126 WRITE (UNIT = nulou,FMT = *) 00127 $ 00128 ' The current simulation uses asynchroneous $ coupling' 00129 WRITE (UNIT = nulou,FMT = *) 00130 $ ' -------------' 00131 WRITE (UNIT = nulou,FMT = *) ' ' 00132 ENDIF 00133 C 00134 C* The exchange frequency data sent from remote models is the 00135 C smallest frequency used in a given model. This is a crude 00136 C check of the compatibility of coupling options. 00137 C 00138 WRITE (UNIT = nulou,FMT = *)'iexch ',iexch(jm) 00139 WRITE (UNIT = nulou,FMT = *)'nstep ',nstep 00140 IF (MOD(iexch(jm),nstep) .NE. 0) THEN 00141 WRITE (UNIT = nulou,FMT = *) ' ***WARNING***' 00142 WRITE (UNIT = nulou,FMT = *) 00143 $ ' ===>>> : exchange time incompatible with model', 00144 $ jm 00145 WRITE (UNIT = nulou,FMT = *) 00146 $ ' ====== ===== ' 00147 WRITE (UNIT = nulou,FMT = *) ' ' 00148 WRITE (UNIT = nulou,FMT = *) 00149 $ ' We STOP !!! rerun with new parameters' 00150 WRITE (UNIT = nulou,FMT = *) 00151 $ ' ---------------' 00152 WRITE (UNIT = nulou,FMT = *) ' ' 00153 CALL HALTE ('STOP in chkpar') 00154 ENDIF 00155 310 CONTINUE 00156 DEALLOCATE (itime) 00157 DEALLOCATE (iexch) 00158 ENDIF 00159 C 00160 C 00161 C* 4. End of routine 00162 C -------------- 00163 C 00164 IF (nlogprt .GE. 1) THEN 00165 WRITE (UNIT = nulou,FMT = *) ' ' 00166 WRITE (UNIT = nulou,FMT = *) 00167 $ ' ---------- End of ROUTINE chkpar --------' 00168 CALL FLUSH (nulou) 00169 ENDIF 00170 RETURN 00171 END 00172 00173