abc プロジェクト
14.8.23. OutputSetParamCode メンバ関数説明 |
メンバ関数名 | OutputSetParamCode |
定義ファイル名 | TuneRegion.cpp |
定義行 | 1131 |
所属名 | TTuneRegion |
アクセス属性 | public |
宣言形式 | void OutputSetParamCode ( FILE * fp , int TempLineNo ) |
概要 | ABCLib_Coontrol.f の ABCLob_SetParam()のコードを出力する。 |
戻り値 | |
パラメタ説明 | fp 出力先ファイルポインタ TempLineNo 作成する行番号のベース |
機能説明 | |
備考 | |
呼出し元関数一覧表
呼出し先関数一覧表
|
名称 |
定義ファイル名 |
定義行 |
1 |
fprintf |
|
|
2 |
Length |
|
|
参照外部変数一覧表
参照メンバ変数一覧表
関数論理チャート
| +----------------------------------------------------------------+
1131 +--+ void TTuneRegion::OutputSetParamCode(FILE *fp,int TempLineNo) |
1132 | { |
+--+-------------------------------------------------------------+
1133 +--- fprintf(fp,"\n");
1134 +--- fprintf(fp,"\n");
1135 +--- fprintf(fp," if (index(ABCLib_Routine,'%s') .ne. 0) then\n",Name);
1136 +--- fprintf(fp,"\n");
| +----------------------------------------------+
1137 +--+ if(FittingType == 0){ // Fittingでない場合 |
| +--+-------------------------------------------+
1138 | +--- fprintf(fp," isw = -1\n");
1139 | +--- fprintf(fp," ibsw = 1\n");
1140 | +--- fprintf(fp,"c ---- file create\n");
1141 | +--- fprintf(fp,"c -----------------------------------------\n");
1142 | +--- fprintf(fp," if (myid .eq. 0) then\n");
1143 | +--- fprintf(fp," open(21, status = 'old',\n");
1144 | +--- fprintf(fp," & file = 'ABCLib_%s%sParam.dat',\n",TuneGroupName,Name);
1145 | +--- fprintf(fp," & action = 'read', pad= 'yes', err =%d)\n",TempLineNo+2);
1146 | +--- fprintf(fp,"\n");
1147 | +--- fprintf(fp,"c --- Seek object file\n");
1148 | +--- fprintf(fp," read(21, *) cbuf\n");
1149 | +--- fprintf(fp," do while (index(cbuf,'%s') .eq. 0)\n",Name);
1150 | +--- fprintf(fp," read(21, *) cbuf\n");
1151 | +--- fprintf(fp," enddo\n");
1152 | +--- fprintf(fp,"\n");
1153 | +--- fprintf(fp," do\n");
1154 | +--- fprintf(fp,"c --- Find problemsize\n");
1155 | +--- //
1156 | | // コンパイル時のワーニング回避のために、 FMT='A A'を FMT='(A A)' に修正した。
1157 | | // g95 コンパイラでのワーニング
1158 | | // 2007/1/18
1159 | | //
1160 | | // fprintf(fp," read(UNIT=21, FMT='A A', END=%d) cbuf\n",TempLineNo);
1161 | +--- fprintf(fp," read(UNIT=21, FMT='(A A)', END=%d) cbuf\n",TempLineNo);
1162 | +--- fprintf(fp," do while (index(cbuf,'ABCLib_PROBSIZE') .eq. 0)\n");
1163 | +--- // fprintf(fp," read(UNIT=21, FMT='A A', END=%d) cbuf\n",TempLineNo);
1164 | +--- fprintf(fp," read(UNIT=21, FMT='(A A)', END=%d) cbuf\n",TempLineNo);
1165 | +--- fprintf(fp," enddo\n");
1166 | +--- fprintf(fp,"c -------------------------------------------\n");
1167 | +--- fprintf(fp,"\n");
1168 | +--- fprintf(fp,"\n");
1169 | +--- fprintf(fp,"c ---- find space\n");
1170 | +--- fprintf(fp," i = index(cbuf,'ABCLib_PROBSIZE')+len('ABCLib_PROBSIZE')\n");
1171 | +--- fprintf(fp," do while(cbuf(i:i) .eq. ' ')\n");
1172 | +--- fprintf(fp," i = i + 1\n");
1173 | +--- fprintf(fp," enddo\n");
1174 | +--- fprintf(fp,"c ---------------------------------\n");
1175 | +--- fprintf(fp,"\n");
1176 | +--- fprintf(fp,"c ---- store digit and change it to integer\n");
1177 | +--- fprintf(fp," j = 1\n");
1178 | +--- fprintf(fp," do while(cbuf(i:i) .ne. ' ')\n");
1179 | +--- fprintf(fp," digit(j:j) = cbuf(i:i)\n");
1180 | +--- fprintf(fp," i = i + 1\n");
1181 | +--- fprintf(fp," j = j + 1\n");
1182 | +--- fprintf(fp," enddo\n");
1183 | +--- fprintf(fp,"c ---------------------------------\n");
1184 | +--- fprintf(fp," digit(j:j) = ' '\n");
1185 | +--- fprintf(fp," call ABCLibCharToNum(digit, inum)\n");
1186 | +--- fprintf(fp,"c -----------------------------------------\n");
1187 | +--- fprintf(fp,"\n");
1188 | +--- fprintf(fp,"c --- Find parameter\n");
1189 | +--- // fprintf(fp," read(UNIT=21, FMT='A A', END=%d) cbuf\n",TempLineNo);
1190 | +--- fprintf(fp," read(UNIT=21, FMT='(A A)', END=%d) cbuf\n",TempLineNo);
1191 | +--- fprintf(fp," do while (index(cbuf, '%s_I') .eq. 0)\n",Name);
1192 | +--- // fprintf(fp," read(UNIT=21, FMT='A A', END=%d) cbuf\n",TempLineNo);
1193 | +--- fprintf(fp," read(UNIT=21, FMT='(A A)', END=%d) cbuf\n",TempLineNo);
1194 | +--- fprintf(fp," enddo\n");
1195 | +--- fprintf(fp,"c -------------------------------------------\n");
1196 | +--- fprintf(fp,"\n");
1197 | +--- fprintf(fp,"\n");
1198 | +--- fprintf(fp,"c ---- find space\n");
1199 | +--- fprintf(fp," i = index(cbuf, '%s_I')+%d\n",Name,Name.Length()+2);
1200 | +--- fprintf(fp," do while(cbuf(i:i) .eq. ' ')\n");
1201 | +--- fprintf(fp," i = i + 1\n");
1202 | +--- fprintf(fp," enddo\n");
1203 | +--- fprintf(fp,"c ---------------------------------\n");
1204 | +--- fprintf(fp,"\n");
1205 | +--- fprintf(fp,"c ---- store digit and change it to integer\n");
1206 | +--- fprintf(fp," j = 1\n");
1207 | +--- fprintf(fp," do while(cbuf(i:i) .ne. ' ')\n");
1208 | +--- fprintf(fp," digit(j:j) = cbuf(i:i)\n");
1209 | +--- fprintf(fp," i = i + 1\n");
1210 | +--- fprintf(fp," j = j + 1\n");
1211 | +--- fprintf(fp," enddo\n");
1212 | +--- fprintf(fp,"c ---------------------------------\n");
1213 | +--- fprintf(fp," digit(j:j) = ' '\n");
1214 | +--- fprintf(fp," call ABCLibCharToNum(digit, ibsw)\n");
1215 | +--- fprintf(fp,"\n");
1216 | +--- fprintf(fp,"c --- inputed n is less than filed num?\n");
1217 | +--- fprintf(fp," if (n .le. inum) then\n");
1218 | +--- fprintf(fp," isw = ibsw\n");
1219 | +--- fprintf(fp," goto %d\n",TempLineNo);
1220 | +--- fprintf(fp," endif\n");
1221 | +--- fprintf(fp," enddo\n");
1222 | +--- fprintf(fp,"c === end of seeking loop for n\n");
1223 | +--- fprintf(fp," %-6d continue\n",TempLineNo);
1224 | +--- fprintf(fp,"\n");
1225 | +--- fprintf(fp,"c --- File close\n");
1226 | +--- fprintf(fp," close(21, status = 'keep')\n");
1227 | +--- fprintf(fp,"\n");
1228 | +--- fprintf(fp,"c --- This is last parameter\n");
1229 | +--- fprintf(fp," %-6d if (isw .eq. -1) then\n",TempLineNo+2);
1230 | +--- fprintf(fp," isw = ibsw\n");
1231 | +--- fprintf(fp," endif\n");
1232 | +--- fprintf(fp,"\n");
1233 | +--- fprintf(fp," endif\n");
1234 | +--- fprintf(fp,"c === end of myid == 1\n");
1235 | +--- fprintf(fp,"\n");
| +-+---+
1236 | | } |
| +-+---+
| +-+---------------------------+
1236 | | else{ // Fitting用の出力 |
1237 | | |
| +-+---------------------------+
1238 | +--- fprintf(fp,"c !!!!!fitting用処理\n");
1239 | +--- fprintf(fp,"c !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n");
1240 | +--- fprintf(fp,"\n");
1241 | +--- fprintf(fp," if (myid .eq. 0) then\n");
1242 | +--- fprintf(fp,"\n");
1243 | +--- fprintf(fp,"c === file open for LSM\n");
1244 | +--- // fprintf(fp," open(21, status = 'old', file = 'MyMM_I_LSM.dat',\n");
1245 | +--- fprintf(fp," open(21, status = 'old', file = '%s_%c_LSM.dat',\n",Name,TuneGroupName[1]);
1246 | +--- fprintf(fp," & action = 'read', pad= 'yes')\n");
1247 | +--- fprintf(fp,"\n");
1248 | +--- fprintf(fp,"c !!! varidから分かるパラメタの総数\n");
1249 | +--- fprintf(fp," nparm = 8\n");
1250 | +--- fprintf(fp,"\n");
1251 | +--- fprintf(fp,"c !!! polynolial x の値\n");
1252 | +--- fprintf(fp," m_lsm = 3\n");
1253 | +--- fprintf(fp,"\n");
1254 | +--- fprintf(fp," do isw=1, nparm\n");
1255 | +--- fprintf(fp," read (21, %d) dtemp,\n",TempLineNo);
1256 | +--- fprintf(fp," & (a_lsm(iii, isw-1), iii=0, m_lsm)\n");
1257 | +--- fprintf(fp," %-6d format(D20.10, 20D20.10)\n",TempLineNo);
1258 | +--- fprintf(fp," enddo\n");
1259 | +--- fprintf(fp,"\n");
1260 | +--- fprintf(fp," close(21, status = 'keep')\n");
1261 | +--- fprintf(fp,"\n");
1262 | +--- fprintf(fp,"c do i=1, nparm\n");
1263 | +--- fprintf(fp,"c write (*, %d) dble(i),\n",TempLineNo);
1264 | +--- fprintf(fp,"c & (a_lsm(iii, i-1), iii=0, m_lsm)\n");
1265 | +--- fprintf(fp,"c enddo\n");
1266 | +--- fprintf(fp,"\n");
1267 | +--- fprintf(fp," endif\n");
1268 | +--- fprintf(fp,"\n");
1269 | +--- fprintf(fp,"\n");
1270 | |
| | +----------------------+
1271 | +--+ if(!MainF->NoMPIF){ |
| | +--+-------------------+
1272 | | +--- fprintf(fp," call MPI_BCAST(a_lsm,\n");
1273 | | +--- fprintf(fp," & (ABCLibLSM_MAX_M+1)*ABCLibLSM_MAX_NPARM,\n");
1274 | | +--- fprintf(fp," & MPI_DOUBLE_PRECISION,0,\n");
1275 | | +--- fprintf(fp," & MPI_COMM_WORLD,ierr)\n");
| | +-+---+
1276 | | | } |
| | +-----+
1277 | +--- fprintf(fp,"\n");
1278 | +--- fprintf(fp,"\n");
1279 | +--- fprintf(fp,"c ==== Tuned Parameters do not exist.\n");
1280 | +--- fprintf(fp,"c if (myid .eq. 0) then\n");
1281 | +--- fprintf(fp,"c print *, \"I estimate parameters by LSM.\"\n");
1282 | +--- fprintf(fp,"c endif\n");
1283 | +--- fprintf(fp,"\n");
1284 | +--- fprintf(fp,"c if (myid .eq. 0) then\n");
1285 | +--- fprintf(fp,"c do i=1, nparm\n");
1286 | +--- fprintf(fp,"c write (*, %d) dble(i),\n",TempLineNo+1);
1287 | +--- fprintf(fp,"c & (a_lsm_TrdUd(iii, i-1), iii=0, ABCLibLSM_MAX_M)\n");
1288 | +--- fprintf(fp,"c enddo\n");
1289 | +--- fprintf(fp,"c print *, \"\"\n");
1290 | +--- fprintf(fp,"c %-6d format(D20.10, 20D20.10)\n",TempLineNo+1);
1291 | +--- fprintf(fp,"c endif\n");
1292 | +--- fprintf(fp,"\n");
1293 | +--- fprintf(fp," call ABCLibLSM_Est_Param(n, nparm, m_lsm,\n");
1294 | +--- fprintf(fp," & a_lsm, isw)\n");
1295 | +--- fprintf(fp,"\n");
1296 | +--- fprintf(fp,"c print *, \"isw=\",isw\n");
1297 | +--- fprintf(fp,"\n");
1298 | +--- fprintf(fp,"c !!!!!fitting用処理 の終り\n");
1299 | +--- fprintf(fp,"c !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n");
1300 | +--- fprintf(fp,"\n");
| +-+---+
1301 | | } |
| +-----+
1302 +--- fprintf(fp,"c === braodcast best param\n");
| +----------------------+
1303 +--+ if(!MainF->NoMPIF){ |
| +--+-------------------+
1304 | +--- fprintf(fp," call MPI_BCAST(isw,1,MPI_INTEGER,0,MPI_COMM_WORLD,ierr)\n");
| +-+---+
1305 | | } |
| +-----+
1306 +--- fprintf(fp,"\n");
1307 +--- fprintf(fp," endif\n");
1308 +--- fprintf(fp,"c === end of %s\n",Name);
+-+---+
1309 | } |
+-----+