1 /*****************************************************************************
2  * Copyright (c) 2019 FrontISTR Commons
3  * This software is released under the MIT License, see LICENSE.txt
4  *****************************************************************************/
5 /*
6   CHECDB_Amplitude Ver.1.0
7 */
8 
9 #include "CHECDB.h"
10 #include "CHECData.h"
11 
12 using namespace std;
13 
CHECDB_Amplitude()14 CHECDB_Amplitude::CHECDB_Amplitude()
15     : CHECDataBlock(HECDB_AMPLITUDE), ItemList() {
16   name[0] = 0;
17   strcpy(definition, "TABULAR");
18   strcpy(time, "STEP TIME");
19   strcpy(value, "RLATIVE");
20 }
21 
~CHECDB_Amplitude()22 CHECDB_Amplitude::~CHECDB_Amplitude() {}
23 
Clear()24 void CHECDB_Amplitude::Clear() { ItemList.clear(); }
25 
Write(CHECData * hecd)26 void CHECDB_Amplitude::Write(CHECData *hecd) {
27   if (ItemList.size() == 0) return;
28 
29   hecd->WriteHeader("!AMPLITUDE", "SSSS", "NAME", name, "DEFINITION",
30                     definition, "TIME", time, "VALUE", value);
31   vector<CItem>::iterator iter;
32 
33   for (iter = ItemList.begin(); iter != ItemList.end(); iter++) {
34     hecd->WriteData("FF", iter->val, iter->t);
35   }
36 }
37 
Read(CHECData * hecd,char * header_line)38 bool CHECDB_Amplitude::Read(CHECData *hecd, char *header_line) {
39   int rcode[10];
40 
41   if (!hecd->ParseHeader(header_line, rcode, "SSSS", "NAME", name, "DEFINITION",
42                          definition, "TIME", time, "VALUE", value))
43     return false;
44 
45   double val, t;
46 
47   while (hecd->ReadData(rcode, "FF", &val, &t)) {
48     ItemList.push_back(CItem(val, t));
49   }
50 
51   return true;
52 }
53