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 TPass5::MakeControlCode pass5.cpp 211

呼出し先関数一覧表
名称 定義ファイル名 定義行
1 fprintf

2 Length

参照外部変数一覧表
名称 定義ファイル名 定義行
1 MainF main.cpp 26

参照メンバ変数一覧表
名称 定義ファイル名 定義行
1 TTuneRegion::FittingType TuneRegion.h 166
2 TTuneRegion::Name TuneRegion.h 125
3 TTuneRegion::TuneGroupName TuneRegion.h 129

関数論理チャート

        |  +----------------------------------------------------------------+ 
  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      |  }  | 
            +-----+