/** Force all meters in active circuit to sample. */ @Override public void sampleAll() { Circuit ckt = DSS.activeCircuit; for (EnergyMeterObj meter : ckt.getEnergyMeters()) if (meter.isEnabled()) meter.takeSample(); systemMeter.takeSample(); if (saveDemandInterval) { /* Write totals demand interval file */ PrintWriter pw = new PrintWriter(DI_Totals); pw.printf("%-.6g ", ckt.getSolution().getDblHour()); for (int i = 0; i < NUM_EM_REGISTERS; i++) pw.printf(", %-.6g", DI_RegisterTotals[i]); pw.println(); pw.close(); clearDI_Totals(); if (overloadFileIsOpen) writeOverloadReport(); if (voltageFileIsOpen) writeVoltageReport(); } // sample generator and storage objects, too generatorClass.sampleAll(); DSS.storageClass.sampleAll(); // samples energymeter part of storage elements (not update) }
@Override public int edit() { Parser parser = Parser.getInstance(); // continue parsing with contents of parser activeEnergyMeterObj = (EnergyMeterObj) elementList.getActive(); DSS.activeCircuit.setActiveCktElement(activeEnergyMeterObj); boolean doRecalc = false; EnergyMeterObj elem = activeEnergyMeterObj; elem.setMeteredElementChanged(false); int paramPointer = -1; String paramName = parser.getNextParam(); String param = parser.stringValue(); while (param.length() > 0) { if (paramName.length() == 0) { paramPointer += 1; } else { paramPointer = commandList.getCommand(paramName); } if (paramPointer >= 0 && paramPointer < numProperties) elem.setPropertyValue(paramPointer, param); switch (paramPointer) { case -1: DSS.doSimpleMsg( "Unknown parameter \"" + paramName + "\" for object \"" + getClassName() + "." + elem.getName() + "\"", 520); break; case 0: elem.setElementName(param.toLowerCase()); break; case 1: elem.setMeteredTerminalIdx(parser.integerValue() - 1); break; case 2: /* Actions */ switch (param.toLowerCase().charAt(0)) { case 'a': elem.allocateLoad(); break; case 'c': elem.resetRegisters(); break; case 'r': elem.reduceZone(); break; case 's': elem.saveRegisters(); break; case 't': elem.takeSample(); break; case 'z': elem.zoneDump(); break; } break; case 3: processOptions(param); break; case 4: elem.setMaxZoneKVANorm(parser.doubleValue()); break; case 5: elem.setMaxZoneKVAEmerg(parser.doubleValue()); break; case 6: parser.parseAsVector(elem.getNumPhases(), elem.getSensorCurrent()); // inits to zero break; case 7: Util.interpretAndAllocStrArray( param, elem.getDefinedZoneListSize(), elem.getDefinedZoneList()); break; case 8: elem.setLocalOnly(Util.interpretYesNo(param)); break; case 9: interpretRegisterMaskArray(elem.getTotalsMask()); break; case 10: elem.setLosses(Util.interpretYesNo(param)); break; case 11: elem.setLineLosses(Util.interpretYesNo(param)); break; case 12: elem.setXfmrLosses(Util.interpretYesNo(param)); break; case 13: elem.setSeqLosses(Util.interpretYesNo(param)); break; case 14: elem.setThreePhaseLosses(Util.interpretYesNo(param)); break; case 15: elem.setVBaseLosses(Util.interpretYesNo(param)); break; case 16: elem.setPhaseVoltageReport(Util.interpretYesNo(param)); break; /* case 10: aem.setHasFeeder(Utilities.interpretYesNo(Param)); break;*/ default: classEdit(activeEnergyMeterObj, paramPointer - EnergyMeter.NumPropsThisClass); break; } switch (paramPointer) { case 0: elem.setMeteredElementChanged(true); doRecalc = true; break; case 1: elem.setMeteredElementChanged(true); doRecalc = true; break; case 10: if (elem.hasFeeder()) { doRecalc = true; } else { elem.removeFeederObj(); } break; } paramName = parser.getNextParam(); param = parser.stringValue(); } if (doRecalc) elem.recalcElementData(); // when some basic data have changed return 0; }