Merge branch 'master_14.3.1' (14.3.1-10,11) into omaha_14.3.1

Former-commit-id: 4041e8afbb4bf1c0c416624140d74d27e963f9c8
This commit is contained in:
Steve Harris 2014-06-16 07:49:58 -05:00
commit 6c82cc5c3d
62 changed files with 1784 additions and 226 deletions

View file

@ -0,0 +1,30 @@
# radarWatchdog.txt
#
# Controls how long to wait for products specified on the RPS list before
# sounding an alarm. There are two sections: One defines VCP durations
# and one that lists products to monitor.
#
# VCP duration format: <VCP number>|<duration in seconds>
#
# Product format: <product mnemonic>
#
# <product mnemonic> is a mnemonic found in radarInfo.txt.
#
#
# If a product is listed, but is not actually in the current RPS list,
# it will not be monitored.
[VCP]
11 | 300
211 | 300
12 | 270
212 | 270
21 | 360
121 | 360
221 | 360
31 | 600
32 | 600
80 | 360
90 | 360
[Products]
V
Z

View file

@ -124,6 +124,7 @@ public class RadarServer implements RadarEventListener {
addListener(new DedicatedRadarActivator(this));
addListener(new RequestScheduler(this));
addListener(new RadarServerAvailable(this));
addListener(new RadarWatchdogListener(configuration));
}
public void addListener(RadarEventListener l) {

View file

@ -42,6 +42,7 @@ import com.raytheon.rcm.event.RadarEventAdapter;
* ------------ ---------- ----------- --------------------------
* Nov 9, 2011 mnash Initial creation
* 2012-07-27 DR 14896 D. Friedman Handle multiple RPGs.
* 2014-05-22 DR 16319 dhuffman Change some methods to static.
*
* </pre>
*
@ -86,7 +87,7 @@ public class RadarServerAvailable extends RadarEventAdapter {
}
}
private void sendNotification(final String radarId, final String message) {
public static void sendNotification(final String radarId, final String message) {
getExecutorService().submit(new Runnable() {
@Override
public void run() {
@ -95,7 +96,7 @@ public class RadarServerAvailable extends RadarEventAdapter {
});
}
private void sendNotification2(String radarId, String message) {
private static void sendNotification2(String radarId, String message) {
ProcessBuilder builder;
Process proc = null;

View file

@ -0,0 +1,259 @@
/**
* This software was developed and / or modified by Raytheon Company,
* pursuant to Contract DG133W-05-CQ-1067 with the US Government.
*
* U.S. EXPORT CONTROLLED TECHNICAL DATA
* This software product contains export-restricted data whose
* export/transfer/disclosure is restricted by U.S. law. Dissemination
* to non-U.S. persons whether in the United States or abroad requires
* an export license or other authorization.
*
* Contractor Name: Raytheon Company
* Contractor Address: 6825 Pine Street, Suite 340
* Mail Stop B8
* Omaha, NE 68106
* 402.291.0100
*
* See the AWIPS II Master Rights File ("Master Rights File.pdf") for
* further licensing information.
**/
package com.raytheon.rcm.server;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
import com.raytheon.rcm.config.Configuration;
/**
*
* This class encapsulates the watchdog activity into a plugin for the
* RadarServer.
*
* <pre>
*
* SOFTWARE HISTORY
*
* Date Ticket# Engineer Description
* ------------- ---------- ----------- --------------------------
* May 12, 2014 DR 16319 dhuffman Initial creation.
*
* </pre>
*
* @author dhuffman
* @version 1.0
*/
public class RadarWatchdog extends Thread {
private static Object semifore = new Object();
protected static class GsmItem {
protected String radarID;
protected int vcp;
protected long time;
protected long alarmTime;
protected long nextAlarmTime;
protected GsmItem() {
}
}
protected static class RadarItem {
protected String radarID;
protected String mnemonic;
protected long time;
protected long messageTime;
protected RadarItem() {
}
}
private long startTime = 0;
private long shortestWait = 0;
private static final long fudgeTime = 30;
private static Map<String, GsmItem> mapGSM = new ConcurrentHashMap<String, GsmItem>();
private static Map<String, Map<String, RadarItem>> mapMnemonic = new ConcurrentHashMap<String, Map<String, RadarItem>>();
private static Map<Integer, Integer> mapDuration = new ConcurrentHashMap<Integer, Integer>();
private static List<String> mapMnemonicProducts = new ArrayList<String>();
protected Configuration configuration;
private static String configFileName = "radarWatchdog.txt";
protected RadarWatchdog(Configuration conf) {
setDaemon(true);
startTime = System.currentTimeMillis();
configuration = conf;
loadConfigFile(configFileName);
Iterator<String> mnem = mapMnemonicProducts.iterator();
while (mnem.hasNext()) {
String mn = mnem.next();
Map<String, RadarItem> mapRadar = new ConcurrentHashMap<String, RadarItem>();
mapMnemonic.put(mn, mapRadar);
}
}
public GsmItem getGSMItem(final String radarID) {
return mapGSM.get(radarID);
}
public void putGSMItem(GsmItem gi) {
if (gi != null) {
mapGSM.put(gi.radarID, gi);
}
}
public RadarItem getRadarItem(final String Mnemonic, final String radarID) {
Map<String, RadarItem> mapRadar = mapMnemonic.get(Mnemonic);
if (mapRadar != null)
return mapRadar.get(radarID);
return null;
}
public void putRadarItem(RadarItem ri) {
if (ri != null) {
Map<String, RadarItem> mapRadar = mapMnemonic.get(ri.mnemonic);
if (mapRadar != null) {
mapRadar.put(ri.radarID, ri);
}
}
}
@Override
public void run() {
long currentTime = 0;
shortestWait = 0;
while (true) {
try {
synchronized (semifore) {
semifore.wait(shortestWait < 800 ? 800 : shortestWait);
currentTime = System.currentTimeMillis();
}
} catch (InterruptedException e) {
e.printStackTrace();
}
patrol(currentTime);
}
}
private void patrol(long currentTime) {
long duration = 0;
long adjustedTime = currentTime - fudgeTime;
shortestWait = 0;
Iterator<GsmItem> git = mapGSM.values().iterator();
while (git.hasNext()) {
GsmItem gi = git.next();
if (mapDuration.get(gi.vcp) != null) {
duration = mapDuration.get(gi.vcp) * 1000;
Iterator<String> mnem = mapMnemonicProducts.iterator();
while (mnem.hasNext()) {
String mn = mnem.next();
Map<String, RadarItem> mapRadar = mapMnemonic.get(mn);
if (mapRadar == null)
continue;
RadarItem ri = mapRadar.get(gi.radarID);
if (ri == null) {
if (duration + startTime < adjustedTime
&& gi.alarmTime != startTime) {
alert(duration, gi, mn);
gi.alarmTime = startTime;
gi.nextAlarmTime = startTime + duration;
}
if (shortestWait < 1 || duration < shortestWait)
shortestWait = duration;
}
if (ri != null) {
if (ri.time + duration < adjustedTime) {
if (ri.time <= gi.alarmTime
&& gi.nextAlarmTime < currentTime) {
alert(duration, gi, ri.mnemonic);
gi.alarmTime = ri.time;
gi.nextAlarmTime = currentTime + duration;
}
if (gi.nextAlarmTime < currentTime)
gi.alarmTime = ri.time;
}
if ((duration + ri.time) - adjustedTime < shortestWait
&& 1 <= (duration + ri.time) - adjustedTime)
shortestWait = (duration + ri.time) - adjustedTime;
if (shortestWait < 1)
shortestWait = duration;
}
}
}
}
}
private void alert(final long duration, final GsmItem gi, final String mn) {
String AlertVizMessage = "Watchdog: Radar ";
AlertVizMessage += gi.radarID + " has not produced a '" + mn
+ "' product in the last " + duration / 1000 + " seconds.";
RadarServerAvailable.sendNotification(gi.radarID, AlertVizMessage);
}
public void notifyWatchdog() {
synchronized (semifore) {
semifore.notify();
}
}
private boolean loadConfigFile(final String filename) {
try {
InputStream inFile = configuration.getDropInData(filename);
InputStreamReader reader = new InputStreamReader(inFile);
BufferedReader in = new BufferedReader(reader);
String line;
while ((line = in.readLine()) != null) {
if (line.contains("#"))
continue;
if (line.contains("["))
break;
}
while ((line = in.readLine()) != null) {
if (line.contains("#"))
continue;
if (line.contains("["))
break;
String s[] = line.split("\\|");
mapDuration.put(Integer.parseInt(s[0].trim()),
Integer.parseInt(s[1].trim()));
}
while ((line = in.readLine()) != null) {
if (line.contains("#"))
continue;
if (line.contains("["))
break;
mapMnemonicProducts.add(line.trim());
}
} catch (IOException e) {
Log.errorf(": watchdog: Error while loading config file %s",
filename, e);
}
return true;
}
}

View file

@ -0,0 +1,139 @@
/**
* This software was developed and / or modified by Raytheon Company,
* pursuant to Contract DG133W-05-CQ-1067 with the US Government.
*
* U.S. EXPORT CONTROLLED TECHNICAL DATA
* This software product contains export-restricted data whose
* export/transfer/disclosure is restricted by U.S. law. Dissemination
* to non-U.S. persons whether in the United States or abroad requires
* an export license or other authorization.
*
* Contractor Name: Raytheon Company
* Contractor Address: 6825 Pine Street, Suite 340
* Mail Stop B8
* Omaha, NE 68106
* 402.291.0100
*
* See the AWIPS II Master Rights File ("Master Rights File.pdf") for
* further licensing information.
**/
package com.raytheon.rcm.server;
import java.util.HashMap;
import com.raytheon.rcm.config.Configuration;
import com.raytheon.rcm.event.RadarEvent;
import com.raytheon.rcm.event.RadarEventAdapter;
import com.raytheon.rcm.message.GSM;
import com.raytheon.rcm.message.GraphicProduct;
import com.raytheon.rcm.message.Message;
import com.raytheon.rcm.message.GraphicProduct.PDB;
import com.raytheon.rcm.products.ProductInfo;
import com.raytheon.rcm.products.RadarProduct;
import com.raytheon.rcm.server.RadarWatchdog;
/**
*
* This class listens to messages sent to the RadarServer, that the watchdog has
* an interest in.
*
* <pre>
*
* SOFTWARE HISTORY
*
* Date Ticket# Engineer Description
* ------------- ---------- ----------- --------------------------
* May 12, 2014 DR 16319 dhuffman Initial creation.
*
* </pre>
*
* @author dhuffman
* @version 1.0
*/
public class RadarWatchdogListener extends RadarEventAdapter {
protected static RadarWatchdog radarWatchdog;
private static HashMap<String, String> mnemonicMap = new HashMap<String, String>();
{
mnemonicMap.put("HZ", "Z");
mnemonicMap.put("HV", "V");
mnemonicMap.put("HSW", "SW");
}
public RadarWatchdogListener(Configuration configuration) {
radarWatchdog = new RadarWatchdog(configuration);
radarWatchdog.start();
}
@Override
public void handleRadarEvent(RadarEvent event) {
if (event.getType() == RadarEvent.MESSAGE_RECEIVED) {
byte[] msg = event.getMessageData();
int messageCode = Message.messageCodeOf(msg);
if (messageCode == Message.GSM) {
GSM gsm = null;
try {
gsm = GSM.decode(msg);
} catch (Exception e) {
// This message error will be reported by EventLogger.
return;
}
if (gsm != null) {
RadarWatchdog.GsmItem gi = new RadarWatchdog.GsmItem();
gi.radarID = event.getRadarID();
gi.vcp = gsm.vcp;
gi.time = gsm.time.getTimeInMillis();
RadarWatchdog.GsmItem oldgi = radarWatchdog
.getGSMItem(gi.radarID);
if (oldgi == null
|| (oldgi != null && oldgi.time <= gi.time)) {
radarWatchdog.putGSMItem(gi);
}
}
} else if (16 <= messageCode) {
int mcode = 0;
PDB pdb = null;
RadarWatchdog.RadarItem ri = new RadarWatchdog.RadarItem();
mcode = Message.messageCodeOf(msg);
ri.messageTime = (Message.decodeHeader(msg).time)
.getTimeInMillis();
RadarProduct rp = ProductInfo.getInstance().getPoductForCode(
mcode);
if (rp == null)
return;
ri.mnemonic = rp.mnemonic;
String newMnemonic = mnemonicMap.get(ri.mnemonic);
if (newMnemonic != null)
ri.mnemonic = newMnemonic;
try {
pdb = GraphicProduct.pdbOfMessage(msg);
} catch (Exception e) {
// This message error will be reported by EventLogger.
return;
}
if (pdb != null) {
ri.radarID = event.getRadarID();
ri.time = System.currentTimeMillis();
RadarWatchdog.RadarItem oldri = radarWatchdog.getRadarItem(
ri.mnemonic, ri.radarID);
if (oldri == null
|| (oldri != null && oldri.messageTime <= ri.messageTime)) {
radarWatchdog.putRadarItem(ri);
radarWatchdog.notifyWatchdog();
}
}
}
}
}
}

View file

@ -170,6 +170,7 @@ import com.vividsolutions.jts.geom.Envelope;
* paint using the time in paintProps and
* remove dead code in paintInternal
* Apr 03, 2014 2737 randerso Uncommented out listers for iscParm inventory changed
* May 20, 2014 15814 zhao Make image display for model Parm not affected by ISC mode
*
* </pre>
*
@ -519,6 +520,8 @@ public class GFEResource extends
.getValidPeriod());
boolean iscParm = this.parm.isIscParm();
boolean modelParm = isModelParm();
if ((gd.length == 0) && !dataManager.getParmManager().iscMode()) {
return;
}
@ -605,7 +608,7 @@ public class GFEResource extends
VectorGridSlice vectorSlice = (VectorGridSlice) gs;
Grid2DBit mask = parm.getDisplayAttributes().getDisplayMask();
if (dataManager.getParmManager().iscMode() || iscParm) {
if ( (dataManager.getParmManager().iscMode() || iscParm) && !modelParm ) {
vectorSlice = new VectorGridSlice();
mask = dataManager.getIscDataAccess().getCompositeGrid(
new GridID(this.parm, this.curTime.getRefTime()),
@ -692,7 +695,7 @@ public class GFEResource extends
ScalarGridSlice scalarSlice = (ScalarGridSlice) gs;
Grid2DBit mask = parm.getDisplayAttributes().getDisplayMask();
if (dataManager.getParmManager().iscMode() || iscParm) {
if ( (dataManager.getParmManager().iscMode() || iscParm) && !modelParm ) {
scalarSlice = new ScalarGridSlice();
mask = dataManager.getIscDataAccess().getCompositeGrid(
new GridID(this.parm, this.curTime.getRefTime()),
@ -736,7 +739,7 @@ public class GFEResource extends
Grid2DBit mask = parm.getDisplayAttributes().getDisplayMask();
if (dataManager.getParmManager().iscMode() || iscParm) {
if ( (dataManager.getParmManager().iscMode() || iscParm) && !modelParm ) {
slice = new DiscreteGridSlice();
GridID gid = new GridID(parm, this.curTime.getRefTime());
mask = dataManager.getIscDataAccess().getCompositeGrid(gid,
@ -813,7 +816,7 @@ public class GFEResource extends
Grid2DBit mask = parm.getDisplayAttributes().getDisplayMask();
if (dataManager.getParmManager().iscMode() || iscParm) {
if ( (dataManager.getParmManager().iscMode() || iscParm) && !modelParm ) {
slice = new WeatherGridSlice();
GridID gid = new GridID(parm, this.curTime.getRefTime());
mask = dataManager.getIscDataAccess().getCompositeGrid(gid,
@ -1592,4 +1595,14 @@ public class GFEResource extends
}
}
private boolean isModelParm() {
String parmId = parm.getParmID().toString();
if ( parmId.contains("__Fcst_") ||
parmId.contains("__ISC_") ||
parmId.contains("__Official_") ||
parmId.contains("__Restore_")) {
return false;
}
return true;
}
}

View file

@ -464,6 +464,16 @@
key="VGP" indentText="true" />
<contribute xsi:type="menuItem" menuText="Conv Precip"
key="CP" indentText="true" />
<contribute xsi:type="menuItem" menuText="Max Updraft VV"
key="MXUVV" indentText="true" />
<contribute xsi:type="menuItem" menuText="Max Downdraft VV"
key="MXDVV" indentText="true" />
<contribute xsi:type="menuItem" menuText="Max Updraft Helicity"
key="MAXUPHL" indentText="true" />
<contribute xsi:type="menuItem" menuText="Most Unstable BL Parcel Level"
key="PLPL" indentText="true" />
<contribute xsi:type="menuItem" menuText="Max Lightning Threat"
key="LTNG" indentText="true" />
</contribute>
<contribute xsi:type="toolbarSubMenu" menuText="Marine">
@ -513,6 +523,12 @@
key="BARO" indentText="false" />
<contribute xsi:type="menuItem" menuText="Barometric Velocity"
key="SPBARO" indentText="false" />
<contribute xsi:type="menuItem" menuText="Tidal Height"
key="ELEV" indentText="false" />
<contribute xsi:type="menuItem" menuText="ET Storm Surge"
key="ETSRG" indentText="false" />
<contribute xsi:type="menuItem" menuText="Combined ET Surge and Tide Hgt"
key="ETCWL" indentText="false" />
</contribute>
<contribute xsi:type="toolbarSubMenu" menuText="GFSLAMP Station">
@ -1352,6 +1368,14 @@
key="REFD" indentText="true" />
<contribute xsi:type="menuItem" menuText="Derived Composite"
key="REFC" indentText="true" />
<contribute xsi:type="menuItem" menuText="CAPPI"
key="REFD" indentText="true" />
<contribute xsi:type="menuItem" menuText="MAX 1hr CAPPI"
key="MXREF" indentText="true" />
<contribute xsi:type="menuItem" menuText="Derived VIL"
key="VILIQ" indentText="true" />
<contribute xsi:type="menuItem" menuText="Derived Echo Top"
key="RETOP" indentText="true" />
</contribute>
<!--

View file

@ -114,6 +114,7 @@
-->
<contribute xsi:type="toolBarItem" toolItemName = "Hgt">
<contribute xsi:type="menuItem" textLookup="LevelMapping" key="54ft" indentText="false"/>
<contribute xsi:type="menuItem" textLookup="LevelMapping" key="80m" indentText="false"/>
<contribute xsi:type="menuItem" menuText="1500 m" key="1.5km" indentText="false"/>
<contribute xsi:type="menuItem" textLookup="LevelMapping" key="0.5kmAgl" indentText="false"/>
<contribute xsi:type="menuItem" textLookup="LevelMapping" key="1kmAgl" indentText="false"/>
@ -344,6 +345,7 @@
<contribute xsi:type="menuItem" textLookup="LevelMapping" key="LowLyr" indentText="false"/>
<contribute xsi:type="menuItem" textLookup="LevelMapping" key="MidLyr" indentText="false"/>
<contribute xsi:type="menuItem" textLookup="LevelMapping" key="HiLyr" indentText="false"/>
<contribute xsi:type="menuItem" textLookup="LevelMapping" key="SIG0.8-0.5" indentText="false"/>
<contribute xsi:type="titleImgItem" titleText="Pressure" displayImage="true" displayDashes="true"/>
<contribute xsi:type="menuItem" textLookup="LevelMapping" key="300MB-200MB" indentText="false"/>
<contribute xsi:type="menuItem" textLookup="LevelMapping" key="400MB-200MB" indentText="false"/>
@ -356,6 +358,7 @@
<contribute xsi:type="menuItem" textLookup="LevelMapping" key="850MB-700MB" indentText="false"/>
<contribute xsi:type="menuItem" textLookup="LevelMapping" key="925MB-700MB" indentText="false"/>
<contribute xsi:type="menuItem" textLookup="LevelMapping" key="925MB-850MB" indentText="false"/>
<contribute xsi:type="menuItem" textLookup="LevelMapping" key="1000MB-400MB" indentText="false"/>
<contribute xsi:type="menuItem" textLookup="LevelMapping" key="1000MB-500MB" indentText="false"/>
<contribute xsi:type="menuItem" textLookup="LevelMapping" key="1000MB-700MB" indentText="false"/>
<contribute xsi:type="menuItem" textLookup="LevelMapping" key="1000MB-850MB" indentText="false"/>
@ -367,6 +370,7 @@
<contribute xsi:type="menuItem" textLookup="LevelMapping" key="0-5kmAgl" indentText="false"/>
<contribute xsi:type="menuItem" textLookup="LevelMapping" key="0-6kmAgl" indentText="false"/>
<contribute xsi:type="menuItem" textLookup="LevelMapping" key="0-10kmAgl" indentText="false"/>
<contribute xsi:type="menuItem" textLookup="LevelMapping" key="2-5kmAgl" indentText="false"/>
<contribute xsi:type="menuItem" textLookup="LevelMapping" key="3-6kmAgl" indentText="false"/>
<contribute xsi:type="toolbarSubMenu" menuText="thin layers">

View file

@ -1146,6 +1146,7 @@
</Level>
<Level displayName="Hi Layer" key="HiLyr" group="S">
<DatabaseLevel levelName="HCY" levelOneValue="0" />
<DatabaseLevel levelName="HCL" levelOneValue="0" />
</Level>
<Level displayName="Low Cloud Base" key="LowCloudBase" group="S">
<DatabaseLevel levelName="LCBL" levelOneValue="0" />
@ -1349,4 +1350,20 @@
<Level displayName="Sea Surface" key="0BSS">
<DatabaseLevel levelName="BSS" levelOneValue="0" />
</Level>
<Level displayName="80 m" key="80m" group="S">
<DatabaseLevel levelName="FHAG" levelOneValue="80.0"
unit="m" />
</Level>
<Level displayName="SIG0.8-0.5" key="SIG0.8-0.5" group="S">
<DatabaseLevel levelName="SIG" levelOneValue="0.5"
levelTwoValue="0.8" unit="m/s" />
</Level>
<Level displayName="1000MB-400MB" key="1000MB-400MB" group="C">
<DatabaseLevel levelName="MB" levelOneValue="1000"
levelTwoValue="400" unit="hPa" />
</Level>
<Level displayName="2-5km AGL" key="2-5kmAgl" group="C">
<DatabaseLevel levelName="FHAG" levelOneValue="2000"
levelTwoValue="5000.0" unit="m" />
</Level>
</LevelMappings>

View file

@ -33,6 +33,7 @@
<vbSource key="HiResW-NMM-PR" category="Volume" />
<vbSource key="HiResW-NMM-SJU" category="Volume" />
<vbSource key="HiResW-NMM-West" category="Volume" />
<vbSource key="HRRR" category="Volume" />
<vbSource key="MRF204" category="Volume" />
<vbSource key="LAMPQPF" category="Volume" />
<vbSource key="LAPS" category="Volume" />
@ -67,6 +68,8 @@
<vbSource key="DHM" category="SfcGrid" views="PLANVIEW TIMESERIES" />
<vbSource key="ENPWAVE253" category="SfcGrid" views="PLANVIEW TIMESERIES" />
<vbSource key="EPwave10" category="SfcGrid" views="PLANVIEW TIMESERIES" />
<vbSource key="estofsUS" category="SfcGrid" views="PLANVIEW TIMESERIES" />
<vbSource key="estofsPR" category="SfcGrid" views="PLANVIEW TIMESERIES" />
<vbSource key="GFE" category="SfcGrid" views="PLANVIEW TIMESERIES" />
<vbSource key="GFS199" category="SfcGrid" views="PLANVIEW TIMESERIES" />
<vbSource key="GFSGuide" category="SfcGrid" views="PLANVIEW TIMESERIES" />

View file

@ -1,113 +0,0 @@
#! /bin/ksh
## create new directories for dual-pol products and logs in redmine ticket3454 in A2 14.3.1
if [[ ! -d /awips2/edex/data/share/hydroapps/precip_proc/local/data/daa_decoded ]]
then
mkdir /awips2/edex/data/share/hydroapps/precip_proc/local/data/daa_decoded
chmod 777 /awips2/edex/data/share/hydroapps/precip_proc/local/data/daa_decoded
fi
if [[ ! -d /awips2/edex/data/share/hydroapps/precip_proc/local/data/daa_archive ]]
then
mkdir /awips2/edex/data/share/hydroapps/precip_proc/local/data/daa_archive
chmod 777 /awips2/edex/data/share/hydroapps/precip_proc/local/data/daa_archive
fi
if [[ ! -d /awips2/edex/data/share/hydroapps/precip_proc/local/data/mpe/rdmosaic ]]
then
mkdir /awips2/edex/data/share/hydroapps/precip_proc/local/data/mpe/rdmosaic
chmod 777 /awips2/edex/data/share/hydroapps/precip_proc/local/data/mpe/rdmosaic
fi
if [[ ! -d /awips2/edex/data/share/hydroapps/precip_proc/local/data/mpe/bdmosaic ]]
then
mkdir /awips2/edex/data/share/hydroapps/precip_proc/local/data/mpe/bdmosaic
chmod 777 /awips2/edex/data/share/hydroapps/precip_proc/local/data/mpe/bdmosaic
fi
if [[ ! -d /awips2/edex/data/share/hydroapps/precip_proc/local/data/mpe/ldmosaic ]]
then
mkdir /awips2/edex/data/share/hydroapps/precip_proc/local/data/mpe/ldmosaic
chmod 777 /awips2/edex/data/share/hydroapps/precip_proc/local/data/mpe/ldmosaic
fi
if [[ ! -d /awips2/edex/data/share/hydroapps/precip_proc/local/data/mpe/mdmosaic ]]
then
mkdir /awips2/edex/data/share/hydroapps/precip_proc/local/data/mpe/mdmosaic
chmod 777 /awips2/edex/data/share/hydroapps/precip_proc/local/data/mpe/mdmosaic
fi
if [[ ! -d /awips2/edex/data/share/hydroapps/precip_proc/local/data/mpe/mldmosaic ]]
then
mkdir /awips2/edex/data/share/hydroapps/precip_proc/local/data/mpe/mldmosaic
chmod 777 /awips2/edex/data/share/hydroapps/precip_proc/local/data/mpe/mldmosaic
fi
if [[ ! -d /awips2/edex/data/share/hydroapps/precip_proc/local/data/mpe/avgrdmosaic ]]
then
mkdir /awips2/edex/data/share/hydroapps/precip_proc/local/data/mpe/avgrdmosaic
chmod 777 /awips2/edex/data/share/hydroapps/precip_proc/local/data/mpe/avgrdmosaic
fi
if [[ ! -d /awips2/edex/data/share/hydroapps/precip_proc/local/data/mpe/maxrdmosaic ]]
then
mkdir /awips2/edex/data/share/hydroapps/precip_proc/local/data/mpe/maxrdmosaic
chmod 777 /awips2/edex/data/share/hydroapps/precip_proc/local/data/mpe/maxrdmosaic
fi
if [[ ! -d /awips2/edex/data/share/hydroapps/precip_proc/local/data/mpe/locspandp ]]
then
mkdir /awips2/edex/data/share/hydroapps/precip_proc/local/data/mpe/locspandp
chmod 777 /awips2/edex/data/share/hydroapps/precip_proc/local/data/mpe/locspandp
fi
if [[ ! -d /awips2/edex/data/share/hydroapps/precip_proc/local/data/mpe/locbiasdp ]]
then
mkdir /awips2/edex/data/share/hydroapps/precip_proc/local/data/mpe/locbiasdp
chmod 777 /awips2/edex/data/share/hydroapps/precip_proc/local/data/mpe/locbiasdp
fi
if [[ ! -d /awips2/edex/data/share/hydroapps/precip_proc/local/data/mpe/state_var_dp ]]
then
mkdir /awips2/edex/data/share/hydroapps/precip_proc/local/data/mpe/state_var_dp
chmod 777 /awips2/edex/data/share/hydroapps/precip_proc/local/data/mpe/state_var_dp
fi
if [[ ! -d /awips2/edex/data/share/hydroapps/precip_proc/local/data/mpe/srdmosaic ]]
then
mkdir /awips2/edex/data/share/hydroapps/precip_proc/local/data/mpe/srdmosaic
chmod 777 /awips2/edex/data/share/hydroapps/precip_proc/local/data/mpe/srdmosaic
fi
if [[ ! -d /awips2/edex/data/share/hydroapps/precip_proc/local/data/mpe/srdgmosaic ]]
then
mkdir /awips2/edex/data/share/hydroapps/precip_proc/local/data/mpe/srdgmosaic
chmod 777 /awips2/edex/data/share/hydroapps/precip_proc/local/data/mpe/srdgmosaic
fi
# create directory defined by the token dsa_grid_dir
# this directory contains the decoded DSA products
if [[ ! -d /awips2/edex/data/share/hydroapps/precip_proc/local/data/dsa_decoded ]]
then
mkdir /awips2/edex/data/share/hydroapps/precip_proc/local/data/dsa_decoded
chmod 777 /awips2/edex/data/share/hydroapps/precip_proc/local/data/dsa_decoded
fi
# create directory defined by the token dpr_grid_dir
# this directory contains the decoded DPR products.
if [[ ! -d /awips2/edex/data/share/hydroapps/precip_proc/local/data/dpr_decoded ]]
then
mkdir /awips2/edex/data/share/hydroapps/precip_proc/local/data/dpr_decoded
chmod 777 /awips2/edex/data/share/hydroapps/precip_proc/local/data/dpr_decoded
fi
# create directory for Post Analysis
# this directory contains 1 hr QPE files generated by the Save/separate option
if [[ ! -d /awips2/edex/data/share/hydroapps/precip_proc/local/data/mpe/post_analysis ]]
then
mkdir /awips2/edex/data/share/hydroapps/precip_proc/local/data/mpe/post_analysis
chmod 777 /awips2/edex/data/share/hydroapps/precip_proc/local/data/mpe/post_analysis
fi

View file

@ -1,9 +1,12 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<aliasList caseSensitive="true" namespace="gfeParamInfo">
<alias base="estofsUS">ESTOFS</alias>
<alias base="estofsPR">ESTOFS</alias>
<alias base="GLERL">glerl</alias>
<alias base="MPE-Local">localMPE</alias>
<alias base="MPE-Mosaic">mosaicMPE</alias>
<alias base="HPE">localHPE</alias>
<alias base="HRRR">HRRR</alias>
<alias base="BHPE">localBHPE</alias>
<alias base="RFCqpf">qpf218</alias>
<alias base="nogaps">nogaps</alias>

View file

@ -23,8 +23,10 @@
<alias base="DIRSW">dirsw</alias>
<alias base="DpD">dpd</alias>
<alias base="DpT">dpt</alias>
<alias base="ELEV">ELEV</alias>
<alias base="EMSP">emsp</alias>
<alias base="EPT">ept</alias>
<alias base="ETSRG">ETSRG</alias>
<alias base="GeH">geh</alias>
<alias base="GH">gh</alias>
<alias base="GVV">gvv</alias>
@ -268,6 +270,7 @@
<alias base="ThP6hr">thp6hr</alias>
<alias base="Tmean">tmean</alias>
<alias base="TOTSN">totsn</alias>
<alias base="TP1hr">tp1hr</alias>
<alias base="TP120hr">tp120hr</alias>
<alias base="tp12c1">tp12c1</alias>
<alias base="tp12c2">tp12c2</alias>

View file

@ -312,6 +312,9 @@ Hazards = ("Hazards", DISCRETE, "wwa", "Hazards", YES, HazardKeys, 4)
# use in calculations) Either form may be used.
ExtraWEPrecision = []
# Parms for ESTOFS
AstroTide = ("AstroTide", SCALAR, "ft", "Astro Tide", 20.0, -8.0, 1, NO)
StormSurge = ("StormSurge", SCALAR, "ft", "Storm Surge", 30.0, -5.0, 1, NO)
#---------------------------------------------------------------------------
#
@ -966,6 +969,7 @@ Official = ('Official', GRID, '', YES, YES, 1, 24)
ISC = ('ISC', GRID, '', YES, NO, 1, 12)
LAPS = ('LAPS', GRID, '', YES, NO, 1, 30)
SAT = ('SAT', GRID, '', YES, NO, 1, 12)
ESTOFS = ('ESTOFS', GRID, '', NO, NO, 2, 0)
HPCGuide = ('HPCGuide', GRID, '', NO, NO, 2, 0)
NAM12 = ('NAM12', GRID, '', NO, NO, 2, 0)
NAM40 = ('NAM40', GRID, '', NO, NO, 2, 0)
@ -988,6 +992,7 @@ GlobalWave = ('GlobalWave', GRID, '', NO, NO, 2, 0)
GLWM = ('GLWM', GRID, '', NO, NO, 2, 0)##########DCS3499
HIRESWarw = ('HIRESWarw', GRID, '', NO, NO, 2, 0)##########DCS3501
HIRESWnmm = ('HIRESWnmm', GRID, '', NO, NO, 2, 0)
HRRR = ("HRRR", GRID, '', NO, NO, 3, 0)
#### SPC = ('SPC', GRID, '', NO, NO, 2, 0)###DR20634
WCwave10 = ('WCwave10', GRID, '', NO, NO, 2, 0)
WCwave4 = ('WCwave4', GRID, '', NO, NO, 2, 0)
@ -1116,6 +1121,7 @@ elif SID == "SJU":
('TPCWindProb', 'TPCProb'),
('ECMWF-HiRes','ECMWFHiRes'),
'RTOFS-Atlantic',
('estofsPR', 'ESTOFS'),
'NAHwave15',
'NAHwave10',
'NAHwave4',
@ -1139,6 +1145,7 @@ elif SID in CONUS_EAST_SITES:
D2DMODELS = [('GFS212', 'GFS40'),
('AVN211', 'GFS80'),
('ETA', 'NAM80'),
('HRRR', 'HRRR'),
('NGM', 'NGM80'),
('MRF', 'gfsLR'),
('RUC130', 'RUC13'),
@ -1181,6 +1188,7 @@ elif SID in CONUS_EAST_SITES:
('SPCGuide', 'SPC'),
('ECMWF-HiRes','ECMWFHiRes'),
('ENPWAVE253', 'ENPwave'),
('estofsUS', 'ESTOFS'),
'NAHwave15',
'NAHwave10',
'NAHwave4',
@ -1439,6 +1447,7 @@ elif SID == "SJU":
# "EPwave10" : ["EPwEave10"],
"RTMA": ['RTMA'],
"NamDNG5" : ["NamDNG5"],
"ESTOFS" : ["ESTOFS"],
}
# Guam OCONUS
@ -1471,6 +1480,7 @@ else:
"RTMA": ['RTMA'],
"NamDNG5" : ["NamDNG5"],
"SREF" : ["SREF"],
"HRRR" : ['HRRR'],
#########DCS3501
"GLWM" : ["GLWM"],
"HIRESWarw" : ["HIRESWarw"],
@ -1483,6 +1493,7 @@ else:
# "WNAwave10" : ["WNAwave10"],
# "WNAwave4" : ["WNAwave4"],
# "ENPwave": ["ENPwave"],
"ESTOFS" : ["ESTOFS"],
}
#initialization skip certain model runs
@ -1506,6 +1517,7 @@ D2DAccumulativeElements= {
"GFS80": ["tp", "cp"],
"GFS75": ["tp", "cp"],
"GFS190": ["tp", "cp"],
"HRRR": ["tp1hr", "crain", "csnow", "cfrzr", "cicep"],
"NAM95": ["tp", "cp"],
"NAM80": ["tp", "cp"],
"NAM40": ["tp", "cp"],
@ -1623,7 +1635,7 @@ localRTMAParms = []
localNamDNG5Parms = []
localSREFParms = []
localTPCProbParms = []
localISCExtraParms = []
localHRRRParms = localESTOFSParms = localISCExtraParms = []
myOfficeType = SITES[GFESUITE_SITEID][5]
@ -1636,6 +1648,7 @@ if not BASELINE and siteImport('localConfig'):
else:
myOfficeType = SITES[GFESUITE_SITEID] #probably from localConfig
localESTOFSParms = getattr(localConfig, 'parmsESTOFS', localESTOFSParms)
localParms = getattr(localConfig, 'parms', localParms)
localNAM12Parms = getattr(localConfig, 'parmsNAM12', localNAM12Parms)
localOPCWavEParms = getattr(localConfig, 'parmsOPCWavE', localOPCWavEParms)
@ -1660,6 +1673,7 @@ if not BASELINE and siteImport('localConfig'):
localGLWMParms = getattr(localConfig, 'parmsGLWM', localGLWMParms) #########DCS3499
localHIRESWarwParms = getattr(localConfig, 'parmsHIRESWarw', localHIRESWarwParms) ########DCS3501
localHIRESWnmmParms = getattr(localConfig, 'parmsHIRESWnmm', localHIRESWnmmParms)
localHRRRParms = getattr(localConfig, 'parmsHRRR', localHRRRParms)
#DR20634 localSPCParms = getattr(localConfig, 'parmsSPC', localSPCParms)
localWNAWAVEParms = getattr(localConfig, 'parmsWNAWAVE', localWNAWAVEParms)
localAKWAVEParms = getattr(localConfig, 'parmsAKWAVE', localAKWAVEParms)
@ -1721,6 +1735,10 @@ STD1_MODEL = [([Temp, Td, RH, Wind, Wind20ft, Sky, FzLevel, SnowLevel], TC1),
([MaxT], MaxTTC), ([MinT], MinTTC),
([Wetflag], FireWx1300TC)]
ESTOFSPARMS = [([StormSurge, AstroTide], TC1)]
HRRRPARMS = [([Temp, Td, RH, Wind, WindGust, Sky, QPF], TC1)]
# 3 hourly
STD3_MODEL = [([Temp, Td, RH, Wind, Wind20ft, Sky, FzLevel, SnowLevel], TC3),
([Haines, MixHgt, FreeWind, TransWind], TC3),
@ -1731,6 +1749,7 @@ STD3_MODEL = [([Temp, Td, RH, Wind, Wind20ft, Sky, FzLevel, SnowLevel], TC3),
([MaxT], MaxTTC), ([MinT], MinTTC),
([Wetflag], FireWx1300TC)]
######DCS3501
# 3 hourly-HIRESW
STD3_MODEL_HIRESW = [([Temp, Td, RH, Wind, FzLevel], TC3),
@ -1897,10 +1916,12 @@ DATABASES = [(Official, OFFICIALDBS + localParms),
(AKwave10, WAVEPARMS + localAKwave10Parms),
(AKwave4, WAVEPARMS + localAKwave4Parms),
(EPwave10, WAVEPARMS + localEPwave10Parms),
(ESTOFS, ESTOFSPARMS + localESTOFSParms),
(GlobalWave, WAVEPARMS + localGlobalWaveParms),
(GLWM, GLWMPARMS + localGLWMParms), #####DCS3499
(HIRESWarw, STD3_MODEL + localHIRESWarwParms), #####DCS3501
(HIRESWnmm, STD3_MODEL + localHIRESWnmmParms),
(HRRR, HRRRPARMS + localHRRRParms),
#DR20634 (SPC, SPCPARMS + localSPCParms),
(WCwave10, WAVEPARMS + localWCwave10Parms),
(WCwave4, WAVEPARMS + localWCwave4Parms),

View file

@ -0,0 +1,236 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<gridParamInfo xmlns:ns2="group">
<valtimeMINUSreftime>
<fcst>0</fcst>
<fcst>3600</fcst>
<fcst>7200</fcst>
<fcst>10800</fcst>
<fcst>14400</fcst>
<fcst>18000</fcst>
<fcst>21600</fcst>
<fcst>25200</fcst>
<fcst>28800</fcst>
<fcst>32400</fcst>
<fcst>36000</fcst>
<fcst>39600</fcst>
<fcst>43200</fcst>
<fcst>46800</fcst>
<fcst>50400</fcst>
<fcst>54000</fcst>
<fcst>57600</fcst>
<fcst>61200</fcst>
<fcst>64800</fcst>
<fcst>68400</fcst>
<fcst>72000</fcst>
<fcst>75600</fcst>
<fcst>79200</fcst>
<fcst>82800</fcst>
<fcst>86400</fcst>
<fcst>90000</fcst>
<fcst>93600</fcst>
<fcst>97200</fcst>
<fcst>100800</fcst>
<fcst>104400</fcst>
<fcst>108000</fcst>
<fcst>111600</fcst>
<fcst>115200</fcst>
<fcst>118800</fcst>
<fcst>122400</fcst>
<fcst>126000</fcst>
<fcst>129600</fcst>
<fcst>133200</fcst>
<fcst>136800</fcst>
<fcst>140400</fcst>
<fcst>144000</fcst>
<fcst>147600</fcst>
<fcst>151200</fcst>
<fcst>154800</fcst>
<fcst>158400</fcst>
<fcst>162000</fcst>
<fcst>165600</fcst>
<fcst>169200</fcst>
<fcst>172800</fcst>
<fcst>176400</fcst>
<fcst>180000</fcst>
<fcst>183600</fcst>
<fcst>187200</fcst>
<fcst>190800</fcst>
<fcst>194400</fcst>
<fcst>198000</fcst>
<fcst>201600</fcst>
<fcst>205200</fcst>
<fcst>208800</fcst>
<fcst>212400</fcst>
<fcst>216000</fcst>
<fcst>219600</fcst>
<fcst>223200</fcst>
<fcst>226800</fcst>
<fcst>230400</fcst>
<fcst>234000</fcst>
<fcst>237600</fcst>
<fcst>241200</fcst>
<fcst>244800</fcst>
<fcst>248400</fcst>
<fcst>252000</fcst>
<fcst>255600</fcst>
<fcst>259200</fcst>
<fcst>262800</fcst>
<fcst>266400</fcst>
<fcst>270000</fcst>
<fcst>273600</fcst>
<fcst>277200</fcst>
<fcst>280800</fcst>
<fcst>284400</fcst>
<fcst>288000</fcst>
<fcst>291600</fcst>
<fcst>295200</fcst>
<fcst>298800</fcst>
<fcst>302400</fcst>
<fcst>306000</fcst>
<fcst>309600</fcst>
<fcst>313200</fcst>
<fcst>316800</fcst>
<fcst>320400</fcst>
<fcst>324000</fcst>
<fcst>327600</fcst>
<fcst>331200</fcst>
<fcst>334800</fcst>
<fcst>338400</fcst>
<fcst>342000</fcst>
<fcst>345600</fcst>
<fcst>349200</fcst>
<fcst>352800</fcst>
<fcst>356400</fcst>
<fcst>360000</fcst>
<fcst>363600</fcst>
<fcst>367200</fcst>
<fcst>370800</fcst>
<fcst>374400</fcst>
<fcst>378000</fcst>
<fcst>381600</fcst>
<fcst>385200</fcst>
<fcst>388800</fcst>
<fcst>392400</fcst>
<fcst>396000</fcst>
<fcst>399600</fcst>
<fcst>403200</fcst>
<fcst>406800</fcst>
<fcst>410400</fcst>
<fcst>414000</fcst>
<fcst>417600</fcst>
<fcst>421200</fcst>
<fcst>424800</fcst>
<fcst>432000</fcst>
<fcst>435600</fcst>
<fcst>439200</fcst>
<fcst>442800</fcst>
<fcst>446400</fcst>
<fcst>450000</fcst>
<fcst>453600</fcst>
<fcst>457200</fcst>
<fcst>460800</fcst>
<fcst>464400</fcst>
<fcst>468000</fcst>
<fcst>471600</fcst>
<fcst>475200</fcst>
<fcst>478800</fcst>
<fcst>482400</fcst>
<fcst>486000</fcst>
<fcst>489600</fcst>
<fcst>493200</fcst>
<fcst>496800</fcst>
<fcst>500400</fcst>
<fcst>504000</fcst>
<fcst>507600</fcst>
<fcst>511200</fcst>
<fcst>514800</fcst>
<fcst>518400</fcst>
<fcst>522000</fcst>
<fcst>525600</fcst>
<fcst>529200</fcst>
<fcst>532800</fcst>
<fcst>536400</fcst>
<fcst>540000</fcst>
<fcst>543600</fcst>
<fcst>547200</fcst>
<fcst>550800</fcst>
<fcst>554400</fcst>
<fcst>558000</fcst>
<fcst>561600</fcst>
<fcst>565200</fcst>
<fcst>568800</fcst>
<fcst>572400</fcst>
<fcst>576000</fcst>
<fcst>579600</fcst>
<fcst>583200</fcst>
<fcst>586800</fcst>
<fcst>590400</fcst>
<fcst>594000</fcst>
<fcst>597600</fcst>
<fcst>601200</fcst>
<fcst>604800</fcst>
<fcst>608400</fcst>
<fcst>612000</fcst>
<fcst>615600</fcst>
<fcst>619200</fcst>
<fcst>622800</fcst>
<fcst>626400</fcst>
<fcst>630000</fcst>
<fcst>633600</fcst>
<fcst>637200</fcst>
<fcst>640800</fcst>
<fcst>644400</fcst>
<fcst>648000</fcst>
</valtimeMINUSreftime>
<gridParameterInfo xsi:type="parameterInfo" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<short_name>ETSRG</short_name>
<long_name>Extra Tropical Storm Surge</long_name>
<units>m</units>
<udunits>meters</udunits>
<uiname>ETSRG</uiname>
<valid_range>-3.0</valid_range>
<valid_range>6.0</valid_range>
<fillValue>-99999.0</fillValue>
<n3D>0</n3D>
<levelsDesc>SFC </levelsDesc>
<levels>
<level>SFC</level>
</levels>
</gridParameterInfo>
<gridParameterInfo xsi:type="parameterInfo" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<short_name>ELEV</short_name>
<long_name>tide height</long_name>
<units>m</units>
<udunits>meters</udunits>
<uiname>ELEV</uiname>
<valid_range>-3.0</valid_range>
<valid_range>5.0</valid_range>
<fillValue>-99999.0</fillValue>
<n3D>0</n3D>
<levelsDesc>SFC </levelsDesc>
<levels>
<level>SFC</level>
</levels>
</gridParameterInfo>
<gridParameterInfo xsi:type="parameterInfo" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<short_name>staticSpacing</short_name>
<long_name>Grid spacing </long_name>
<units>meters </units>
<fillValue>-99999.0</fillValue>
<n3D>0</n3D>
</gridParameterInfo>
<gridParameterInfo xsi:type="parameterInfo" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<short_name>staticTopo</short_name>
<long_name>Topography </long_name>
<units>meters </units>
<fillValue>-99999.0</fillValue>
<n3D>0</n3D>
</gridParameterInfo>
<gridParameterInfo xsi:type="parameterInfo" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<short_name>staticCoriolis</short_name>
<long_name>Coriolis parameter </long_name>
<units>/second </units>
<fillValue>-99999.0</fillValue>
<n3D>0</n3D>
</gridParameterInfo>
</gridParamInfo>

View file

@ -0,0 +1,525 @@
<?xml version='1.0' encoding='UTF-8'?>
<gridParamInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<valtimeMINUSreftime>
<fcst>0</fcst>
<fcst>3600</fcst>
<fcst>7200</fcst>
<fcst>10800</fcst>
<fcst>14400</fcst>
<fcst>18000</fcst>
<fcst>21600</fcst>
<fcst>25200</fcst>
<fcst>28800</fcst>
<fcst>32400</fcst>
<fcst>36000</fcst>
<fcst>39600</fcst>
<fcst>43200</fcst>
<fcst>46800</fcst>
<fcst>50400</fcst>
<fcst>54000</fcst>
</valtimeMINUSreftime>
<gridParameterInfo xsi:type="parameterInfo">
<short_name>refc</short_name>
<long_name>composite radar reflectivity</long_name>
<units>dBZ</units>
<udunits>decibals</udunits>
<uiname>Refc</uiname>
<valid_range>0.0</valid_range>
<valid_range>100000.0</valid_range>
<fillValue>-99999.0</fillValue>
<n3D>0</n3D>
<levelsDesc>EA</levelsDesc>
<levels>
<level>EA</level>
</levels>
</gridParameterInfo>
<gridParameterInfo xsi:type="parameterInfo">
<short_name>refd</short_name>
<long_name>derived radar reflectivity</long_name>
<units>dBZ</units>
<udunits>decibals</udunits>
<uiname>Refd</uiname>
<valid_range>0.0</valid_range>
<valid_range>100000.0</valid_range>
<fillValue>-99999.0</fillValue>
<n3D>0</n3D>
<levelsDesc>FHAG 1000 HYB 1</levelsDesc>
<levels>
<level>FHAG1000</level>
<level>HYB1</level>
</levels>
</gridParameterInfo>
<gridParameterInfo xsi:type="parameterInfo">
<short_name>sli</short_name>
<long_name>Surface lifted index</long_name>
<units>K</units>
<udunits>degree_Kelvin</udunits>
<uiname>LftInd</uiname>
<valid_range>-20.0</valid_range>
<valid_range>20.0</valid_range>
<fillValue>-99999.0</fillValue>
<n3D>0</n3D>
<levelsDesc>MB 0&gt;500</levelsDesc>
<levels>
<level>MB0500</level>
</levels>
</gridParameterInfo>
<gridParameterInfo xsi:type="parameterInfo">
<short_name>cape</short_name>
<long_name>Convective Available Potential Energy</long_name>
<units>J/kg</units>
<udunits>joule/Kilogram</udunits>
<uiname>CAPE</uiname>
<valid_range>0.0</valid_range>
<valid_range>6000.0</valid_range>
<fillValue>-99999.0</fillValue>
<n3D>0</n3D>
<levelsDesc>SFC BL 0&gt;180 0&gt;255</levelsDesc>
<levels>
<level>SFC</level>
<level>BL0180</level>
<level>BL0255</level>
</levels>
</gridParameterInfo>
<gridParameterInfo xsi:type="parameterInfo">
<short_name>staticSpacing</short_name>
<long_name>Grid spacing</long_name>
<units>m</units>
<fillValue>-99999.0</fillValue>
<n3D>0</n3D>
</gridParameterInfo>
<gridParameterInfo xsi:type="parameterInfo">
<short_name>tp</short_name>
<long_name>total precipitation</long_name>
<units>mm</units>
<udunits>millimeter</udunits>
<uiname>totPrecip</uiname>
<valid_range>0.0</valid_range>
<valid_range>1000.0</valid_range>
<fillValue>-99999.0</fillValue>
<n3D>0</n3D>
<levelsDesc>SFC</levelsDesc>
<levels>
<level>SFC</level>
</levels>
</gridParameterInfo>
<gridParameterInfo xsi:type="parameterInfo">
<short_name>weasd</short_name>
<long_name>water equivalent of accumulated snow depth</long_name>
<units>ml</units>
<udunits>mil</udunits>
<uiname>waterEqvAccSnowDepth</uiname>
<valid_range>0.0</valid_range>
<valid_range>1000.0</valid_range>
<fillValue>-99999.0</fillValue>
<n3D>0</n3D>
<levelsDesc>SFC</levelsDesc>
<levels>
<level>SFC</level>
</levels>
</gridParameterInfo>
<gridParameterInfo xsi:type="parameterInfo">
<short_name>cpozp</short_name>
<long_name>Probability of freezing precip</long_name>
<units>%</units>
<udunits>percent</udunits>
<uiname>FreezePcpProb</uiname>
<valid_range>0.0</valid_range>
<valid_range>100.0</valid_range>
<fillValue>-99999.0</fillValue>
<n3D>0</n3D>
<levelsDesc>SFC</levelsDesc>
<levels>
<level>SFC</level>
</levels>
</gridParameterInfo>
<gridParameterInfo xsi:type="parameterInfo">
<short_name>tcc</short_name>
<long_name>Total Cloud Cover</long_name>
<units>%</units>
<udunits>percent</udunits>
<uiname>totalCldCvr</uiname>
<valid_range>0.0</valid_range>
<valid_range>100.0</valid_range>
<fillValue>-99999.0</fillValue>
<n3D>0</n3D>
<levelsDesc>EA</levelsDesc>
<levels>
<level>EA</level>
</levels>
</gridParameterInfo>
<gridParameterInfo xsi:type="parameterInfo">
<short_name>lcdc</short_name>
<long_name>Low-level cloud fraction</long_name>
<units>%</units>
<udunits>percent</udunits>
<uiname>lowLvlCldFr</uiname>
<valid_range>0.0</valid_range>
<valid_range>100.0</valid_range>
<fillValue>-99999.0</fillValue>
<n3D>0</n3D>
<levelsDesc>LCY</levelsDesc>
<levels>
<level>LCY</level>
</levels>
</gridParameterInfo>
<gridParameterInfo xsi:type="parameterInfo">
<short_name>mcdc</short_name>
<long_name>Mid-level cloud fraction</long_name>
<units>%</units>
<udunits>percent</udunits>
<uiname>midLvlCldFr</uiname>
<valid_range>0.0</valid_range>
<valid_range>100.0</valid_range>
<fillValue>-99999.0</fillValue>
<n3D>0</n3D>
<levelsDesc>MCY</levelsDesc>
<levels>
<level>MCY</level>
</levels>
</gridParameterInfo>
<gridParameterInfo xsi:type="parameterInfo">
<short_name>hcdc</short_name>
<long_name>High-level cloud fraction</long_name>
<units>%</units>
<udunits>percent</udunits>
<uiname>highLvlCldFr</uiname>
<valid_range>0.0</valid_range>
<valid_range>100.0</valid_range>
<fillValue>-99999.0</fillValue>
<n3D>0</n3D>
<levelsDesc>HCL</levelsDesc>
<levels>
<level>HCL</level>
</levels>
</gridParameterInfo>
<gridParameterInfo xsi:type="parameterInfo">
<short_name>crain</short_name>
<long_name>Categorical rain</long_name>
<units>yes=1, no=0</units>
<udunits />
<uiname>CategoricalRain</uiname>
<valid_range>0.0</valid_range>
<valid_range>1.0</valid_range>
<fillValue>-99999.0</fillValue>
<n3D>0</n3D>
<levelsDesc>SFC</levelsDesc>
<levels>
<level>SFC</level>
</levels>
</gridParameterInfo>
<gridParameterInfo xsi:type="parameterInfo">
<short_name>uw</short_name>
<long_name>u wind component</long_name>
<units>m/s</units>
<udunits>meter/sec</udunits>
<uiname>uWind</uiname>
<valid_range>-150.0</valid_range>
<valid_range>150.0</valid_range>
<fillValue>-99999.0</fillValue>
<n3D>0</n3D>
<levelsDesc>10 FHAG</levelsDesc>
<levels>
<level>FHAG10</level>
</levels>
</gridParameterInfo>
<gridParameterInfo xsi:type="parameterInfo">
<short_name>cin</short_name>
<long_name>Convective Inhibition</long_name>
<units>J/kg</units>
<udunits>joule/Kilogram</udunits>
<uiname>convInhib</uiname>
<valid_range>-1000.0</valid_range>
<valid_range>1000.0</valid_range>
<fillValue>-99999.0</fillValue>
<n3D>0</n3D>
<levelsDesc>SFC BL 0&gt;255</levelsDesc>
<levels>
<level>SFC</level>
<level>BL0255</level>
</levels>
</gridParameterInfo>
<gridParameterInfo xsi:type="parameterInfo">
<short_name>mmsp</short_name>
<long_name>pressure at mean sea level</long_name>
<units>Pa</units>
<udunits>pascal</udunits>
<uiname>PMSL</uiname>
<valid_range>80000.0</valid_range>
<valid_range>110000.0</valid_range>
<fillValue>-99999.0</fillValue>
<n3D>0</n3D>
<levelsDesc>MSL</levelsDesc>
<levels>
<level>MSL</level>
</levels>
</gridParameterInfo>
<gridParameterInfo xsi:type="parameterInfo">
<short_name>snd</short_name>
<long_name>Snow depth</long_name>
<units>m</units>
<udunits>meters</udunits>
<uiname>snowDepth</uiname>
<valid_range>0.0</valid_range>
<valid_range>10.0</valid_range>
<fillValue>-99999.0</fillValue>
<n3D>0</n3D>
<levelsDesc>SFC</levelsDesc>
<levels>
<level>SFC</level>
</levels>
</gridParameterInfo>
<gridParameterInfo xsi:type="parameterInfo">
<short_name>csnow</short_name>
<long_name>Categorical snow</long_name>
<units>yes=1, no=0</units>
<udunits />
<uiname>CategoricalSnow</uiname>
<valid_range>0.0</valid_range>
<valid_range>1.0</valid_range>
<fillValue>-99999.0</fillValue>
<levelsDesc>SFC</levelsDesc>
<levels>
<level>SFC</level>
</levels>
</gridParameterInfo>
<gridParameterInfo xsi:type="parameterInfo">
<short_name>cicep</short_name>
<long_name>Categorical ice pellets</long_name>
<units>yes=1, no=0</units>
<udunits />
<uiname>CategoricalIcePlt</uiname>
<valid_range>0.0</valid_range>
<valid_range>1.0</valid_range>
<fillValue>-99999.0</fillValue>
<n3D>0</n3D>
<levelsDesc>SFC</levelsDesc>
<levels>
<level>SFC</level>
</levels>
</gridParameterInfo>
<gridParameterInfo xsi:type="parameterInfo">
<short_name>bli</short_name>
<long_name>Best lifted index</long_name>
<units>K</units>
<udunits>degree_Kelvin</udunits>
<uiname>bestLftInd</uiname>
<valid_range>-20.0</valid_range>
<valid_range>50.0</valid_range>
<fillValue>-99999.0</fillValue>
<n3D>0</n3D>
<levelsDesc>BL 0&gt;180</levelsDesc>
<levels>
<level>BL0180</level>
</levels>
</gridParameterInfo>
<gridParameterInfo xsi:type="parameterInfo">
<short_name>staticTopo</short_name>
<long_name>Topography</long_name>
<units>m</units>
<fillValue>-99999.0</fillValue>
</gridParameterInfo>
<gridParameterInfo xsi:type="parameterInfo">
<short_name>wgs</short_name>
<long_name>Wind Gust Speed</long_name>
<units>m/s</units>
<udunits>meter/sec</udunits>
<uiname>windGustSpeed</uiname>
<valid_range>0</valid_range>
<valid_range>150.0</valid_range>
<fillValue>-99999.0</fillValue>
<n3D>1</n3D>
<levelsDesc>10 FHAG</levelsDesc>
<levels>
<level>FHAG10</level>
</levels>
</gridParameterInfo>
<gridParameterInfo xsi:type="parameterInfo">
<short_name>wgs1hr</short_name>
<long_name>Max 1hr Wind Speed</long_name>
<units>m/s</units>
<udunits>meter/sec</udunits>
<uiname>maxWindSpeed</uiname>
<valid_range>0</valid_range>
<valid_range>150.0</valid_range>
<fillValue>-99999.0</fillValue>
<n3D>1</n3D>
<levelsDesc>10 FHAG</levelsDesc>
<levels>
<level>FHAG10</level>
</levels>
</gridParameterInfo>
<gridParameterInfo xsi:type="parameterInfo">
<short_name>dpt</short_name>
<long_name>Dewpoint Temperature</long_name>
<units>K</units>
<udunits>degree_Kelvin</udunits>
<uiname>Td</uiname>
<valid_range>180.0</valid_range>
<valid_range>330.0</valid_range>
<fillValue>-99999.0</fillValue>
<n3D>1</n3D>
<levelsDesc>FHAG 2</levelsDesc>
<levels>
<level>FHAG2</level>
</levels>
</gridParameterInfo>
<gridParameterInfo xsi:type="parameterInfo">
<short_name>heli</short_name>
<long_name>helicity sigma</long_name>
<units>m/s2</units>
<udunits>meter/second2</udunits>
<uiname>hel</uiname>
<valid_range>0.0</valid_range>
<valid_range>1000.0</valid_range>
<fillValue>-99999.0</fillValue>
<n3D>0</n3D>
<levelsDesc>FHAG 1000 3000</levelsDesc>
<levels>
<level>FHAG1000</level>
<level>FHAG3000</level>
</levels>
</gridParameterInfo>
<gridParameterInfo xsi:type="parameterInfo">
<short_name>vis</short_name>
<long_name>visibility</long_name>
<units>m</units>
<udunits>meters</udunits>
<uiname>Vis</uiname>
<valid_range>0.0</valid_range>
<valid_range>100000.0</valid_range>
<fillValue>-99999.0</fillValue>
<n3D>0</n3D>
<levelsDesc>SFC</levelsDesc>
<levels>
<level>SFC</level>
</levels>
</gridParameterInfo>
<gridParameterInfo xsi:type="parameterInfo">
<short_name>vw</short_name>
<long_name>v wind component</long_name>
<units>m/s</units>
<udunits>meter/sec</udunits>
<uiname>vWind</uiname>
<valid_range>-150.0</valid_range>
<valid_range>150.0</valid_range>
<fillValue>-99999.0</fillValue>
<n3D>0</n3D>
<levelsDesc>10 FHAG</levelsDesc>
<levels>
<level>FHAG10</level>
</levels>
</gridParameterInfo>
<gridParameterInfo xsi:type="parameterInfo">
<short_name>t</short_name>
<long_name>Temperature</long_name>
<units>K</units>
<udunits>degree_Kelvin</udunits>
<uiname>T</uiname>
<valid_range>180.0</valid_range>
<valid_range>330.0</valid_range>
<fillValue>-99999.0</fillValue>
<n3D>0</n3D>
<levelsDesc>2 FHAG</levelsDesc>
<levels>
<level>FHAG2</level>
</levels>
</gridParameterInfo>
<gridParameterInfo xsi:type="parameterInfo">
<short_name>staticCoriolis</short_name>
<long_name>Coriolis parameter</long_name>
<units>s^-1</units>
<fillValue>-99999.0</fillValue>
</gridParameterInfo>
<gridParameterInfo xsi:type="parameterInfo">
<short_name>gh</short_name>
<long_name>Geopotential height</long_name>
<units>m</units>
<udunits>meters</udunits>
<uiname>geoPotHt</uiname>
<valid_range>-2000.0</valid_range>
<valid_range>20000.0</valid_range>
<fillValue>-99999.0</fillValue>
<n3D>0</n3D>
<levelsDesc>CBL CTL</levelsDesc>
<levels>
<level>CBL</level>
<level>CTL</level>
</levels>
</gridParameterInfo>
<gridParameterInfo xsi:type="parameterInfo">
<short_name>p</short_name>
<long_name>pressure</long_name>
<units>Pa</units>
<udunits>pascal</udunits>
<uiname>atmP</uiname>
<valid_range>0.0</valid_range>
<valid_range>110000.0</valid_range>
<fillValue>-99999.0</fillValue>
<n3D>1</n3D>
<levelsDesc>SFC</levelsDesc>
<levels>
<level>SFC</level>
</levels>
</gridParameterInfo>
<gridParameterInfo xsi:type="parameterInfo">
<short_name>pw</short_name>
<long_name>precipitable water</long_name>
<units>mm</units>
<udunits>millimeter</udunits>
<uiname>precipH2O</uiname>
<valid_range>0.0</valid_range>
<valid_range>300.0</valid_range>
<fillValue>-99999.0</fillValue>
<n3D>0</n3D>
<levelsDesc>EA</levelsDesc>
<levels>
<level>EA</level>
</levels>
</gridParameterInfo>
<gridParameterInfo xsi:type="parameterInfo">
<short_name>cfrzr</short_name>
<long_name>Categorical freezing rain</long_name>
<units>yes=1, no=0</units>
<udunits />
<uiname>CategoricalFrzRain</uiname>
<valid_range>0.0</valid_range>
<valid_range>1.0</valid_range>
<fillValue>-99999.0</fillValue>
<n3D>0</n3D>
<levelsDesc>SFC</levelsDesc>
<levels>
<level>SFC</level>
</levels>
</gridParameterInfo>
<gridParameterInfo xsi:type="parameterInfo">
<short_name>wd</short_name>
<long_name>Wind Direction</long_name>
<units>degreeTrue</units>
<udunits>degree_True</udunits>
<uiname>windDir</uiname>
<valid_range>0.0</valid_range>
<valid_range>360.0</valid_range>
<fillValue>-99999.0</fillValue>
<n3D>1</n3D>
<levelsDesc>FHAG 10</levelsDesc>
<levels>
<level>FHAG10</level>
</levels>
</gridParameterInfo>
<gridParameterInfo xsi:type="parameterInfo">
<short_name>mwind</short_name>
<long_name>Maximum Wind Speed</long_name>
<units>m/s</units>
<udunits>meter/sec</udunits>
<uiname>maxWindSpeed</uiname>
<valid_range>0</valid_range>
<valid_range>150</valid_range>
<fillValue>-99999.0</fillValue>
<n3D>0</n3D>
<levelsDesc>10 FHAG</levelsDesc>
<levels>
<level>FHAG10</level>
</levels>
</gridParameterInfo>
</gridParamInfo>

View file

@ -0,0 +1,31 @@
## ESTOFS
from Init import *
##--------------------------------------------------------------------------
class ESTOFSForecaster(Forecaster):
def __init__(self):
Forecaster.__init__(self, "ESTOFS","ESTOFS")
#===========================================================================
# Ingest the gridded ESTOFS storm surge guidance
#===========================================================================
def calcStormSurge(self, ETSRG_SFC):
return ETSRG_SFC * 3.2808
#===========================================================================
# Ingest the gridded ESTOFS storm surge guidance
#===========================================================================
def calcAstroTide(self, ELEV_SFC):
return ELEV_SFC * 3.2808
def main():
ESTOFSForecaster().run()
if __name__ == "__main__":
main()

View file

@ -0,0 +1,184 @@
#
from Init import *
##--------------------------------------------------------------------------
class HRRRForecaster(Forecaster):
def __init__(self):
Forecaster.__init__(self, "HRRR","HRRR")
# def calcClgHgt(self, cc_CCL):
# ceil = cc_CCL * .03280839
# ceil = where(less_equal(ceil, 0.0), 250.0, ceil)
# return ceil
def calcVis(self, vis_SFC):
return (vis_SFC * 3.2808) / 5279.85564
def calcT(self, t_FHAG2):
return self.KtoF(t_FHAG2)
def calcTd(self, dpt_FHAG2):
return self.KtoF(dpt_FHAG2)
##--------------------------------------------------------------------------
## Returns the maximum of the specified MaxT and the T grids
##--------------------------------------------------------------------------
## def calcMaxT(self, T, MaxT):
## if MaxT is None:
## return T
## return maximum(MaxT, T)
##--------------------------------------------------------------------------
## Returns the minimum of the specified MinT and T grids
##--------------------------------------------------------------------------
## def calcMinT(self, T, MinT):
## if MinT is None:
## return T
## return minimum(MinT, T)
def calcRH(self, T, Td):
Tc = .556 * (T - 32.0)
Tdc = .556 * (Td - 32.0)
Vt = 6.11 * pow(10, (Tc * 7.5 / (Tc + 237.3)))
Vd = 6.11 * pow(10, (Tdc * 7.5 / (Tdc + 237.3)))
RH = (Vd / Vt) * 100.0
# return the new value
return RH
def dewFromTandRH(self,T,RH):
tc=(T-32.0)*(5.0/9.0)
rh=clip(RH,0.001,99.999)/100.0
x=(log(rh)/17.67)+(tc/(tc+243.5))
tdc=(243.5*x)/(1.0-x)
td=(tdc*9.0/5.0)+32.0
return td
##--------------------------------------------------------------------------
# Calculates QPF from the total precip field out of the model
##--------------------------------------------------------------------------
def calcQPF(self, tp_SFC):
return tp_SFC / 25.4 # convert from millimeters to inches
def calcQPF6(self, QPF, QPF6):
if QPF6 is None:
QPF6=QPF
else:
QPF6=QPF6+QPF
return QPF6
def calcQPF12(self, QPF6, QPF12):
if QPF12 is None:
QPF12=QPF6
else:
QPF12=QPF12+QPF6
return QPF12
##--------------------------------------------------------------------------
## Converts the lowest available wind level from m/s to knots
##--------------------------------------------------------------------------
def calcWind(self, wind_FHAG10):
return (wind_FHAG10[0] * 1.94,clip(wind_FHAG10[1], 0, 359.5))
#
# Return the max of the max wind or wind gust
#
def calcWindGust(self, wgs_FHAG10, wgs1hr_FHAG10):
return (maximum(wgs_FHAG10,wgs1hr_FHAG10) * 1.94)
#=========================================================================
# SnowAmt - simple snow ratio based on surface temperature - multiplied
# times the model QPF amount
#-------------------------------------------------------------------------
def calcSnowAmt(self,T,QPF):
m1=less(T,9.0)
m2=greater_equal(T,30.0)
snowr=(T*-0.5)+22.5
snowr=where(m1,20,snowr)
snowr=where(m2,0,snowr)
snowamt=QPF*snowr
return snowamt
##--------------------------------------------------------------------------
## Use cloud base and cloud top to get sky cover
##--------------------------------------------------------------------------
# def calcSky(self, gh_CBL, gh_CTL):
# depth=gh_CTL-gh_CBL
# c100=greater_equal(depth, 1000)
# partialcloudy=depth/10
# sky=0
# sky=where(depth, c100, sky)
## sky=where(depth, partialcloudy, sky)
# return sky
def calcSky(self,tcc_EA):
return tcc_EA
#--------------------------------------------------------------------------
# PoP - based strongly on QPF (since when model has one inch of precip the
# chance of getting 0.01 is pretty high). However, there is a big
# difference between a place that model has 0.00 precip and is very
# close to precipitating - and those where model has 0.00 and is a
# thousand miles from the nearest cloud. Thus, uses the average
#
# Uses hyperbolic tangent of QPF, so that it rises quickly as model
# QPF increases - but tapers out to nearly 100% as QPF gets high.
#
# Adjustable parameters:
# topQPF is QPF amount that would give 75% PoP if nothing else
# considered at half this amount, PoP is 45%, at double this
# amount PoP is 96%. Default set at 0.40.
#
#--------------------------------------------------------------------------
# def calcPoP(self, QPF12):
#
# topQPF=0.40 # QPF value where raw PoP would be 75%
# factor=tanh(QPF12*(1.0/topQPF))
# factor2=tanh(QPF12*(2.0/topQPF))
# pop=(factor*100.0)+(factor2*100.0)
# pop=clip(pop,0,100)
# return pop
##--------------------------------------------------------------------------
## Use sky, reflecivity, qpf, vis, categoricals to get weather
##--------------------------------------------------------------------------
def calcWx(self, T, QPF, Vsby, crain_SFC, csnow_SFC, cicep_SFC, bli_BL0180, cfrzr_SFC, refc_EA):
# Now apply a different algorithm for each type
key = ['<NoCov>:<NoWx>:<NoInten>:<NoVis>:',
"Wide:S:-:<NoVis>:", "Wide:R:-:<NoVis>:",
"Wide:S:-:<NoVis>:^Wide:R:-:<NoVis>:",
'Wide:ZR:-:<NoVis>:', 'Wide:IP:-:<NoVis>:',
'Wide:ZR:-:<NoVis>:^Wide:IP:-:<NoVis>:',
"Sct:SW:-:<NoVis>:", "Sct:RW:-:<NoVis>:",
"Sct:SW:-:<NoVis>:^Sct:RW:-:<NoVis>:",
"Chc:ZR:-:<NoVis>:", 'Chc:IP:-:<NoVis>:',
'Chc:ZR:-:<NoVis>:^Chc:IP:-:<NoVis>:']
wx = self._empty
wx = where(logical_and(greater(QPF,0.02),greater(T,35)), 2, wx)
wx = where(equal(crain_SFC, 1), 2, wx)
wx = where(equal(cfrzr_SFC, 1), 4, wx)
wx = where(equal(cicep_SFC, 1), 5, wx)
wx = where(equal(csnow_SFC, 1), 1, wx)
# Make showers (scattered/Chc)
convecMask = less(refc_EA, 35)
wx = where(logical_and(not_equal(wx, 0), convecMask), wx + 6, wx)
# Thunder
for i in xrange(len(key)):
tcov = string.split(key[i], ":")[0]
if tcov == "Chc" or tcov == "<NoCov>":
tcov = "Sct"
key.append(key[i] + "^" + tcov
+ ":T:<NoInten>:<NoVis>:")
wx = where(logical_and(greater_equal(bli_BL0180, -3), greater_equal(refc_EA, 35)), wx + 13, wx)
# No wx where no qpf
wx = where(less(QPF, 0.01), 0, wx)
return(wx, key)
def main():
HRRRForecaster().run()

View file

@ -901,4 +901,9 @@
<datasetId>PROB3HR</datasetId>
<dt>3</dt>
</info>
<info>
<title>HRRR</title>
<datasetId>HRRR</datasetId>
<dt>1</dt>
</info>
</datasetInfoSet>

View file

@ -10,46 +10,6 @@
<gribModelSet>
<!-- SUBCENTER 0 -->
<model>
<name>estofsHW</name>
<center>7</center>
<subcenter>4</subcenter>
<grid>321225001</grid>
<process>
<id>14</id>
</process>
</model>
<model>
<name>estofsAK</name>
<center>7</center>
<subcenter>4</subcenter>
<grid>825553001</grid>
<process>
<id>14</id>
</process>
</model>
<model>
<name>estofsPR</name>
<center>7</center>
<subcenter>4</subcenter>
<grid>339227001</grid>
<process>
<id>1</id>
<id>14</id>
</process>
</model>
<model>
<name>estofsUS</name>
<center>7</center>
<subcenter>4</subcenter>
<grid>2145137701</grid>
<process>
<id>1</id>
</process>
</model>
<model>
<name>GFSLAMP</name>
@ -61,6 +21,15 @@
</process>
</model>
<model>
<name>HRRR</name>
<center>7</center>
<subcenter>0</subcenter>
<process>
<id>83</id>
</process>
</model>
<model>
<name>ETA</name>
<center>7</center>
@ -2903,20 +2872,31 @@
</model>
<model>
<name>estofsUS</name>
<name>estofsPR</name>
<center>7</center>
<subcenter>4</subcenter>
<grid>1971</grid>
<grid>339227001</grid>
<process>
<id>1</id>
<id>14</id>
</process>
</model>
<model>
<name>estofsHW</name>
<center>7</center>
<subcenter>4</subcenter>
<grid>321225001</grid>
<process>
<id>14</id>
</process>
</model>
<model>
<name>estofsPR</name>
<name>estofsAK</name>
<center>7</center>
<subcenter>4</subcenter>
<grid>339227-95</grid>
<grid>825553001</grid>
<process>
<id>14</id>
</process>

View file

@ -0,0 +1,11 @@
<?xml version='1.0' encoding='UTF-8'?>
<subGridDef>
<modelNames>ESTOFS</modelNames>
<referenceGrid>184</referenceGrid>
<nx>800</nx>
<ny>1000</ny>
<!--
<centerLatitude>36.5</centerLatitude>
<centerLongitude>-81</centerLongitude>
-->
</subGridDef>

View file

@ -0,0 +1,11 @@
<?xml version='1.0' encoding='UTF-8'?>
<subGridDef>
<modelNames>HRRR</modelNames>
<referenceGrid>184</referenceGrid>
<nx>500</nx>
<ny>500</ny>
<!--
<centerLatitude>36.5</centerLatitude>
<centerLongitude>-81</centerLongitude>
-->
</subGridDef>

View file

@ -19,6 +19,22 @@
further_licensing_information.
-->
<styleRuleset>
<!-- ESTOFS -->
<styleRule>
<paramLevelMatches>
<parameter>ELEV</parameter>
<parameter>ETSRG</parameter>
<parameter>ETCWL</parameter>
</paramLevelMatches>
<contourStyle>
<displayUnits>ft</displayUnits>
<displayFlags>NoPlane</displayFlags>
<contourLabeling labelSpacing="4">
<increment>1</increment>
</contourLabeling>
</contourStyle>
</styleRule>
<!--
* GH, GHxSM, zAGL
dam | 0.1 | 0.0 | 4 | i4 | |..|8000F0FF| | 0 | 50

View file

@ -39,7 +39,17 @@
</colorbarLabeling>
</imageStyle>
</styleRule>
<!-- ESTOFS -->
<styleRule>
<paramLevelMatches>
<parameter>ELEV</parameter>
<parameter>ETSRG</parameter>
<parameter>ETCWL</parameter>
</paramLevelMatches>
<imageStyle>
<displayUnits>ft</displayUnits>
</imageStyle>
</styleRule>
<!--
* GH, GHxSM, Topo, zAGL
km | 0.001 | 0.0 | 0 | 1 | | | 29 | -1 | 0.1

View file

@ -11,7 +11,6 @@
##### Evan Bookbinder 05-05-2013 handleClosesPoints and 3rd bullet changes (OVER & now)
##### Evan Bookbinder 09-20-2013 Fixed rural area otherPoints in pathcast section, added rural phrase
##### Qinglu Lin 03-17-2014 DR 16309. Updated inserttorwatches and insertsvrwatches.
##### Qinglu Lin 05-13-2014 DR 17177. Updated secondBullet.
####################################################################################################
#*
Mile Marker Test Code
@ -203,7 +202,7 @@ ${dateUtil.period(${watches.getLatestTorTime()},${timeFormat.plain}, 15, ${local
#if(${secondtimezone})
/${dateUtil.format(${watch.getEndTime()}, ${timeFormat.plain}, 15, ${secondtimezone})}/##
#end
FOR##
FOR ##
#set($numPortions = ${list.size(${watch.getPortions()})})
#set($count = 0)
#foreach(${portion} in ${watch.getPortions()})
@ -237,7 +236,7 @@ ${dateUtil.period(${watches.getLatestSvrTime()},${timeFormat.plain}, 15, ${local
#if(${secondtimezone})
/${dateUtil.format(${watch.getEndTime()}, ${timeFormat.plain}, 15, ${secondtimezone})}/##
#end
FOR##
FOR ##
#set($numPortions = ${list.size(${watch.getPortions()})})
#set($count = 0)
#foreach(${portion} in ${watch.getPortions()})
@ -1143,13 +1142,10 @@ ${partOfArea}${area.name}...
######### MACRO TO GENERATE SECOND BULLET (UNTIL XXXX AMPM TZ (DAY) IN WARNINGS ##########
#macro(secondBullet $dateUtil $expire $timeFormat $localtimezone $secondtimezone $duration)
#if(${duration} >= 360)
#set($text = "UNTIL ${dateUtil.format(${expire}, ${timeFormat.plain}, 15, ${localtimezone})}")
UNTIL ${dateUtil.format(${expire}, ${timeFormat.plain}, 15, ${localtimezone})}##
#else
#set($text = "UNTIL ${dateUtil.format(${expire}, ${timeFormat.clock}, 15, ${localtimezone})}")
UNTIL ${dateUtil.format(${expire}, ${timeFormat.clock}, 15, ${localtimezone})}##
#end
#set($text = $text.replace("1200 PM", "NOON"))
#set($text = $text.replace("1200 AM", "MIDNIGHT"))
${text}##
#if(${secondtimezone})
#if(${duration} >= 360)
/${dateUtil.format(${expire}, ${timeFormat.plain}, 15, ${secondtimezone})}/##

View file

@ -381,9 +381,19 @@ DENSE FOG WAS REDUCING VISIBILITIES TO BELOW ${visibility}. REDUCE YOUR SPEED...
&&
#end
#############
## WATCHES ##
#############
#if(${list.contains($includedWatches, "torWatches")} && ${list.contains(${bullets}, "includeTorWatches")})
#inserttorwatches(${watches}, ${list}, ${secondtimezone}, ${dateUtil}, ${timeFormat})
#end
#if(${list.contains(${includedWatches}, "svrWatches")} && ${list.contains(${bullets}, "includeSvrWatches")})
#insertsvrwatches(${watches}, ${list}, ${secondtimezone}, ${dateUtil}, ${timeFormat})
#end
####################################
#if(${productClass}=="T")
THIS IS A TEST MESSAGE. DO NOT TAKE ACTION BASED ON THIS MESSAGE.
####################################
#end
#printcoords(${areaPoly}, ${list})

View file

@ -124,6 +124,8 @@ turned on unless the corresponding .vm file is turned on in a given template's .
<bullet bulletName="lightningCTA" bulletText="Intense lightning" parseString="INTENSE LIGHTNING IS OCCURRING WITH THIS STORM"/>
<bullet bulletName="reportCTA" bulletText="Report severe weather to coast guard" parseString="REPORT SEVERE WEATHER TO THE COAST GUARD"/>
<bullet bulletName="fogCTA" bulletText="Dense fog" parseString="DENSE FOG WAS REDUCING VISIBILITIES TO"/>
<bullet bulletName="includeTorWatches" bulletText="Include Tornado Watches" bulletDefault="true" parseString=""/>
<bullet bulletName="includeSvrWatches" bulletText="Include Severe Thunderstorm Watches" bulletDefault="true" parseString=""/>
</bullets>
</bulletActionGroup>
<bulletActionGroup action="COR" phen="MA" sig="S">
@ -164,6 +166,8 @@ turned on unless the corresponding .vm file is turned on in a given template's .
<bullet bulletName="lightningCTA" bulletText="Intense lightning" parseString="INTENSE LIGHTNING IS OCCURRING WITH THIS STORM"/>
<bullet bulletName="reportCTA" bulletText="Report severe weather to coast guard" parseString="REPORT SEVERE WEATHER TO THE COAST GUARD"/>
<bullet bulletName="fogCTA" bulletText="Dense fog" parseString="DENSE FOG WAS REDUCING VISIBILITIES TO"/>
<bullet bulletName="includeTorWatches" bulletText="Include Tornado Watches" bulletDefault="true" parseString=""/>
<bullet bulletName="includeSvrWatches" bulletText="Include Severe Thunderstorm Watches" bulletDefault="true" parseString=""/>
</bullets>
</bulletActionGroup>
</bulletActionGroups>

View file

@ -109,6 +109,8 @@ turned on unless the corresponding .vm file is turned on in a given template's .
<bullet bulletName="frontalPassage" bulletText="cold frontal passage"/>
<bullet bulletName="heavySnow" bulletText="heavy snow/low visibility"/>
<bullet bulletName="snowAmt" bulletText="snowfall amounts"/>
<bullet bulletName="includeTorWatches" bulletText="Include Tornado Watches" bulletDefault="true" parseString=""/>
<bullet bulletName="includeSvrWatches" bulletText="Include Severe Thunderstorm Watches" bulletDefault="true" parseString=""/>
</bullets>
</bulletActionGroup>
<bulletActionGroup action="COR">
@ -144,6 +146,8 @@ turned on unless the corresponding .vm file is turned on in a given template's .
<bullet bulletName="frontalPassage" bulletText="cold frontal passage"/>
<bullet bulletName="heavySnow" bulletText="heavy snow/low visibility"/>
<bullet bulletName="snowAmt" bulletText="snowfall amounts"/>
<bullet bulletName="includeTorWatches" bulletText="Include Tornado Watches" bulletDefault="true" parseString=""/>
<bullet bulletName="includeSvrWatches" bulletText="Include Severe Thunderstorm Watches" bulletDefault="true" parseString=""/>
</bullets>
</bulletActionGroup>
</bulletActionGroups>

View file

@ -349,9 +349,10 @@ CONDITIONS CAN DETERIORATE RAPIDLY IN WINTER WEATHER SITUATIONS. BE PREPARED FOR
#############
## WATCHES ##
#############
#if(${list.contains($includedWatches, "includeSvrWatches")})
#if(${list.contains($includedWatches, "torWatches")} && ${list.contains(${bullets}, "includeTorWatches")})
#inserttorwatches(${watches}, ${list}, ${secondtimezone}, ${dateUtil}, ${timeFormat})
#end
#if(${list.contains(${includedWatches}, "svrWatches")} && ${list.contains(${bullets}, "includeSvrWatches")})
#insertsvrwatches(${watches}, ${list}, ${secondtimezone}, ${dateUtil}, ${timeFormat})
#end
####################################

View file

@ -116,7 +116,8 @@ turned on unless the corresponding .vm file is turned on in a given template's .
<bullet bulletName="torrentialRainfallCTA" bulletText="Torrential rainfall" parseString="TORRENTIAL RAINFALL IS ALSO OCCURRING"/>
<bullet bulletName="lawEnforcementCTA" bulletText="Report Svr Wx to Law Enforcement Agency" parseString="CONTACT YOUR NEAREST LAW ENFORCEMENT"/>
<bullet bulletName="boatersCTA" bulletText="Over Lake - Boaters seek shelter" parseString="GET OUT OF THE WATER AND MOVE INDOORS"/>
<bullet bulletName="includeSvrWatches" bulletText="Include Severe Thunderstorm Watches" bulletGroup="toggle2" bulletDefault="true" parseString=""/>
<bullet bulletName="includeTorWatches" bulletText="Include Tornado Watches" bulletDefault="true" parseString=""/>
<bullet bulletName="includeSvrWatches" bulletText="Include Severe Thunderstorm Watches" bulletDefault="true" parseString=""/>
<bullet bulletText="******** WINTER WX CALLS TO ACTION (CHOOSE 1 OR MORE) *********" bulletType="title"/>
<bullet bulletName="advisoryCTA" bulletText="Advisory may be required" bulletGroup="toggle3" parseString="STORMS MAY INTENSIFY...MONITOR TV"/>
<bullet bulletName="advisoryEffectCTA" bulletText="Advisory in effect" bulletGroup="toggle3" parseString="FREQUENT CLOUD TO GROUND LIGHTNING IS OCCURRING"/>
@ -172,7 +173,8 @@ turned on unless the corresponding .vm file is turned on in a given template's .
<bullet bulletName="torrentialRainfallCTA" bulletText="Torrential rainfall" parseString="TORRENTIAL RAINFALL IS ALSO OCCURRING"/>
<bullet bulletName="lawEnforcementCTA" bulletText="Report Svr Wx to Law Enforcement Agency" parseString="CONTACT YOUR NEAREST LAW ENFORCEMENT"/>
<bullet bulletName="boatersCTA" bulletText="Over Lake - Boaters seek shelter" parseString="GET OUT OF THE WATER AND MOVE INDOORS"/>
<bullet bulletName="includeSvrWatches" bulletText="Include Severe Thunderstorm Watches" bulletGroup="toggle2" bulletDefault="true" parseString=""/>
<bullet bulletName="includeTorWatches" bulletText="Include Tornado Watches" bulletDefault="true" parseString=""/>
<bullet bulletName="includeSvrWatches" bulletText="Include Severe Thunderstorm Watches" bulletDefault="true" parseString=""/>
<bullet bulletText="******** WINTER WX CALLS TO ACTION (CHOOSE 1 OR MORE) *********" bulletType="title"/>
<bullet bulletName="advisoryCTA" bulletText="Advisory may be required" bulletGroup="toggle3" parseString="STORMS MAY INTENSIFY...MONITOR TV"/>
<bullet bulletName="advisoryEffectCTA" bulletText="Advisory in effect" bulletGroup="toggle3" parseString="FREQUENT CLOUD TO GROUND LIGHTNING IS OCCURRING"/>

View file

@ -22,6 +22,18 @@
<Method name="Alias">
<Field abbreviation="CCOV"/>
</Method>
<Method name="Alias" models="HRRR">
<Field abbreviation="TCC"/>
</Method>
<Method name="Alias" levels="HiLyr">
<Field abbreviation="HCDC" level="HiLyr"/>
</Method>
<Method name="Alias" levels="MidLyr">
<Field abbreviation="MCDC" level="MidLyr"/>
</Method>
<Method name="Alias" levels="LowLyr">
<Field abbreviation="LCDC" level="LowLyr"/>
</Method>
<Method models="HPCGuide" displayName="Total Cloud Cover" name="Multiply">
<Field abbreviation="TCC"/>
<ConstantField value="100.0"/>

View file

@ -24,4 +24,7 @@
<Field abbreviation="P"/>
<ConstantField value="-2"/>
</Method>
<Method name="Alias">
<Field abbreviation="GVV1hr"/>
</Method>
</DerivedParameter>

View file

@ -18,20 +18,5 @@
See_the_AWIPS_II_Master_Rights_File_("Master_Rights_File.pdf")_for
further_licensing_information.
-->
<lambertConformalGridCoverage>
<name>2145137701</name>
<description>Extratropical Storm and Tide Operation Forecast System</description>
<la1>20.19</la1>
<lo1>-121.55</lo1>
<firstGridPointCorner>LowerLeft</firstGridPointCorner>
<nx>2145</nx>
<ny>1377</ny>
<dx>1.25</dx>
<dy>1.25</dy>
<spacingUnit>km</spacingUnit>
<minorAxis>6371200.0</minorAxis>
<majorAxis>6371200.0</majorAxis>
<lov>20.0</lov>
<latin1>19.544</latin1>
<latin2>-63.88</latin2>
</lambertConformalGridCoverage>
<DerivedParameter unit="" name="Max Lightning Threat (flashes/km^2)" abbreviation="LTNG">
</DerivedParameter>

View file

@ -0,0 +1,26 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<!--
This_software_was_developed_and_/_or_modified_by_Raytheon_Company,
pursuant_to_Contract_DG133W-05-CQ-1067_with_the_US_Government.
U.S._EXPORT_CONTROLLED_TECHNICAL_DATA
This_software_product_contains_export-restricted_data_whose
export/transfer/disclosure_is_restricted_by_U.S._law._Dissemination
to_non-U.S._persons_whether_in_the_United_States_or_abroad_requires
an_export_license_or_other_authorization.
Contractor_Name:________Raytheon_Company
Contractor_Address:_____6825_Pine_Street,_Suite_340
________________________Mail_Stop_B8
________________________Omaha,_NE_68106
________________________402.291.0100
See_the_AWIPS_II_Master_Rights_File_("Master_Rights_File.pdf")_for
further_licensing_information.
-->
<DerivedParameter abbreviation="MXDVV" name="Max Downdraft Vertical Velocity" unit="m/s" >
<Method name="Alias">
<Field abbreviation="MAXDVV1hr"/>
</Method>
</DerivedParameter>

View file

@ -0,0 +1,26 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<!--
This_software_was_developed_and_/_or_modified_by_Raytheon_Company,
pursuant_to_Contract_DG133W-05-CQ-1067_with_the_US_Government.
U.S._EXPORT_CONTROLLED_TECHNICAL_DATA
This_software_product_contains_export-restricted_data_whose
export/transfer/disclosure_is_restricted_by_U.S._law._Dissemination
to_non-U.S._persons_whether_in_the_United_States_or_abroad_requires
an_export_license_or_other_authorization.
Contractor_Name:________Raytheon_Company
Contractor_Address:_____6825_Pine_Street,_Suite_340
________________________Mail_Stop_B8
________________________Omaha,_NE_68106
________________________402.291.0100
See_the_AWIPS_II_Master_Rights_File_("Master_Rights_File.pdf")_for
further_licensing_information.
-->
<DerivedParameter abbreviation="MXREF" name="Max 1hr CAPPI" unit="dB" >
<Method name="Alias" >
<Field abbreviation="MAXREF1hr" />
</Method>
</DerivedParameter>

View file

@ -0,0 +1,26 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<!--
This_software_was_developed_and_/_or_modified_by_Raytheon_Company,
pursuant_to_Contract_DG133W-05-CQ-1067_with_the_US_Government.
U.S._EXPORT_CONTROLLED_TECHNICAL_DATA
This_software_product_contains_export-restricted_data_whose
export/transfer/disclosure_is_restricted_by_U.S._law._Dissemination
to_non-U.S._persons_whether_in_the_United_States_or_abroad_requires
an_export_license_or_other_authorization.
Contractor_Name:________Raytheon_Company
Contractor_Address:_____6825_Pine_Street,_Suite_340
________________________Mail_Stop_B8
________________________Omaha,_NE_68106
________________________402.291.0100
See_the_AWIPS_II_Master_Rights_File_("Master_Rights_File.pdf")_for
further_licensing_information.
-->
<DerivedParameter abbreviation="MAXUPHL" name="Max Updraft Helicity" unit="m^2/s^2" >
<Method name="Alias" >
<Field abbreviation="MXUPHL1hr" />
</Method>
</DerivedParameter>

View file

@ -0,0 +1,26 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<!--
This_software_was_developed_and_/_or_modified_by_Raytheon_Company,
pursuant_to_Contract_DG133W-05-CQ-1067_with_the_US_Government.
U.S._EXPORT_CONTROLLED_TECHNICAL_DATA
This_software_product_contains_export-restricted_data_whose
export/transfer/disclosure_is_restricted_by_U.S._law._Dissemination
to_non-U.S._persons_whether_in_the_United_States_or_abroad_requires
an_export_license_or_other_authorization.
Contractor_Name:________Raytheon_Company
Contractor_Address:_____6825_Pine_Street,_Suite_340
________________________Mail_Stop_B8
________________________Omaha,_NE_68106
________________________402.291.0100
See_the_AWIPS_II_Master_Rights_File_("Master_Rights_File.pdf")_for
further_licensing_information.
-->
<DerivedParameter abbreviation="MXUVV" name="Max Updraft Vertical Velocity" unit="m/s" >
<Method name="Alias">
<Field abbreviation="MAXUVV1hr"/>
</Method>
</DerivedParameter>

View file

@ -49,6 +49,9 @@
<ConstantField value="-1e35"/>
<ConstantField value="-1"/>
</Method>
<Method models="HRRR" name="Alias" levels="Skin" >
<Field level="Surface" abbreviation="T"/>
</Method>
<Method models="SREF212" name="Alias">
<Field abbreviation="Tmean"/>
</Method>

View file

@ -0,0 +1,10 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<DerivedParameter abbreviation="WGS1hr" name="Max 1-hr Wind Gust Speed" unit="m/s">
<Method name="Alias" levels="Surface">
<Field abbreviation="WGS1hr" level="10FHAG"/>
</Method>
<Method name="Vector" levels="Surface" >
<Field abbreviation="MAXUW1hr" level="FHAG10" />
<Field abbreviation="MAXVW1hr" level="FHAG10" />
</Method>
</DerivedParameter>

View file

@ -732,6 +732,20 @@
<versionsToKeep>5</versionsToKeep>
<modTimeToWait>00-00:15:00</modTimeToWait>
</rule>
<!-- Purge rule for the HRRR model -->
<rule>
<keyValue>HRRR</keyValue>
<versionsToKeep>4</versionsToKeep>
</rule>
<!-- Purge rule for the ESTOFS model -->
<rule>
<keyValue>estofsUS</keyValue>
<versionsToKeep>2</versionsToKeep>
</rule>
<rule>
<keyValue>estofsPR</keyValue>
<versionsToKeep>2</versionsToKeep>
</rule>
<!-- Purge rule for the GFS199 (Guam-GFSDNG) model -->
<rule>
<keyValue>GFS199</keyValue>

View file

@ -98,13 +98,21 @@ public class PurgeJob extends Thread {
// Flag used to track if this job has failed
boolean failed = false;
startTime = System.currentTimeMillis();
PurgeLogger.logInfo("Purging expired data...", pluginName);
if (this.purgeType.equals(PURGE_JOB_TYPE.PURGE_ALL)) {
PurgeLogger.logInfo("Purging all data...", pluginName);
} else {
PurgeLogger.logInfo("Purging expired data...", pluginName);
}
PluginDao dao = null;
try {
dao = PluginFactory.getInstance().getPluginDao(pluginName);
if (dao.getDaoClass() != null) {
dao.purgeExpiredData();
if (this.purgeType.equals(PURGE_JOB_TYPE.PURGE_ALL)) {
dao.purgeAllData();
} else {
dao.purgeExpiredData();
}
PurgeLogger.logInfo("Data successfully Purged!", pluginName);
@ -121,10 +129,10 @@ public class PurgeJob extends Thread {
"Unable to purge data. This plugin does not specify a record class and does not implement a custom purger.",
pluginName);
} else {
if (this.purgeType.equals(PURGE_JOB_TYPE.PURGE_EXPIRED)) {
dao.purgeExpiredData();
} else {
if (this.purgeType.equals(PURGE_JOB_TYPE.PURGE_ALL)) {
dao.purgeAllData();
} else {
dao.purgeExpiredData();
}
PurgeLogger.logInfo("Data successfully Purged!",

View file

@ -118,28 +118,6 @@ function captureQpidStat() {
numQpidConnections=$( qpid-stat -c | wc -l )
(( numQpidConnections-=3 ))
echo -e "Total Number of QPID Connections: ${numQpidConnections}" >> ${logDirectory}/${nowTimeDate}-qpid-stat.out
if [[ ${numQpidConnections} -ge $(( qpidConnLimit - qpidConnMedAlarm )) && ${numQpidConnections} -lt $(( qpidConnLimit - qpidConnHighAlarm )) ]] ; then
echo -e "\tNOTE: Sending Warning ITO to NCF because number of connections is between $(( qpidConnLimit - qpidConnMedAlarm )) and $(( qpidConnLimit - qpidConnHighAlarm ))" >> ${logDirectory}/${nowTimeDate}-qpid-stat.out
if [[ -f /opt/OV/bin/OpC/opcmsg ]] ; then
/opt/OV/bin/OpC/opcmsg application=QPIDD object=QPIDD msg_text="Number Of Connections To QPID is between $(( qpidConnLimit - qpidConnMedAlarm )) and $(( qpidConnLimit - qpidConnHighAlarm )) : Please check for deadlock condition" severity=Warning msg_grp=AWIPS
else
echo -e "\tERROR - can not find /opt/OV/bin/OpC/opcmsg on $( hostname )" >> ${logDirectory}/${nowTimeDate}-qpid-stat.out
fi
elif [[ ${numQpidConnections} -ge $(( qpidConnLimit - qpidConnHighAlarm )) && ${numQpidConnections} -lt $(( qpidConnLimit - qpidConnCritAlarm )) ]] ; then
echo -e "\tNOTE: Sending Major ITO to NCF because number of connections is between $(( qpidConnLimit - qpidConnHighAlarm )) and $(( qpidConnLimit - qpidConnCritAlarm ))" >> ${logDirectory}/${nowTimeDate}-qpid-stat.out
if [[ -f /opt/OV/bin/OpC/opcmsg ]] ; then
/opt/OV/bin/OpC/opcmsg application=QPIDD object=QPIDD msg_text="Number Of Connections To QPID is between $(( qpidConnLimit - qpidConnMedAlarm )) and $(( qpidConnLimit - qpidConnHighAlarm )) : Please check for deadlock condition" severity=Major msg_grp=AWIPS
else
echo -e "\tERROR - can not find /opt/OV/bin/OpC/opcmsg on $( hostname )" >> ${logDirectory}/${nowTimeDate}-qpid-stat.out
fi
elif [[ ${numQpidConnections} -ge $(( qpidConnLimit - qpidConnCritAlarm )) ]] ; then
echo -e "\tNOTE: Sending CRITIAL ITO to NCF because number of connections is >= $(( qpidConnLimit - qpidConnCritAlarm ))" >> ${logDirectory}/${nowTimeDate}-qpid-stat.out
if [[ -f /opt/OV/bin/OpC/opcmsg ]] ; then
/opt/OV/bin/OpC/opcmsg application=QPIDD object=QPIDD msg_text="Number Of Connections To QPID is >= $(( qpidConnLimit - qpidConnCritAlarm )) -- Take IMMEDIATE action to prevent system failure" severity=Critical msg_grp=AWIPS
else
echo -e "\tERROR - can not find /opt/OV/bin/OpC/opcmsg on $( hostname )" >> ${logDirectory}/${nowTimeDate}-qpid-stat.out
fi
fi
echo >> ${logDirectory}/${nowTimeDate}-qpid-stat.out

View file

@ -61,7 +61,7 @@ listen_addresses = '*' # what IP address(es) to listen on;
# defaults to 'localhost'; use '*' for all
# (change requires restart)
port = 5432 # (change requires restart)
max_connections = 300 # (change requires restart)
max_connections = 400 # (change requires restart)
# Note: Increasing max_connections costs ~400 bytes of shared memory per
# connection slot, plus lock space (see max_locks_per_transaction).
#superuser_reserved_connections = 3 # (change requires restart)

View file

@ -727,3 +727,13 @@ HDS ^(JUTX(([2-4]1)|53)) (.{4}) (..)(..)(..)
# C = West Conus H = Honolulu K = West Atl
NGRID ^(E[HS-V][A-DG-KST][B-T]01) (KWBW) (..)(..)(..)
FILE -overwrite -log -close -edex /data_store/grib2/(\3:yyyy)(\3:mm)\3/\4/RTOFS/\1_\2_\3\4\5_(seq).grib2.%Y%m%d%H
# ESTOFS
# Pattern provided by Joshua.Watson.
NGRID ^(E[EHC][IP][A-Z]88) (KWBM) (..)(..)(..)[^!]*!(grib|grib2)/[^/]*/([^/]*)/#([^/]*)/([0-9]{8})([0-9]{4})(F[0-9]{3})/([^/]*)
FILE -overwrite -log -close -edex /data_store/\6/(\3:yyyy)(\3:mm)\3/\4/\7/GRID\8/\(10)Z_\(11)_\(12)-\1_\2_\3\4\5_(seq).\6.%Y%m%d%H
# HRRR
# Pattern provided by Joshua.Watson.
NGRID ^(Y.C[A-MZ][089][0-9]) (KWBY) (..)(..)(..)[^!]*!(grib|grib2)/[^/]*/([^/]*)/#([^/]*)/([0-9]{8})([0-9]{4})(F[0-9]{3})/([^/]*)
FILE -overwrite -log -close -edex /data_store/\6/(\3:yyyy)(\3:mm)\3/\4/\7/GRID\8/\(10)Z_\(11)_\(12)-\1_\2_\3\4\5_(seq).\6.%Y%m%d%H

View file

@ -24,12 +24,12 @@ BuildRequires: awips2-postgresql = 9.2.3-1.el6
BuildRequires: postgresql = 8.4.13-1.el6_3
BuildRequires: postgresql-devel = 8.4.13-1.el6_3
BuildRequires: postgresql-libs = 8.4.13-1.el6_3
BuildRequires: wxGTK = 2.8.12-1.el6.rf
BuildRequires: wxGTK-devel = 2.8.12-1.el6.rf
BuildRequires: wxGTK >= 2.8.12-1
BuildRequires: wxGTK-devel >= 2.8.12-1
provides: awips2-pgadmin3
requires: awips2-psql = 9.2.3-1
requires: wxGTK = 2.8.12-1.el6.rf
requires: wxGTK >= 2.8.12-1
%description
AWIPS II pgadmin3 Distribution - A custom compilation of the pgadmin3 client compatible with