github.com/archlabjp/eeslism-go@v0.0.0-20231109122333-4bb7bfcdf292/eeslism/eedayslib.go (about) 1 package eeslism 2 3 const MAXINT_DAY = -999.0 4 const MININT_DAY = 999.0 5 6 func svdyint(vd *SVDAY) { 7 vd.M = 0.0 8 vd.Mn = MININT_DAY 9 vd.Mx = MAXINT_DAY 10 vd.Hrs = 0 11 vd.Mntime = -1 12 vd.Mxtime = -1 13 } 14 15 func svdaysum(time int64, control ControlSWType, v float64, vd *SVDAY) { 16 if control != '0' { 17 vd.M += v 18 vd.Hrs++ 19 minmark(&vd.Mn, &vd.Mntime, v, time) 20 maxmark(&vd.Mx, &vd.Mxtime, v, time) 21 } 22 if time == 2400 && vd.Hrs > 0 { 23 vd.M /= float64(vd.Hrs) 24 } 25 } 26 27 func svmonsum(Mon int, Day int, time int, control ControlSWType, v float64, vd *SVDAY, Dayend int, SimDayend int) { 28 MoNdTt := int64(1000000*Mon + 10000*Day + time) 29 30 if control != '0' { 31 vd.M += v 32 vd.Hrs++ 33 minmark(&vd.Mn, &vd.Mntime, v, MoNdTt) 34 maxmark(&vd.Mx, &vd.Mxtime, v, MoNdTt) 35 } 36 37 if IsEndDay(Mon, Day, Dayend, SimDayend) && vd.Hrs > 0 && time == 2400 { 38 vd.M /= float64(vd.Hrs) 39 } 40 } 41 42 /* ------------------------------------ */ 43 44 func qdyint(Qd *QDAY) { 45 Qd.H = 0.0 46 Qd.C = 0.0 47 Qd.Hmx = 0.0 48 Qd.Cmx = 0.0 49 Qd.Hhr = 0 50 Qd.Chr = 0 51 Qd.Hmxtime = -1 52 Qd.Cmxtime = -1 53 } 54 55 func qdaysum(time int64, control ControlSWType, Q float64, Qd *QDAY) { 56 if control != '0' { 57 if Q > 0.0 { 58 Qd.H += Q 59 maxmark(&Qd.Hmx, &Qd.Hmxtime, Q, time) 60 Qd.Hhr++ 61 } else if Q < 0.0 { 62 Qd.C += Q 63 minmark(&Qd.Cmx, &Qd.Cmxtime, Q, time) 64 Qd.Chr++ 65 } 66 } 67 68 if time == 2400 { 69 Qd.H *= Cff_kWh 70 Qd.C *= Cff_kWh 71 } 72 } 73 74 func qmonsum(Mon int, Day int, time int, control ControlSWType, Q float64, Qd *QDAY, Dayend int, SimDayend int) { 75 MoNdTt := int64(1000000*Mon + 10000*Day + time) 76 77 if control != '0' { 78 if Q > 0.0 { 79 Qd.H += Q 80 maxmark(&Qd.Hmx, &Qd.Hmxtime, Q, MoNdTt) 81 Qd.Hhr++ 82 } else if Q < 0.0 { 83 Qd.C += Q 84 minmark(&Qd.Cmx, &Qd.Cmxtime, Q, MoNdTt) 85 Qd.Chr++ 86 } 87 } 88 89 if IsEndDay(Mon, Day, Dayend, SimDayend) && time == 2400 { 90 Qd.H *= Cff_kWh 91 Qd.C *= Cff_kWh 92 } 93 } 94 95 // 日集計関数。非運転時にも集計を行う 96 func qdaysumNotOpe(time int64, Q float64, Qd *QDAY) { 97 if Q > 0.0 { 98 Qd.H += Q 99 maxmark(&Qd.Hmx, &Qd.Hmxtime, Q, time) 100 Qd.Hhr++ 101 } else if Q < 0.0 { 102 Qd.C += Q 103 minmark(&Qd.Cmx, &Qd.Cmxtime, Q, time) 104 Qd.Chr++ 105 } 106 107 if time == 2400 { 108 Qd.H *= Cff_kWh 109 Qd.C *= Cff_kWh 110 } 111 } 112 113 func qmonsumNotOpe(Mon int, Day int, time int, Q float64, Qd *QDAY, Dayend int, SimDayend int) { 114 MoNdTt := int64(1000000*Mon + 10000*Day + time) 115 116 if Q > 0.0 { 117 Qd.H += Q 118 maxmark(&Qd.Hmx, &Qd.Hmxtime, Q, MoNdTt) 119 Qd.Hhr++ 120 } else if Q < 0.0 { 121 Qd.C += Q 122 minmark(&Qd.Cmx, &Qd.Cmxtime, Q, MoNdTt) 123 Qd.Chr++ 124 } 125 126 if IsEndDay(Mon, Day, Dayend, SimDayend) && time == 2400 { 127 Qd.H *= Cff_kWh 128 Qd.C *= Cff_kWh 129 } 130 } 131 132 /* ------------------------------------ */ 133 134 func edyint(Ed *EDAY) { 135 Ed.D = 0.0 136 Ed.Mx = 0.0 137 Ed.Hrs = 0 138 Ed.Mxtime = -1 139 } 140 141 func edaysum(time int, control ControlSWType, E float64, Ed *EDAY) { 142 if control != '0' { 143 Ed.D += E 144 maxmark(&Ed.Mx, &Ed.Mxtime, E, int64(time)) 145 Ed.Hrs++ 146 } 147 148 if time == 2400 { 149 Ed.D *= Cff_kWh 150 } 151 } 152 153 func emonsum(Mon, Day, time int, control ControlSWType, E float64, Ed *EDAY, Dayend, SimDayend int) { 154 var MoNdTt int64 = int64(1000000*Mon + 10000*Day + time) 155 156 if control != OFF_SW { 157 Ed.D += E 158 maxmark(&Ed.Mx, &Ed.Mxtime, E, MoNdTt) 159 Ed.Hrs++ 160 } 161 162 if IsEndDay(Mon, Day, Dayend, SimDayend) && time == 2400 { 163 Ed.D *= Cff_kWh 164 } 165 } 166 167 func emtsum(Mon, Day, time int, control ControlSWType, E float64, Ed *EDAY) { 168 if control != OFF_SW { 169 Ed.D += E 170 } 171 } 172 173 func minmark(minval *float64, timemin *int64, v float64, time int64) { 174 if v <= *minval { 175 *timemin = time 176 *minval = v 177 } 178 } 179 180 func maxmark(maxval *float64, timemax *int64, v float64, time int64) { 181 if v >= *maxval { 182 *timemax = time 183 *maxval = v 184 } 185 }