<?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 class="block-box block-box-classic">
		<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>
		</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 -->