#/*******************************************************************************
# * Copyright (c) 2008 IBM Corporation and others.
# * All rights reserved. This program and the accompanying materials
# * are made available under the terms of the Eclipse Public License v1.0
# * which accompanies this distribution, and is available at
# * http://www.eclipse.org/legal/epl-v10.html
# *
# * Contributors:
# *     IBM Corporation - initial API and implementation
# *******************************************************************************/

# ====================================================================
# To code developer:
#   Do NOT change the properties between this line and the
#   "%%% END OF TRANSLATED PROPERTIES %%%" line.
#   Make a new property name, append to the end of the file and change
#   the code to use the new property.
# ====================================================================

# ====================================================================
# %%% END OF TRANSLATED PROPERTIES %%%
# ====================================================================

pluginName = STEM Disease Models Test Suite
providerName = Eclipse.org

# Dublin core
dc_creator_daford = daford
dc_seri1x1_desc = Deterministic SEIR disease model on a single node
dc_seri1x1_title = SEIR 1 x 1
dc_seri1x2_desc = Deterministic SEIR disease model on a 1x2 lattice graph
dc_seri1x2_title = SEIR 1 x 2
dc_seri3x3_desc = Standard SEIR disease model on a 3x3 lattice graph
dc_seri3x3_title = SEIR 3 x 3
dc_seri100x100_desc = Deterministic SEIR disease model on a 100x100 latice graph
dc_seri100x100_title = SEIR 100 x 100

dm_cat = Disease Models
standard_cat = Standard
world_cat = World
