<?php
/*******************************************************************************
 * Copyright (c) 2014-2015 Eclipse Foundation 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://eclipse.org/legal/epl-v10.html
 *
 * Contributors:
 *    Christopher Guindon (Eclipse Foundation) - Initial implementation
 *    Taylor Patterson (Eclipse ICE Committer) - Initial ICE content
 *******************************************************************************/
?>

<!-- Main content area -->
<div id="midcolumn">
	<h1><?php print $pageTitle;?></h1>
	<div id="carousel-example-generic" class="carousel slide"
		data-ride="carousel">
		<!-- Indicators -->
		<ol class="carousel-indicators">
			<li data-target="#carousel-example-generic" data-slide-to="0"
				class="active"></li>
			<li data-target="#carousel-example-generic" data-slide-to="1"></li>
			<li data-target="#carousel-example-generic" data-slide-to="2"></li>
			<li data-target="#carousel-example-generic" data-slide-to="3"></li>
		</ol>

		<!-- Wrapper for slides -->
		<div class="carousel-inner">
			<div class="item active">
				<img width="100%" src="/ice/images/ICETeamTable.png"
					alt="ICE Team Discussion">
				<div class="carousel-caption"></div>
			</div>
			<div class="item">
				<img width="100%" src="/ice/images/visit_and_paraview.png"
					alt="ICE VisIt and Paraview">
				<div class="carousel-caption"></div>
			</div>
			<div class="item">
				<img width="100%" src="/ice/images/snsData.png"
					alt="SNS Data in ICE">
				<div class="carousel-caption"></div>
			</div>
			<div class="item">
				<img width="100%" src="/ice/images/visit_mesh_ice.png"
					alt="Mesh Rendered by VisIt in ICE">
				<div class="carousel-caption"></div>
			</div>
		</div>

		<!-- Controls -->
		<a class="left carousel-control" href="#carousel-example-generic"
			role="button" data-slide="prev"> <span
			class="glyphicon glyphicon-chevron-left"></span>
		</a> <a class="right carousel-control"
			href="#carousel-example-generic" role="button" data-slide="next"> <span
			class="glyphicon glyphicon-chevron-right"></span>
		</a> <img style="float: right; width: 303px; height: 228px"
			alt="ICE Logo" src="/ice/images/ice_logo.png">
		<p>The Eclipse Integrated Computational Environment (ICE) is a
			scientific workbench and workflow environment developed to improve
			the user experience for computational scientists, make it possible
			for developers to deploy rich, graphical, interactive capabilities
			for their science codes, and integrate many different scientific
			computing technologies in one common, cross-platform user
			environment.</p>
		<h3>The Long Version...</h3>
		<p>
			Scientific Computing can be roughly divided into several different
			areas, one of which is Modeling and Simulation (M&S). Modeling and
			Simulation is a field that has existed, from a computing perspective,
			since World War II and finds its roots in government laboratories and
			academia. It is a field that encompasses both the art and the science
			of encoding the physical world into computers. What M&S lacks is good
			usability.<br> Eclipse is not used in modeling and simulation as much
			as it is in other areas, but it is widely known. Several years ago we
			asked the question, “What if the tools in Eclipse that are used for
			authoring scientific software could be repurposed for using
			scientific software?” The result is the Eclipse Integrated
			Computational Environment (ICE); a general purpose, easily extended
			M&S platform that significantly updates the way computational
			scientists interact with their software. It improves productivity and
			streamlines the workflow for computational scientists when they need
			to create input files, launch jobs on local or remote machines, and
			process output. Since it is based on the Eclipse Rich Client
			Platform, developers can update it to support new codes or add new
			tools just as easily as users can perform simulations of nuclear
			fuels or visualize neutron scattering data.
		</p>
		<div class="news-list">
			<h2>
				<a href="/community/news/eclipsenews.php">Announcements</a>
			</h2>
			<div class="news_item">
				<div class="news_item_date">2015/07/25</div>
				<div class="news_item_title">
					<h3>
						<a
							href="https://www.sciencedirect.com/science/article/pii/S0306454915003606">Annals
							of Nuclear Energy Paper Published</a>
					</h3>
				</div>
				<div class="news_item_description">Article describing ICE's Reactor
					Analyzer</div>
			</div>
			<div class="news_item">
				<div class="news_item_date">2015/07/20</div>
				<div class="news_item_title">
					<h3>
						<a
							href="https://www.eclipsecon.org/europe2015/session/brand-new-neutron-reflectivity-simulator-eclipse-ice-and-what-it-took-make-it">
							ICE at EclipseCon Europe</a>
					</h3>
				</div>
				<div class="news_item_description">Jay Jay Billings session receives
					early-bird selection</div>
			</div>
		</div>
	</div>
	<!-- ./end  #midcolumn -->

	<!-- Start of the right column -->
	<div id="rightcolumn">
		<div class="sideitem">
			<h2>Related Links</h2>
			<p align="center">
				<a href="https://science.eclipse.org"> <img
					src="/ice/images/science_wg.png">
				</a>
			</p>
			<ul>
			</ul>
		</div>
		<div class="sideitem">
			<h2>Eclipse ICE on Twitter</h2>
			<a class="twitter-timeline"
				href="https://twitter.com/hashtag/eclipseice"
				data-widget-id="624610866063749121">#eclipseice Tweets</a>
			<script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+"://platform.twitter.com/widgets.js";fjs.parentNode.insertBefore(js,fjs);}}(document,"script","twitter-wjs");</script>
		</div>
	</div>
	<!-- ./end  #rightcolumn -->