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