<?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>
	<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 -->