diff --git a/Lectures/Figures/DependenceGraph.pdf b/Lectures/Figures/DependenceGraph.pdf new file mode 100644 index 0000000000000000000000000000000000000000..db55f6bf8e625979222a41e31b35540531b168ed Binary files /dev/null and b/Lectures/Figures/DependenceGraph.pdf differ diff --git a/Lectures/Figures/DependenceOfVariabilities.pdf b/Lectures/Figures/DependenceOfVariabilities.pdf new file mode 100644 index 0000000000000000000000000000000000000000..ad11779937fb8003cc07f5c37b5c51a6c13e4c11 Binary files /dev/null and b/Lectures/Figures/DependenceOfVariabilities.pdf differ diff --git a/Lectures/Figures/ExampleMesh.pdf b/Lectures/Figures/ExampleMesh.pdf new file mode 100644 index 0000000000000000000000000000000000000000..87821e9a2f5f0922e37e79a8888158d3538395c4 Binary files /dev/null and b/Lectures/Figures/ExampleMesh.pdf differ diff --git a/Lectures/Figures/OverviewOfMethodology.pdf b/Lectures/Figures/OverviewOfMethodology.pdf new file mode 100644 index 0000000000000000000000000000000000000000..621daa90b3783226f64fb4dd3207703089043bcf Binary files /dev/null and b/Lectures/Figures/OverviewOfMethodology.pdf differ diff --git a/Lectures/Figures/Plastic.pdf b/Lectures/Figures/Plastic.pdf new file mode 100644 index 0000000000000000000000000000000000000000..c6221df68a8cb3f9e13180913d4107d2c0f53f85 Binary files /dev/null and b/Lectures/Figures/Plastic.pdf differ diff --git a/Lectures/Figures/StressTensor.pdf b/Lectures/Figures/StressTensor.pdf new file mode 100644 index 0000000000000000000000000000000000000000..3096d4ebe0103b57521d0554d41ef2290d09ed9d Binary files /dev/null and b/Lectures/Figures/StressTensor.pdf differ diff --git a/Lectures/Figures/TestSpecimenUniaxial.pdf b/Lectures/Figures/TestSpecimenUniaxial.pdf new file mode 100644 index 0000000000000000000000000000000000000000..2b18503c4366c61e2f97886f158a03101e0131b7 Binary files /dev/null and b/Lectures/Figures/TestSpecimenUniaxial.pdf differ diff --git a/Lectures/Figures/TopologyPatterns.pdf b/Lectures/Figures/TopologyPatterns.pdf new file mode 100644 index 0000000000000000000000000000000000000000..6a3642148b0826a7034ad3feebd8ca2b0247164f Binary files /dev/null and b/Lectures/Figures/TopologyPatterns.pdf differ diff --git a/Lectures/Figures/TriangleElement.pdf b/Lectures/Figures/TriangleElement.pdf new file mode 100644 index 0000000000000000000000000000000000000000..16b79e7eacc3b704324c06568994db3a07ae02d3 Binary files /dev/null and b/Lectures/Figures/TriangleElement.pdf differ diff --git a/Lectures/Figures/Viscoplastic.pdf b/Lectures/Figures/Viscoplastic.pdf new file mode 100644 index 0000000000000000000000000000000000000000..9ba84f95c16244f9e73253b9162d5d4f3b95dd14 Binary files /dev/null and b/Lectures/Figures/Viscoplastic.pdf differ diff --git a/Lectures/Figures/YieldHardeningAndPlastPotential.pdf b/Lectures/Figures/YieldHardeningAndPlastPotential.pdf new file mode 100644 index 0000000000000000000000000000000000000000..b5ff3ac944445ae36aec49a1015088a4000495e2 Binary files /dev/null and b/Lectures/Figures/YieldHardeningAndPlastPotential.pdf differ diff --git a/Lectures/Figures/elementdialog2.png b/Lectures/Figures/elementdialog2.png new file mode 100644 index 0000000000000000000000000000000000000000..f742b4084af320b7ef54843796772b7307c2a5eb Binary files /dev/null and b/Lectures/Figures/elementdialog2.png differ diff --git a/Lectures/L05_ProgramFamilies/ProgramFamilies.pdf b/Lectures/L05_ProgramFamilies/ProgramFamilies.pdf new file mode 100644 index 0000000000000000000000000000000000000000..63383c844aba2b0ff4d54947052b5dc8343aee89 Binary files /dev/null and b/Lectures/L05_ProgramFamilies/ProgramFamilies.pdf differ diff --git a/Lectures/L05_ProgramFamilies/ProgramFamilies.tex b/Lectures/L05_ProgramFamilies/ProgramFamilies.tex new file mode 100755 index 0000000000000000000000000000000000000000..81e05af40782e71fe040d77803c895323477bbba --- /dev/null +++ b/Lectures/L05_ProgramFamilies/ProgramFamilies.tex @@ -0,0 +1,1506 @@ +%\documentclass[handout]{beamer} +\documentclass[t,12pt,numbers,fleqn]{beamer} +%\documentclass[ignorenonframetext]{beamer} + +\newif\ifquestions +%\questionstrue +\questionsfalse + +\usepackage{pgfpages} +\usepackage{hyperref} +\hypersetup{colorlinks=true, + linkcolor=blue, + citecolor=blue, + filecolor=blue, + urlcolor=blue, + unicode=false} +\urlstyle{same} + +\usepackage{booktabs} +\usepackage{hhline} +\usepackage{multirow} +\usepackage{multicol} +\usepackage{array} +\usepackage{listings} +\usepackage{bm} +\usepackage{colortbl} +\usepackage{bnf} +\newcommand{\colA}{2.1cm} +\newcommand{\colB}{6.9cm} +\newcommand{\colC}{1.1cm} %do not need this column if binding time is not listed +\newcommand{\colAwidth}{0.15\textwidth} +\newcommand{\colBwidth}{0.7\textwidth} + +\newcounter{temp} +\setcounter{temp}{0} + +\bibliographystyle{plain} + +%\usetheme{Iimenau} + +\useoutertheme{split} %so the footline can be seen, without needing pgfpages + +%\pgfpagesuselayout{resize to}[letterpaper,border shrink=5mm,landscape] %if this is uncommented, the hyperref links do not work + +\mode<presentation>{} + +\input{../def-beamer} + +\newcommand{\topic}{05 Program Families DRAFT} + +\input{../titlepage} + +\begin{document} + +\input{../footline} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\begin{frame} +\frametitle{Program Families} + +\bi +\item Administrative details +\item Questions? +\item License and copyright +\item Motivation +\item Proposed Family Methods +\item Family of Mesh Generators +\item Family of Linear Solvers +\item Family of Material Behaviour Models +\ei +\end{frame} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\begin{frame} +\frametitle{Administrative Details} + +\bi +\item Add me to your GitHub repos, my GitHub id is \texttt{smiths} +\item Assign me an issue to review your problem statements +\bi +\item Clearly state that you would like me to review your problem statement +\item Include a link to your problem statement +\ei +\item Updates to SRS template +\item Commonality analysis should start from SRS template +\ei + +\end{frame} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\begin{frame} +\frametitle{Administrative Details: Deadlines} +~\newline +\begin{tabular}{l l l} +\textbf{Problem Statement} & Week 02 & Sept 15\\ +\textbf{SRS Present} & Week 04 & Week of Sept 25\\ +\textbf{SRS} & Week 05 & Oct 4\\ +V\&V Present & Week 06 & Week of Oct 16\\ +V\&V Plan & Week 07 & Oct 25\\ +MG Present & Week 08 & Week of Oct 30\\ +MG & Week 09 & Nov 8\\ +MIS Present & Week 10 & Week of Nov 13\\ +MIS & Week 11 & Nov 22\\ +Impl.\ Present & Week 12 & Week of Nov 27\\ +Final Documentation & Week 13 & Dec 6\\ +\end {tabular} + +\end{frame} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\begin{frame} +\frametitle{Questions?} +\begin{itemize} +\item Questions about ... +\end{itemize} +\end{frame} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\begin{frame} +\frametitle{Program Families} + +\begin{itemize} + +\item Can think of general purpose (or multi-purpose) SC software as a program + family +\item Some examples of physical models are also appropriate for consideration as + a family +\item A program family is a set of programs where it makes more sense to develop + them together as opposed to separately +\item Analogous to families in other domains +\begin{itemize} +\item Automobiles +\item Computers +\item ... +\end{itemize} +\item Need to identify the commonalities +\item Need to identify the variabilities +\item Discussed in general in \cite{ClementsAndNorthrop2001,PohlEtAl2005} +\end{itemize} + +\end{frame} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\begin{frame} +\frametitle{Background} + +\begin{itemize} + +\item Program family idea since the 1970s (Dijkstra, Parnas, Weiss, Pohl, ...) - variabilities are often from a finite +set of simple options \cite{Parnas1976, Parnas1979, Dijkstra1972} +\item Families of algorithms and code generation in SC (Carette, ATLAS, Blitz++, ...) - not much emphasis on +requirements \cite{Carette2006, WhaleyEtAl2001, Veldhuizen1998, Blitz2010} +%\item Problem Solving Environments (PSEs) +\item Work on requirements for SC +\begin{itemize} +\item Template for a single physical model \cite{SmithEtAl2007, SmithAndLai2005} +\item Template for a family of multi-purpose tool \cite{Smith2006, + SmithAndChen2004, SmithAndChen2004b} +\item Template for a family of physical models + \cite{SmithMcCutchanAndCarette2017, SmithEtAl2008, McCutchan2007} +\end{itemize} +\end{itemize} + +\end{frame} + + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\begin{frame} + +\frametitle{Motivation} +%:Improve Quality of Product and Process +\begin{itemize} + +\item Requirements documentation +\begin{itemize} +\item Allows judgement of quality %need to know what require, +\item Improves communication +\begin{itemize} +\item Between domain experts% and domain experts %missing models etc. +\item Between domain experts and programmers %experts on num algos +\item Explicit assumptions +\item Range of applicability +%\item Tradeoffs between nonfunctional requirements %ends arguments about best, +% need to know what is most imp, might not need same accuracy for every aspect of the problem +\end{itemize} +%\item Provides a foundation for incremental delivery +\end{itemize} + +\item A family approach, potentially including a DSL to allow generation of specialized programs +\begin{itemize} +\item Improves efficiency of product and process +\item Facilitates reuse of requirements and design, which improves reliability +\item Improves usability and learnability%DSL +%\item Improves learnability for non-experts %DSL +\item Clarifies the state of the art +\end{itemize} + +\end{itemize} + +\end{frame} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\begin{frame} + +\frametitle{Advantages of Program Families to SC?} + +\begin{itemize} +\item Usual benefits +\begin{itemize} +\item Reduced development time +\item Improved quality +\item Reduced maintenance effort +\item Increased ability to cope with complexity +\end{itemize} +\item Reusability +\begin{itemize} +\item Underused potential for reuse in SC +\item Reuse commonalities +\item Systematically handle variabilities +\end{itemize} +\item Usability +\begin{itemize} +\item Documentation often lacking in SC +\item Documentation part of program family methodology +\item Create family members that are only as general purpose as necessary +\end{itemize} +\item Improved performance +\end{itemize} + +\end{frame} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\begin{frame} + +\frametitle{Is SC Suited to a Program Family Approach?} + +Based on criteria from Weiss \cite{ArdisAndWeiss1997, Weiss1997, Weiss1998, + CukaAndWeiss1997,WeissAndLai1999} +\begin{itemize} +\item The redevelopment hypothesis +\begin{itemize} +\item A significant portion of requirements, design and code should be common between family members +\item Common model of software development in SC is to rework an existing program +\item Progress is made by removing assumptions +\end{itemize} + +\item The oracle hypothesis +\begin{itemize} +\item Likely changes should be predictable +\item Literature on SC, example systems, mathematics +\end{itemize} + +\item The organizational hypothesis +\begin{itemize} +\item Design so that predicted changes can be made independently +\item Tight coupling between data structures and algorithms +\item Need a suitable abstraction +\end{itemize} + +\end{itemize} + +\end{frame} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\begin{frame} + +\frametitle{Challenges} + +\begin{enumerate} +\setcounter{enumi}{\value{temp}} +\item Validatable +\begin{itemize} +\item Requirements can be complete, consistent, traceable and unambiguous, but still not validatable +\item Input and outputs are continuously valued variables +%\item Examples continuously valued variables: time, velocity, temperature, displacement, concentration, stress, etc. +%\item Infinite number of inputs and outputs +\item Correct solution is unknown a priori %difficult to have a test oracle +\item Given $dy/dt = f(t, y)$ and $y(t_0) = y_0$, find $y(t_n)$ +%, where $y(t)$ is a function ($y:\mathbb{R} \rightarrow +%\mathbb{R}$), $f(t,y)$ is a function ($f:\mathbb{R}\times \mathbb{R} \rightarrow \mathbb{R}$), $t$ is an independent +%variable (often time), $t_0$ is an initial value for $t$ and $t_n$ is the final value for $t$ +%\item For arbitrary $f(t, y)$ the true solution is unknown, correct value is often not known a priori +%\item Same problem with $Ax = b$ +%\item $\int e^{x^2} dx$ +%\item Passing one test does not imply passing a nearby test +\end{itemize} +\item Abstract +\begin{itemize} +% \item Not difficult to be abstract +\item If too abstract, then difficult to meet NFRs for accuracy and speed +\item Assumptions can help restrict scope, but possibly as much work as solving the original problem +\begin{itemize} +\item $A x = b$ +\item $x^T A x > 0, \forall x$ +\end{itemize} +%say output should be solution, or say cannot compute, possibly with a reason +\item Algorithm selection should occur at the design stage + +\end{itemize} + +\setcounter{temp}{\value{enumi}} +\end{enumerate} + +\end{frame} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\begin{frame} + +\frametitle{Challenges (Continued)} + +\begin{enumerate} +\setcounter{enumi}{\value{temp}} +\item Nonfunctional requirements +\begin{itemize} +\item Proving accuracy requirements with a priori error analysis is a difficult mathematical exercise that generally +leads to weak error bounds +% mention Wilkinson +\item Context sensitive tradeoffs between NFRs can be difficult to specify +\item Absolute quantitative requirements are often unrealistic +% make the point about relative requirements elsewhere +\end{itemize} +\item Capture and Reuse Existing Knowledge +\begin{itemize} +\item Cannot ignore the enormous wealth of information that currently exists %not a green field development +\item A good design will often involve integrating existing software libraries +\item Reuse software and the requirements documentation +% scientific software is stable +\end{itemize} + +\setcounter{temp}{\value{enumi}} +\end{enumerate} + +\end{frame} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\begin{frame} +\frametitle{Overview of Process} + +\begin{center} + \includegraphics[width=1.0\textwidth]{../Figures/Waterfall.pdf} +\end{center} + +\end{frame} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\begin{frame} + +\frametitle{CA to SRS to Design} + +\begin{center} +\includegraphics[width=1.0\textwidth]{../Figures/OverviewOfMethodology.pdf} +\end{center} + +% mention an overview of what goes in the boxes + +\end{frame} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\begin{frame} + +\frametitle{Proposed Methodology} + +\begin{enumerate} + +\item Identify family of interest +\begin{itemize} +\item Specific physical model? +\item Multipurpose tool? +\end{itemize} +\item Commonality analysis +\begin{itemize} +\item Terminology +\item Commonalities +\item Variabilities +\item Parameters of variation +\item Binding time +\end{itemize} +\item Domain Specific Language (DSL) +\item Generation of family members + +\end{enumerate} + +\end{frame} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\begin{frame} + +\frametitle{Commonality Analysis Template} + +From \cite{Smith2006} + +\scalebox{1.0}{ +\begin{minipage}{0.94\columnwidth} +\begin{enumerate} + +\item{Reference Material:} +{a) Table of Contents} +{b) Table of Symbols} +{c) Abbreviations and Acronyms} + +\item{Introduction:} +{a) Purpose of the Document} +{b) Organization of the Document} + +\item{General System Description:} +{a) \structure{Potential} System Contexts} +{b) \structure{Potential} User Characteristics} +{c) \structure{Potential} System Constraints} + +\item Commonalities: +{a) Background Overview} +{b) Terminology Definition} +\structure{c) Goal Statements} +\structure{d) Theoretical Models} + +\item \structure{Variabilities: +{a) Input Assumptions} +{b) Calculation} +{c) Output}} + +\item{Traceability Matrix} + +\item{References} + +\end{enumerate} +\end{minipage} +} +% highlight parts to talk about +\end{frame} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\begin{frame} + +\frametitle{Abstract Requirements} + +% explain how CAnal addresses this challenge +\begin{itemize} +\item Appropriate level of abstraction by refining from goal to theory to input assumptions +\item A goal is a functional objective the software should achieve: \newline +\structure{\textbf{G1:} Find the roots of an equation} +\item Goals are refined into theoretical models: \newline +% presented as they would be presented in a mathematics textbook +\structure{\textbf{T1:} Given a function $f(x)$ and an interval $ \{ x | x_{lower} \leq x_{upper} \} $, +return the points where $f(x) = 0$} +\item Introduce simplifying assumptions to allow theoretical model to be solved:\newline +\structure{\textbf{VA1,2:} $f(x)$ is continuous on the interval and/or $f(x)$ has at least one sign change on the +interval} +%traceability matrix? +\end{itemize} +\end{frame} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\begin{frame} + +\frametitle{Abstract Requirements (Continued)} + +\begin{itemize} +\item Each variability has an associated parameter of variation and a binding time +\begin{itemize} +\item Specification time +\item Compile time +\item Run time +\end{itemize} +\end{itemize} +\end{frame} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\begin{frame} + +\frametitle{Capture Existing Knowledge} + +\begin{itemize} +\item Systematic consideration from general to specific +\item Communication between experts +\item Standard template allows comparison +\item Convenient framework for summarizing existing literature +\item Eventually a library of requirements documentation +% \item Same goal may have different theoretical models +\item CA refined by a family of SRSs +\end{itemize} +\end{frame} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\begin{frame} + +\frametitle{System Requirements Specification (SRS)} + +\begin{itemize} + +\item Based on IEEE Standard 830 and Volere requirements specification template +\item Sections from CA are refined in SRS +\item ``Potential'' descriptions are made specific +\item Variabilities are set +\item Binding times are set + +\end{itemize} + +\end{frame} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\begin{frame} + +\frametitle{SRS Template} + +\scalebox{1.0}{ +\begin{minipage}{0.94\columnwidth} +\begin{enumerate} + +\item{Reference Material}%: +%{a) Table of Contents} +%{b) Table of Symbols} +%{c) Abbreviations and Acronyms} + +\item{Introduction}%: +%{a) Purpose of the Document} +%{b) Scope of the Software Product} +%{c) Organization of the Document} + +\item{General System Description}%: +%{a) System Context} +%{b) User Characteristics} +%{c) System Constraints} + +\item {Specific System Description:} +{a) Background Overview,} +{b) Terminology Definition,} +{c) Goal Statements} +{d) Theoretical Models,} +{e) Assumptions,} +{f) Data Constraints,} +{g) System Behaviour} + +\structure{\item Non-functional Requirements: +{a) Accuracy of Input Data,} +{b) Sensitivity of the Model,} +{c) Tolerance of Solution,} +{d) Performance,} +{...} +{i) Portability,}} + +\structure {\item {Solution Validation Strategies,}} + +\item{Other System Issues:} +%{ Open Issues} +%{ Off-the-Shelf Solutions} +%{ New Problems} +%{ Waiting Room} + +\item{Traceability Matrix} + +%\item List of Possible Changes in the Requirements + +%\item{Values of Auxiliary Constants} + +%\item{References} + +\end{enumerate} +\end{minipage} +} + +\end{frame} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\begin{frame} + +\frametitle{NFRs} + +\begin{itemize} + +\item Rather than absolute quantification of NFRs, use relative comparison between other program family members +\item Specify requirements in big O notation +% makes the requirement validatable +%\item Identify benchmark test problems %system test plan +%\item A posteriori description, rather than a priori specification +\item Relative importance between NFRs using Analytic Hierarchy Process (AHP) \cite{Saaty1980} +\begin{itemize} +\item Addresses challenge of comparing attributes that are measured in different (or hard to quantify) units +\item Series of pair-wise comparisons between attributes +\item 1 for equal importance, 3 for moderately strong importance, ..., 9 for extreme importance +\end{itemize} + +\end{itemize} + +\end{frame} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\begin{frame} + +\frametitle{Validatable Requirements} + +\begin{itemize} + +%\item Rather than absolute quantification of NFRs, use relative comparison between other program family members +% makes the requirement validatable +\item Relative comparison between programs is a validatable requirement +\item Focus on a posteriori description, rather than a priori specification +% experiment with the software, as experiment with nature +\item Solution validation strategies +\begin{itemize} +\item Solve using different techniques +\item Identify benchmark test problems %system test plan +\item Test cases built starting from assumed solutions (Method of Manufactured Solutions) +\item Partially validate for a simpler subset where the solution is known +\end{itemize} + +\end{itemize} + +\end{frame} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\begin{frame} +\frametitle{Mesh Generating Software} +\begin{figure} +\begin{center} +\rotatebox{0} +{ + \includegraphics[width=0.9\textwidth]{../Figures/ExampleMesh.pdf} +} +%\caption{Example finite element mesh} +\end{center} +\end{figure} + +\end{frame} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\begin{frame} +\frametitle{Commonality Analysis for a Mesh Generator} + +From Chen's work \cite{Chen2003, SmithAndChen2004, SmithAndChen2004b}. +Alternate approach in \cite{BastarricaAndHitschfeld2006, RosselEtAl2014, + BastarricaAndHitschfeld-Kahler2004, + Bastarrica2002, BastarricaAndHitschfeld2004} + +\begin{itemize} + +\item Terminology +\begin{itemize} +\item requirement +\item structured mesh, ... +\end{itemize} + +\item Commonalities +\begin{itemize} +\item discretization +\item input from user is required, ... +\end{itemize} + +\item Variabilities +\begin{itemize} +\item shape of elements +\item coordinate system used, ... +\end{itemize} + +\item Parameters of variation +\begin{itemize} +\item line, triangle, quadrilateral, tetrahedral, hexahedral +\item Cartesian, polar, spherical, ... +\end{itemize} + +\end{itemize} + +\end{frame} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\begin{frame} +\frametitle{Definition of a Mesh} +Let $\Omega$ be a closed bounded domain in $\mathbb{R}$ or $\mathbb{R}^2$ or $\mathbb{R}^3$ +and let $K$ +be a simple shape, such as a line segment in 1D, a triangle or a quadrilateral in 2D, or a tetrahedron or hexahedron +in 3D. A mesh of $\Omega$, denoted by $\tau$, has the following properties: +\begin{enumerate} +\item $\Omega \approx \cup(K | K \epsilon \tau : K)$, where $\cup$ is first closed and then opened +\item the length of every element $K$, of dimension 1, in $\tau$ is greater than zero +\item the interior of every element $K$, of dimension 2 or greater, in $\tau$ is nonempty +\item the intersection of the interior of two elements is empty +\end{enumerate} +\end{frame} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\begin{frame} +\frametitle{Example Commonality} + +\newcommand{\colACwidth}{0.25\textwidth} +\newcommand{\colBCwidth}{0.7\textwidth} + +\begin {tabular}{| p{\colACwidth} | p{\colBCwidth}|} +\hline +{\bf Item Number} & C1\\ +\hline +{\bf Description} & A mesh generator discretizes a given computational domain (closed boundary $\Omega$) into a covering +up of a finite number of simpler shapes.\\ +\hline +{\bf Related Variability} & V6, V8, V12, V14, V15, V16, V17, V18\\ +\hline +{\bf History} & Created - May 7, 2004\\ +\hline +\end {tabular} + +\end{frame} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\begin{frame} + +\frametitle{Mesh Generator (MG) Goals} + +\begin{enumerate}[G1] + +\item Input spatial domain $\Omega$ output a mesh $M$ that covers this domain. + +\item Transform information on the materials, material properties and the +locations of the different materials + +\item Transform information on the boundary condition types, values and locations + +\item Transform system information, such as numerical algorithm parameters +%values needed by the subsequent +%processing step (for instance initial time, time step size, degree of implicitness, etc.) + +\end{enumerate} + +\end{frame} + +% TO DO - add a slide for the theoretical model? - no room +% TO DO - mention output file format variability via XSLT? - mention during talk, but no room on slides +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\begin{frame} + +\frametitle{Element Variability} + +Location of nodes: sequence of LocationT \\ +Number of dof at nodes: sequence of $\mathbb{N}$ \\ +LocationT = tuple of ($L_1: \mbox{natT}$, $L_2: \mbox{natT}$, $L_3: \mbox{natT}$)\\ +natT = \{ $s: \mathbb{R} | 0 \leq s \leq 1 : s$ \}\\ + +\begin{center} +%\rotatebox{-90} +{ + \includegraphics[width=0.5\textwidth]{../Figures/TriangleElement.pdf} +} +\end{center} + +\end{frame} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\begin{frame} + +\frametitle{Local Topology Variability} + +\begin{center} +{ +\includegraphics[width=0.65\textwidth]{../Figures/TopologyPatterns.pdf} +} +\end{center} + +\end{frame} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\begin{frame}[fragile] + +\frametitle{DSL Using XML} + +\lstset{language=XML,linewidth=.9\textwidth,xleftmargin=0.5cm} +\begin{lstlisting}%[frame=single] + +<elementSet> + <geometrySpec> + <shape>triangle1</shape> + <nodeGeo count="3"> + <node id="1"> + <location>1,0,0</location> + </node> + <node id="2"> + <location>0,1,0</location> + </node> + ... + </nodeGeo> + </geometrySpec> +</elementSet> +\end{lstlisting} + +\end{frame} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\begin{frame} + +\frametitle{Proof of Concept Implementation} + +From Cao's work \cite{Cao2006, SmithMcCutchanAndCao2007} +\begin{itemize} +\item XML document that customizes a Java object +\item The Java object customizes the general purpose MG as it is loaded +\item General purpose MG +\begin{itemize} +\item All variabilities bound at run-time +\item Corresponds to an empty XML specification +\end{itemize} +\end{itemize} + +\begin{center} +{ +\includegraphics[width=0.4\textwidth]{../Figures/elementdialog2.png} +} +\end{center} + +\end{frame} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\begin{frame} +\frametitle{Linear Systems of Equations} + +$$A x = b$$ + +Commonality analysis presented in \cite{Smith2006} + +\end{frame} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%\begin{frame} + +%\frametitle{Terminology} + +%\begin{tabular}{ l p{5.5cm}} +%$n: \mathbb{N}$ & number of linear equations and the number of unknowns\\ +%$A: \mathbb{R}^{n \times n}$ & $n \times n$ real matrix\\ +%$x: \mathbb{R}^{n \times 1}$ & $n \times 1$ real column vector\\ +%$b: \mathbb{R}^{n \times 1}$ & $n \times 1$ real column vector\\ +%$I: \mathbb{R}^{n \times n}$ & an $n \times n$ matrix where all entries are $0$, except for the diagonal entries, which +%are $1$\\ +%$A^{-1}: \mathbb{R}^{n \times n}$ & the inverse matrix, with the property that $A^{-1} A = I$\\ +%$|| v || $ & the norm (estimate of magnitude) of vector $v$\\ +%residual & $|| b - A x ||$\\ +%singular & matrix $A$ is singular if $A^{-1}$ does not exist\\ +%\end{tabular} + +%\end{frame} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\begin{frame} + +\frametitle{Goal and Theoretical Model} + +\textbf{G1}: Given a system of $n$ +linear equations represented by matrix $A$ and column vector $b$, return $x$ such that $A x = b$, if possible + +\textbf{T1}: Given square matrix $A$ and column vector $b$, the possible +solutions for $x$ are as follows: + +\begin{enumerate} +\item A unique solution $x = A^{-1} b$, if $A$ is nonsingular +\item An infinite number of solutions if $A$ is singular and $b \in span(A)$ +\item No solution if $A$ is singular and $b \notin span(A)$ +\end{enumerate} + +\end{frame} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\begin{frame} + +\frametitle{Variabilities for Input Assumptions} + +\begin{tabular}{| p{\colA} | p{\colB} | } +\hline +\textbf{Variability} & \textbf{Parameter of Variation} \\ +\hline +Allowed structure $A$ & Set of \{ full, sparse, banded, tridiagonal, block triangular, ..., +%block structured, diagonal, upper triangular, lower triangular, +Hessenberg \} \\ +\hline +Allowed definiteness $A$ & Set of \{ not definite, positive definite, ..., +%positive semi-definite, negative definite, +negative semi-definite \} \\ +\hline +Allowed class of $A$ & Set of \{ diagonally dominant, Toeplitz, Vandermonde \} \\ +\hline +Symmetry\newline assumed? & boolean \\ +\hline +Possible values for $n$ & set of $\mathbb{N}$ \\ +\hline +Possible entries in $A$ & set of $\mathbb{R}$ \\ +\hline +... & ... \\ +%Possible entries in $b$ & set of $\mathbb{R}$ \\ +%\hline +%Source\newline of input & Set of \{ from a file, through the user interface, passed in memory \} \\ +%\hline +%Encoding of input & Set of \{binary, text \} \\ +%\hline +%Format\newline of input $A$ & Set of \{arbitrary, by row, by column, by diagonal \} \\ +%\hline +%Format\newline of input $b$ & Set of \{arbitrary, ordered \} \\\hline +\end{tabular} + +\end{frame} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\begin{frame} + +\frametitle{Variabilities for Calculation} + +\begin{tabular}{| p{\colA} | p{\colB} | } +\hline +\textbf{Variability} & \textbf{Parameter of Variation} \\ +\hline +Check input? & boolean (false if the input is assumed to satisfy the input assumptions)\\ +\hline +Exceptions generated? & boolean (false if the goal is non-stop arithmetic)\\ +\hline +Norm used for residual & Set of \{1-norm, 2-norm, $\infty$-norm \} \\ +\hline +\end{tabular} + +% mention turning off input checking helps with problem of theoretical model refined by assumpts + +\end{frame} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\begin{frame} + +\frametitle{Variabilities for Output} + +\begin{tabular}{| p{\colA} | p{\colB} | } +\hline +\textbf{Variability} & \textbf{Parameter of Variation} \\ +\hline +Destination for output $x$ & Set of \{ to file, to screen, to memory \} \\ +\hline +Encoding of output $x$ & Set of \{binary, text \} \\ +\hline +Format of output $x$ & Set of \{arbitrary, ordered \} \\ +\hline +Output residual & boolean (true if the program returns the residual) \\ +\hline +Possible entries in $x$ & set of $\mathbb{R} \cup \{- \infty, \infty, undef \}$ \\ +\hline +\end{tabular} + +\end{frame} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\begin{frame} + +\frametitle{Analytic Hierarchy Process} + +\begin{itemize} +\item Example 1 +\begin{itemize} +\item Embedded real-time system for digital signal processing +\item $n = 10$ +\item $A$ is assumed to be Toeplitz +\end{itemize} +\end{itemize} + +\begin{tabular}{| l | l | l | l | l |} +\hline +~ & \textbf{Speed} & \textbf{Accuracy} & \textbf{Portability} & \textbf{Priority}\\ +\hline +\textbf{Speed} & 1 & 3 & 5 & 0.64\\ +\textbf{Accuracy} & 1/3 & 1 & 3 & 0.26\\ +\textbf{Portability} & 1/5 & 1/3 & 1 & 0.11\\ +\hline +\end{tabular} + +\end{frame} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%\begin{frame} + +%\frametitle{AHP Continued} + +%\begin{itemize} +%\item Example 2 +%\begin{itemize} +%\item Structural mechanics software for education +%\item $10 \leq n \leq 1000$ +%\item $A$ is assumed to be positive definite +%\item Would have different relative priorities +%\end{itemize} +%\end{itemize} + +%\end{frame} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\begin{frame} + +\frametitle{Solution Validation Strategies} + +\begin{itemize} +\item Create test cases with known solutions +\begin{itemize} +\item Assume $A$ and $x$, calculate $b$ +\item Given $A$ and $b$ calculate $x^*$ and compare to the assumed $x$ +\end{itemize} +\item Comparison with Matlab +\item Comparison with NAG library +\item Where possible compare solution to interval arithmetic solution +\item Experiments to describe how accuracy changes with increasing condition number +\end{itemize} + +\end{frame} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\begin{frame} + +\frametitle{Connection to Design} + +\begin{itemize} + +\item Abstract requirements to concrete design decisions +%\item Software packages likely already exist within the program family +\item Reuse existing packages within the program family +\item Summarize existing software by the parameters of variation and binding time +%\item Run time binding can often be changed to specification time binding +\item If functional requirements match, then use NFRs +\begin{itemize} +\item AHP to compare each design against each of the NFRs %as done in SRS +%cols and rows are des alternatives, compared against a given NFR +%repeat for each NFR +\item Contribution of each NFR for each design alternative is found by multiplying the contribution of +each alternative to the given NFR with the corresponding priority of that NFR +\item Sum the contributions +\item The highest overall score is the ``winning'' alternative +\end{itemize} + +\end{itemize} + +\end{frame} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\begin{frame} + +\frametitle{A Family of Material Models} + +From McCutchan's work \cite{CaretteEtAl2008, SmithMcCutchanAndCao2007, + SmithEtAl2008, CaretteEtAl2007_TR, SmithMcCutchanAndCarette2017, McCutchan2007} + +\begin{center} +{ +\includegraphics[width=0.5\textwidth]{../Figures/TestSpecimenUniaxial.pdf} +} +\end{center} + +\begin{center} +\begin{tabular}{cc} +\includegraphics[width=0.45\textwidth]{../Figures/Plastic.pdf} & +\includegraphics[width=0.45\textwidth]{../Figures/Viscoplastic.pdf}\\ +\end{tabular} +\end{center} + +\end{frame} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\begin{frame} + +\frametitle{Terminology Definitions} + +\begin{minipage}{\textwidth} +\begin{tabular}{| p{\colAwidth} | p{\colBwidth}|} +\hline +\rowcolor[gray]{0.9} +Label: & D\_YieldFunction\\ \hline +Symbol: & $F = F(\bm{\sigma}, \kappa)$\\ \hline +Type: & $(\mbox{tensor2DT} \times \mathbb{R}) \rightarrow \mathbb{R}$\\ \hline +%Units: & --\\ \hline +Related: & {D\_Stress}, {D\_HardeningParameter}\\ \hline %originally related items, shorted for space +Sources: & ...\\ +\hline Descrip: & The yield function defines a surface $F = 0$ in the six dimensional stress space ...\\ +%\hline History: & Created -- June 15, 2007\\ +\hline +\end{tabular} +\end{minipage} + +\begin{center} +{ +\includegraphics[width=0.35\textwidth]{../Figures/YieldHardeningAndPlastPotential.pdf} +} +\end{center} + +\end{frame} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\begin{frame} + +\frametitle{Goal Statement} + +\noindent +\begin{minipage}{\textwidth} +\begin{tabular}{| p{\colAwidth} | p{\colBwidth}|} +\hline +\rowcolor[gray]{0.9} +Label: & G\_StressDetermination\\ \hline +Descrip: & Given the initial stress and the deformation history of a material particle, determine the stress +within the material particle.\\ +\hline +Refine: & {T\_ConstitEquation}\\ \hline +%History: & Created -- June 8, 2007\\ \hline +\end{tabular} +\end{minipage} + +\begin{center} +{ +\includegraphics[width=0.5\textwidth]{../Figures/StressTensor.pdf} +} +\end{center} + +\end{frame} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\begin{frame} + +\frametitle{Assumptions} + +\begin{minipage}{\textwidth} +\begin{tabular}{| p{\colAwidth} | p{\colBwidth}|} +\hline +\rowcolor[gray]{0.9} +Label: & A\_AdditivityPostulate\\ \hline +Related: & {D\_StrainRate}\\ \hline +Equation: & $\dot{\bm{\epsilon}} = \dot{\bm{\epsilon}}^e + \dot{\bm{\epsilon}}^{\mathit{vp}}$\newline +with the following types and units\newline +$\dot{\bm{\epsilon}}: \mbox{tensor2DT}$ (1/t) (1/s)\newline +$\dot{\bm{\epsilon}}^e: \mbox{tensor2DT}$ (1/t) (1/s)\newline +$\dot{\bm{\epsilon}}^{\mathit{vp}}: \mbox{tensor2DT}$ (1/t) (1/s)\\ \hline +Descrip: & The total strain rate ($\dot{\bm{\epsilon}}$) is assumed to decompose into elastic +($\dot{\bm{\epsilon}}^e$) and viscoplastic ($\dot{\bm{\epsilon}}^{\mathit{vp}}$) +strain rates.\\ \hline +Rationale & This is a standard assumption for elastoplastic and elastoviscoplastic materials. The +appropriateness of this assumption is born out by the success of theories built upon it.\\ \hline +Source: & [6, page 339]; [7, page 181]\\ \hline %references hard-coded +%History: & Created -- June 11, 2007\\ \hline +\end{tabular} +\end{minipage} + +\end{frame} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\begin{frame} + +\frametitle{Theoretical Model} + +\begin{minipage}{\textwidth} +\begin{tabular}{| p{\colAwidth} | p{\colBwidth}|} +\hline +\rowcolor[gray]{0.9} +Label: & T\_ConstitEquation\\ +\hline +Related: & {A\_CauchyStress}, {A\_DeformationHistory}, {A\_PerzynaConstit}, {A\_AdditivityPostulate}, +{A\_ElasticConstit}, {A\_DescriptionOfMotion}, {V\_MaterialProperties}\\ +\hline +Input: & $\bm{\sigma}_0: \mbox{tensor2DT}$ (StressU) (Pa)\newline +$t_{\mathit{begin}}: \mathbb{R}$ (t) (s) \newline +$t_{\mathit{end}}: \mathbb{R} $ (t) (s) \newline +$\dot{\bm{\epsilon}}(t) : \{ t: \mathbb{R} | t_{\mathit{begin}} \leq t \leq t_{\mathit{end}} : t \} \rightarrow +\mbox{ } \mbox{ } \mbox{ tensor2DT}$ (1/t) (1/s)\newline +$\mathit{mat\_prop\_val}: \mbox{string} \rightarrow \mathbb{R}$\newline +$E: \mathbb{R}^{+}$ (StressU) (Pa)\newline +$\nu: \mbox{poissonT}$ (dimensionless) +\\ +\hline +\end{tabular} +\end{minipage} + +\end{frame} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\begin{frame} + +\frametitle{Theoretical Model Continued} + +\begin{minipage}{\textwidth} +\begin{tabular}{| p{\colAwidth} | p{\colBwidth}|} +\hline +\rowcolor[gray]{0.9} +Label: & T\_ConstitEquation\\ +\hline +Output: & $\bm{\sigma}(t): \{ t: \mathbb{R} | t_{\mathit{begin}} \leq t \leq t_{\mathit{end}} : t \} \rightarrow +\mbox{tensor2DT}$ such that +$$\dot{\bm{\sigma}} = \mathbf{D} \left ( \dot{\bm{\epsilon}} - \gamma < \phi (F(\bm{\sigma},\kappa) ) > +\frac { +\partial Q (\bm{\sigma})}{ +\partial \bm{\sigma}} \right ) +$$ +and $\bm{\sigma}(t_{\mathit{begin}}) = \bm{\sigma}_0$, +the components of $\bm{\sigma}$ have the units of StressU (Pa)\\ +\hline +Derive: & The governing differential equation is found by first solving for $\dot{\bm{\epsilon}}^e$ +in {A\_AdditivityPostulate} and then ...\\ +\hline +Descrip: & The theoretical model is only completely defined once the associated +variabilities~({V\_MaterialProperties}) that define the +material have been set. ...\\ +\hline History: & Created -- June 14, 2007\\ +\hline +\end{tabular} +\end{minipage} + +\end{frame} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\begin{frame} + +\frametitle{Variabilities} + +\begin{itemize} +\item $F = F(\bm{\sigma}, \kappa): \mathbb{R}^6 \times \mathbb{R} \rightarrow \mathbb{R}$ +\item $Q = Q(\bm{\sigma}): \mathbb{R}^6 \rightarrow \mathbb{R}$ +\item $\kappa = \kappa(\bm{\epsilon}^{\mathit{vp}}): \mathbb{R}^6 \rightarrow \mathbb{R}$ +\item $\phi = \phi(F): \mathbb{R} \rightarrow \mathbb{R}$ +\item $\gamma: \mathbb{R}$ +\item $\mathit{mat\_prop\_names}: \mbox{set of string}$ +\end{itemize} + +\end{frame} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\begin{frame} + +\frametitle{Dependency Graph} %between commonalities + +\begin{center} +{ +\includegraphics[width=1\textwidth]{../Figures/DependenceGraph.pdf} +} +\end{center} + +\end{frame} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\begin{frame} + +\frametitle{Dependency Graph Between Commonalities and Variabilities} + +\begin{center} +{ +\includegraphics[width=1\textwidth]{../Figures/DependenceOfVariabilities.pdf} +} +\end{center} + +\end{frame} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\begin{frame} + +\frametitle{Example} + +\begin{minipage}{\textwidth} +\begin{tabular}{| p{0.24\textwidth} | p{0.65\textwidth}|} +\hline +\rowcolor[gray]{0.9} +Label: & E\_StrainHardening\\ \hline +{V\_MatName} & $\mathit{name = }$``Strain-Hardening Viscoelastic''\\ +\hline +{V\_YieldFunct} & $F = q \kappa^{\frac{n-1}{m}}$ (StressU) (Pa)\\ \hline +{V\_PlasticPot} & $Q = q$ (StressU) (Pa)\\ \hline +{V\_HardParam} & $\kappa = \epsilon_q^{\mathit{vp}}$ (L/L) (m/m)\\ +\hline +{V\_Phi} & $\phi = F^{\frac{m}{n}}$ ($\mbox{StressU}^{\frac{m}{n}}$) ($\mbox{Pa}^{\frac{m}{n}}$)\\ +\hline +{V\_FluParam} & $\gamma = n A^{\frac{1}{n}}$ ($\mbox{StressU}^{-m} \mbox{t}^{-1}$) ($\mbox{Pa}^{-m} \mbox{s}^{-1}$)\\ \hline +{V\_MatProps} & $\mathit{mat\_prop\_names} = $ \{``$A$'', ``$m$'', ``$n$'' \}, where the type of the +material properties are ...\\ +%There is likely an upper limit on the values for $m$ and $n$, but at this time the value of these limits is unclear. +%With respect to units, $m$ and $n$ do not have units and $A$ has units of $\mbox{StressU}^{-m} \mbox{t}^{-1}$ ($\mbox{Pa}^{-m}%% +%\mbox{s}^{-1}$) +\hline +{V\_Description} & $\mathit{descript =}$ ``This constitutive equation combines a power-law viscoelastic +material with a strain hardening (softening) material. ...'' +\\ \hline +%Source & \cite{Smith2001} +%\\ \hline +%History & Created -- Sept 21, 2007\\ \hline +\end{tabular} +\end{minipage} + +\end{frame} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\begin{frame} + +\frametitle{Code Generation} + +\begin{itemize} +\item Specify variabilities +\item Symbolically calculate terms needed by numerical algorithm, including $\frac{ \partial Q}{ \partial +\bm{\sigma}}$, $\frac{\partial F}{\partial \bm{\sigma}}$, etc. +\item Symbolic processing avoids tedious and error-prone hand calculations +\begin{itemize} +\item Reduces workload +\item Allows non-experts to deal with new problems +\item Increases reliability +\end{itemize} +\item Use Maple Computer Algebra System for model manipulation +\item Convert math expressions into C expressions using ``CodeGeneration'' +\item Inline into a C++ class defining the material model +\item A finite element program can this interface to realize the numerical algorithm +\end{itemize} + +\end{frame} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\begin{frame}[fragile] + +\frametitle{BNF of DSL for $F$} + +\begin{grammar} +[(colon){$\rightarrow$}] +[(semicolon){$|$}] +[(comma){}] +[(period){\\}] +[(quote){\begin{bf}}{\end{bf}}] +[(nonterminal){$\langle$}{$\rangle$}] +<expression>:<number>;\\ +(<expression>);\\ +<expression>,\^{ },<expression>;\\ +<expression>,$*$,<expression>;\\ +\end{grammar} +~~~~~~~... +\begin{grammar} +[(colon){$\rightarrow$}] +[(semicolon){$|$}] +[(comma){}] +[(period){\\}] +[(quote){\begin{bf}}{\end{bf}}] +[(nonterminal){$\langle$}{$\rangle$}] +<simulation-variable-F>;<user-defined-constants>. +<simulation-variable-F>:"Kappa";<simulation-variable-stress>;<simulation-variable-stress-macros>. +<simulation-variable-stress>:"SigmaXX";"SigmaYY";"SigmaZZ";"SigmaXY";\\ +"SigmaYZ";"SigmaXZ". +<simulation-variable-stress-macros>:"Sxx";"Syy";"Szz";"Sxy";"Syz";"Sxz";"Sm";"J2";"J3";"q". +<user-defined-constants>:<string>. +\end{grammar} + +\end{frame} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\begin{frame} +\frametitle{Concluding Remarks} +\begin{itemize} +\item Case studies of applying software engineering methodologies to mesh generating systems and linear solvers +\item Appropriate and advantageous to apply program family strategy +\item Challenges for software engineers +\item General purpose scientific software is best studied as a program family +\begin{itemize} +\item Variabilities are assumptions about problems that can be handled +\item Derive requirements from commonality analysis +\end{itemize} +\item Eventually hope for automatic code generation +\end{itemize} +\end{frame} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\begin{frame} + +\frametitle{Concluding Remarks (Continued)} + +A new methodology for documenting requirements for general purpose scientific computing software + +\setcounter{temp}{0} + +\begin{enumerate} +\setcounter{enumi}{\value{temp}} + +\item Validatable requirements +\begin{itemize} +\item Relative comparison between program family members +\item Focus on description rather than specification +\item Solution validation strategy +\end{itemize} +\item Abstract +\begin{itemize} +\item Refine goal statement to theoretical model to input assumptions +\item In some cases one may want to turn off input checking +\item Connection to design +\end{itemize} + +\setcounter{temp}{\value{enumi}} +\end{enumerate} + +\end{frame} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\begin{frame} + +\frametitle{Concluding Remarks (Continued)} + +\begin{enumerate} +\setcounter{enumi}{\value{temp}} + +\item NFRs +\begin{itemize} +\item Relative comparison +\item AHP +\end{itemize} +\item Capture and reuse +\begin{itemize} +\item Systematic consideration from general to specific +\item CA refined by a family of SRSs +\item CA and SRS summarize existing knowledge and currently available software +\item Standard template allows comparison +\item Convenient framework for summarizing existing literature +\end{itemize} + +\setcounter{temp}{\value{enumi}} +\end{enumerate} + +\end{frame} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\begin{frame} + +\frametitle<presentation>{Concluding Remarks} + +\begin{itemize} +\item A new template for a family of models of physical phenomena +\item Refinement of \structure{Goals} to \structure{Theoretical Models} using \structure{Data Definitions} and +\structure{Assumptions} +\item \structure{Variabilities} are identified in the Theoretical Model +\item A constitutive equation can be written using a (declarative) DSL and the code can be generated +\item A DSL has been built, using Maple, for a virtual material testing laboratory +\end{itemize} + +\end{frame} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\begin{frame} + +\frametitle<presentation>{Concluding Remarks} + +\begin{itemize} +\item SC software is a great candidate for development as a program family +\item Produce programs that are as special or general purpose as needed % run time bindings +\item Improve reusability, usability and reliability +\item Potential to improve performance +\item A commonality analysis facilitates the design of a DSL +\item Symbolic processing and code generation are very useful techniques +\item \structure{We will return to code generation later} +\end{itemize} + +\end{frame} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\begin{frame}[allowframebreaks] +\frametitle{References} + +\bibliography{../../ReferenceMaterial/References} + +\end{frame} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\end{document} \ No newline at end of file diff --git a/ReferenceMaterial/AsSubmitted_SmithAndChen.pdf b/ReferenceMaterial/AsSubmitted_SmithAndChen.pdf new file mode 100644 index 0000000000000000000000000000000000000000..b2fdf4b7ff0e889581bf166109049f663b4e3b72 Binary files /dev/null and b/ReferenceMaterial/AsSubmitted_SmithAndChen.pdf differ diff --git a/ReferenceMaterial/CAS 04-10-SS.pdf b/ReferenceMaterial/CAS 04-10-SS.pdf new file mode 100644 index 0000000000000000000000000000000000000000..4fabbc1303e69fbe5b6b0966378badc35f2730a2 Binary files /dev/null and b/ReferenceMaterial/CAS 04-10-SS.pdf differ diff --git a/ReferenceMaterial/Carette2006.pdf b/ReferenceMaterial/Carette2006.pdf new file mode 100644 index 0000000000000000000000000000000000000000..428e95364e84dcbd9aa916cd9637197a2f75b9c8 Binary files /dev/null and b/ReferenceMaterial/Carette2006.pdf differ diff --git a/ReferenceMaterial/CaretteEtAl2008_AsPublished.pdf b/ReferenceMaterial/CaretteEtAl2008_AsPublished.pdf new file mode 100644 index 0000000000000000000000000000000000000000..adf9551db3a6c2623760673581caca1fb180328d Binary files /dev/null and b/ReferenceMaterial/CaretteEtAl2008_AsPublished.pdf differ diff --git a/ReferenceMaterial/JohnMcCutchanThesis.pdf b/ReferenceMaterial/JohnMcCutchanThesis.pdf new file mode 100644 index 0000000000000000000000000000000000000000..11de2ec50a2db58d619c36dde475a769097c00c0 Binary files /dev/null and b/ReferenceMaterial/JohnMcCutchanThesis.pdf differ diff --git a/ReferenceMaterial/ProgFamiliesInSciComp_CameraReady.pdf b/ReferenceMaterial/ProgFamiliesInSciComp_CameraReady.pdf new file mode 100644 index 0000000000000000000000000000000000000000..5364cbbd40473bbdf6ef85329d13ee75cbe94dc2 Binary files /dev/null and b/ReferenceMaterial/ProgFamiliesInSciComp_CameraReady.pdf differ diff --git a/ReferenceMaterial/References.bib b/ReferenceMaterial/References.bib index d0e27f5e0dade8f5435410ec952d65a1bbdae360..0c9c1214cd0d211cf56a94d8c86dad221b560095 100644 --- a/ReferenceMaterial/References.bib +++ b/ReferenceMaterial/References.bib @@ -2,13 +2,390 @@ %% http://bibdesk.sourceforge.net/ -%% Created for Spencer Smith at 2017-09-14 15:18:12 -0400 +%% Created for Spencer Smith at 2017-09-14 16:53:00 -0400 %% Saved with string encoding Unicode (UTF-8) +@inproceedings{BastarricaAndHitschfeld-Kahler2004, + Author = {Bastarrica, M Cecilia and Hitschfeld-Kahler, Nancy}, + Booktitle = {International Meshing Roundtable}, + Date-Added = {2017-09-14 20:51:36 +0000}, + Date-Modified = {2017-09-14 20:51:36 +0000}, + Organization = {Citeseer}, + Pages = {203--212}, + Title = {An Evolvable Meshing Tool Through a Flexible Object-Oriented Design.}, + Year = {2004}, + Bdsk-File-1 = {YnBsaXN0MDDUAQIDBAUGJCVYJHZlcnNpb25YJG9iamVjdHNZJGFyY2hpdmVyVCR0b3ASAAGGoKgHCBMUFRYaIVUkbnVsbNMJCgsMDxJXTlMua2V5c1pOUy5vYmplY3RzViRjbGFzc6INDoACgAOiEBGABIAFgAdccmVsYXRpdmVQYXRoWWFsaWFzRGF0YV8QSC4uLy4uLy4uL1dvcmsvUmVzZWFyY2gvUmVmZXJlbmNlcy9CYXN0YXJyaWNhQW5kSGl0c2NoZmVsZC1LYWhsZXIyMDA0LnBkZtIXCxgZV05TLmRhdGFPEQIAAAAAAAIAAAIAAAxNYWNpbnRvc2ggSEQAAAAAAAAAAAAAAAAAAADOl3ODSCsAAAAXAgwfQmFzdGFycmljYUFuZEhpdHNjaCM1RUNDQjlDLnBkZgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABezLnNG21IQAAAAAAAAAAAADAAQAAAkgAAAAAAAAAAAAAAAAAAAAClJlZmVyZW5jZXMAEAAIAADOl6vDAAAAEQAIAADRtwzEAAAAAQAUABcCDAAXAE0AFv3tAAj3ZgACZI4AAgBXTWFjaW50b3NoIEhEOlVzZXJzOgBzbWl0aHM6AFdvcms6AFJlc2VhcmNoOgBSZWZlcmVuY2VzOgBCYXN0YXJyaWNhQW5kSGl0c2NoIzVFQ0NCOUMucGRmAAAOAE4AJgBCAGEAcwB0AGEAcgByAGkAYwBhAEEAbgBkAEgAaQB0AHMAYwBoAGYAZQBsAGQALQBLAGEAaABsAGUAcgAyADAAMAA0AC4AcABkAGYADwAaAAwATQBhAGMAaQBuAHQAbwBzAGgAIABIAEQAEgBMVXNlcnMvc21pdGhzL1dvcmsvUmVzZWFyY2gvUmVmZXJlbmNlcy9CYXN0YXJyaWNhQW5kSGl0c2NoZmVsZC1LYWhsZXIyMDA0LnBkZgATAAEvAAAVAAIADf//AACABtIbHB0eWiRjbGFzc25hbWVYJGNsYXNzZXNdTlNNdXRhYmxlRGF0YaMdHyBWTlNEYXRhWE5TT2JqZWN00hscIiNcTlNEaWN0aW9uYXJ5oiIgXxAPTlNLZXllZEFyY2hpdmVy0SYnVHJvb3SAAQAIABEAGgAjAC0AMgA3AEAARgBNAFUAYABnAGoAbABuAHEAcwB1AHcAhACOANkA3gDmAuoC7ALxAvwDBQMTAxcDHgMnAywDOQM8A04DUQNWAAAAAAAAAgEAAAAAAAAAKAAAAAAAAAAAAAAAAAAAA1g=}} + +@inproceedings{BastarricaEtAl2006, + Author = {M. Cecilia Bastarrica and Nancy Hitschfeld-Kahler and Pedro O. Rossel}, + Biburl = {http://www.bibsonomy.org/bibtex/2e9f4f53cc36e64502f528f99ae02239c/dblp}, + Booktitle = {ICSR}, + Date = {2006-08-21}, + Date-Added = {2017-09-14 20:51:11 +0000}, + Date-Modified = {2017-09-14 20:51:11 +0000}, + Description = {dblp}, + Editor = {Maurizio Morisio}, + Ee = {http://dx.doi.org/10.1007/11763864_33}, + Isbn = {3-540-34606-6}, + Keywords = {dblp}, + Pages = {403-406}, + Publisher = {Springer}, + Series = {Lecture Notes in Computer Science}, + Title = {Product Line Architecture for a Family of Meshing Tools.}, + Url = {http://dblp.uni-trier.de/db/conf/icsr/icsr2006.html#BastarricaHR06}, + Volume = {4039}, + Year = {2006}, + Bdsk-Url-1 = {http://dblp.uni-trier.de/db/conf/icsr/icsr2006.html#BastarricaHR06}} + +@inproceedings{BastarricaAndHitschfeld2004, + Address = {Williamsburg, Virginia}, + Author = {Mar\'{i}a Cecilia Bastarrica and Nancy Hischfeld-Kahler}, + Booktitle = {Proceedings of the 13th International Meshing Roundtable}, + Date-Added = {2017-09-14 20:51:11 +0000}, + Date-Modified = {2017-09-14 20:51:11 +0000}, + Local-Url = {file://localhost/Users/smiths/LongTermArchives/Work/Research/References/MeshGeneration/Bastarrica2004.pdf}, + Pages = {203--212}, + Publisher = {Sandia National Laboratories}, + Title = {An Evolvable Meshing Tool Through a Flexible Object-Oriented Design, September 2004}, + Year = {2004}, + Bdsk-File-1 = {YnBsaXN0MDDUAQIDBAUGJCVYJHZlcnNpb25YJG9iamVjdHNZJGFyY2hpdmVyVCR0b3ASAAGGoKgHCBMUFRYaIVUkbnVsbNMJCgsMDxJXTlMua2V5c1pOUy5vYmplY3RzViRjbGFzc6INDoACgAOiEBGABIAFgAdccmVsYXRpdmVQYXRoWWFsaWFzRGF0YV8QVy4uLy4uLy4uLy4uL0xvbmdUZXJtQXJjaGl2ZXMvV29yay9SZXNlYXJjaC9SZWZlcmVuY2VzL01lc2hHZW5lcmF0aW9uL0Jhc3RhcnJpY2EyMDA0LnBkZtIXCxgZV05TLmRhdGFPEQH+AAAAAAH+AAIAAAxNYWNpbnRvc2ggSEQAAAAAAAAAAAAAAAAAAADGxWEASCsAAAASp4kSQmFzdGFycmljYTIwMDQucGRmAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABKzvMhOdDYAAAAAAAAAAAAEAAYAAAkgAAAAAAAAAAAAAAAAAAAADk1lc2hHZW5lcmF0aW9uABAACAAAxsWZQAAAABEACAAAyE6sdgAAAAEAHAASp4kAEqI2ABKgygASoKkAEqClAAhZ9wAAfGMAAgBlTWFjaW50b3NoIEhEOlVzZXJzOnNtaXRoczpMb25nVGVybUFyY2hpdmVzOldvcms6UmVzZWFyY2g6UmVmZXJlbmNlczpNZXNoR2VuZXJhdGlvbjpCYXN0YXJyaWNhMjAwNC5wZGYAAA4AJgASAEIAYQBzAHQAYQByAHIAaQBjAGEAMgAwADAANAAuAHAAZABmAA8AGgAMAE0AYQBjAGkAbgB0AG8AcwBoACAASABEABIAWFVzZXJzL3NtaXRocy9Mb25nVGVybUFyY2hpdmVzL1dvcmsvUmVzZWFyY2gvUmVmZXJlbmNlcy9NZXNoR2VuZXJhdGlvbi9CYXN0YXJyaWNhMjAwNC5wZGYAEwABLwAAFQACAA3//wAAgAbSGxwdHlokY2xhc3NuYW1lWCRjbGFzc2VzXU5TTXV0YWJsZURhdGGjHR8gVk5TRGF0YVhOU09iamVjdNIbHCIjXE5TRGljdGlvbmFyeaIiIF8QD05TS2V5ZWRBcmNoaXZlctEmJ1Ryb290gAEACAARABoAIwAtADIANwBAAEYATQBVAGAAZwBqAGwAbgBxAHMAdQB3AIQAjgDoAO0A9QL3AvkC/gMJAxIDIAMkAysDNAM5A0YDSQNbA14DYwAAAAAAAAIBAAAAAAAAACgAAAAAAAAAAAAAAAAAAANl}} + +@inproceedings{Bastarrica2002, + Author = {Mar\'{i}a Cecilia Bastarrica}, + Booktitle = {Proceedings of the XXVIII Latin American Conference of Informatics, {CLEI'2002}, Montevideo, Uruguay}, + Date-Added = {2017-09-14 20:51:11 +0000}, + Date-Modified = {2017-09-14 20:51:11 +0000}, + Pages = {119}, + Title = {Base Architecture in a Software Product Line}, + Year = {2002}} + +@article{RosselEtAl2014, + Author = {Pedro O. Rossel and Mar{\'{\i}}a Cecilia Bastarrica and Nancy Hitschfeld{-}Kahler and Violeta D{\'{\i}}az and Mario Medina}, + Bibsource = {dblp computer science bibliography, http://dblp.org}, + Biburl = {http://dblp.uni-trier.de/rec/bib/journals/aes/RosselBHDM14}, + Date-Added = {2017-09-14 20:51:01 +0000}, + Date-Modified = {2017-09-14 20:51:01 +0000}, + Doi = {10.1016/j.advengsoft.2014.01.011}, + Journal = {Advances in Engineering Software}, + Pages = {77--89}, + Timestamp = {Thu, 02 Oct 2014 16:18:42 +0200}, + Title = {Domain modeling as a basis for building a meshing tool software product line}, + Url = {http://dx.doi.org/10.1016/j.advengsoft.2014.01.011}, + Volume = {70}, + Year = {2014}, + Bdsk-File-1 = {YnBsaXN0MDDUAQIDBAUGJCVYJHZlcnNpb25YJG9iamVjdHNZJGFyY2hpdmVyVCR0b3ASAAGGoKgHCBMUFRYaIVUkbnVsbNMJCgsMDxJXTlMua2V5c1pOUy5vYmplY3RzViRjbGFzc6INDoACgAOiEBGABIAFgAdccmVsYXRpdmVQYXRoWWFsaWFzRGF0YV8QNC4uLy4uLy4uL1dvcmsvUmVzZWFyY2gvUmVmZXJlbmNlcy9Sb3NzZWxFdEFsMjAxNC5wZGbSFwsYGVdOUy5kYXRhTxEBtgAAAAABtgACAAAMTWFjaW50b3NoIEhEAAAAAAAAAAAAAAAAAAAAzpdzg0grAAAAFwIMElJvc3NlbEV0QWwyMDE0LnBkZgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDd43QUtXsAAAAAAAAAAAAAwAEAAAJIAAAAAAAAAAAAAAAAAAAAApSZWZlcmVuY2VzABAACAAAzperwwAAABEACAAA0FMOLAAAAAEAFAAXAgwAFwBNABb97QAI92YAAmSOAAIASk1hY2ludG9zaCBIRDpVc2VyczoAc21pdGhzOgBXb3JrOgBSZXNlYXJjaDoAUmVmZXJlbmNlczoAUm9zc2VsRXRBbDIwMTQucGRmAA4AJgASAFIAbwBzAHMAZQBsAEUAdABBAGwAMgAwADEANAAuAHAAZABmAA8AGgAMAE0AYQBjAGkAbgB0AG8AcwBoACAASABEABIAOFVzZXJzL3NtaXRocy9Xb3JrL1Jlc2VhcmNoL1JlZmVyZW5jZXMvUm9zc2VsRXRBbDIwMTQucGRmABMAAS8AABUAAgAN//8AAIAG0hscHR5aJGNsYXNzbmFtZVgkY2xhc3Nlc11OU011dGFibGVEYXRhox0fIFZOU0RhdGFYTlNPYmplY3TSGxwiI1xOU0RpY3Rpb25hcnmiIiBfEA9OU0tleWVkQXJjaGl2ZXLRJidUcm9vdIABAAgAEQAaACMALQAyADcAQABGAE0AVQBgAGcAagBsAG4AcQBzAHUAdwCEAI4AxQDKANICjAKOApMCngKnArUCuQLAAskCzgLbAt4C8ALzAvgAAAAAAAACAQAAAAAAAAAoAAAAAAAAAAAAAAAAAAAC+g==}, + Bdsk-Url-1 = {http://dx.doi.org/10.1016/j.advengsoft.2014.01.011}} + +@article{CukaAndWeiss1997, + Annote = {Apparently this article was never published in this form. It looks like it was published as Engineering Domains: Executable Commands as an Example.}, + Author = {David A. Cuka and David M. Weiss}, + Date-Added = {2017-09-14 20:49:28 +0000}, + Date-Modified = {2017-09-14 20:49:28 +0000}, + Journal = {Submitted to IEEE Transactions on Software Engineering}, + Keywords = {software engineering, domain analysis, domain engineering, families, software process, application-oriented languages}, + Local-Url = {/Users/smiths/LongTermArchives/Work/Research/References/ProgramFamilies/CukaAndWeiss.pdf}, + Pages = {1 - 12}, + Title = {Specifying Executable Commands: An example of {FAST} domain engineering}, + Url = {http://www.research.avayalabs.com/user/weiss/Publications.html}, + Year = {Submitted 1997}, + Bdsk-File-1 = {YnBsaXN0MDDUAQIDBAUGJCVYJHZlcnNpb25YJG9iamVjdHNZJGFyY2hpdmVyVCR0b3ASAAGGoKgHCBMUFRYaIVUkbnVsbNMJCgsMDxJXTlMua2V5c1pOUy5vYmplY3RzViRjbGFzc6INDoACgAOiEBGABIAFgAdccmVsYXRpdmVQYXRoWWFsaWFzRGF0YV8Qfy4uLy4uLy4uLy4uLy4uLy4uL1ZvbHVtZXMvQmFja3VwL0xvbmdUZXJtQXJjaGl2ZXNMYXN0Q2hhbmdlTWF5MTBfMjAxMi9Xb3JrL1Jlc2VhcmNoL1JlZmVyZW5jZXMvUHJvZ3JhbUZhbWlsaWVzL0N1a2FBbmRXZWlzcy5wZGbSFwsYGVdOUy5kYXRhTxEB+AAAAAAB+AACAAAGQmFja3VwAAAAAAAAAAAAAAAAAAAAAAAAAAAAymG1pUgrAAAByechEEN1a2FBbmRXZWlzcy5wZGYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHJ5yfITnQ0UERGIHBydnf/////AAAJAAAAAAAAAAAAAAAAAAAAAA9Qcm9ncmFtRmFtaWxpZXMAABAACAAAymHt5QAAABEACAAAyE6sdAAAAAEAFAHJ5yEByeSWAcngfQHJx9IByapsAAIAZUJhY2t1cDpMb25nVGVybUFyY2hpdmVzTGFzdENoYSMxQzlBQTZDOgBXb3JrOgBSZXNlYXJjaDoAUmVmZXJlbmNlczoAUHJvZ3JhbUZhbWlsaWVzOgBDdWthQW5kV2Vpc3MucGRmAAAOACIAEABDAHUAawBhAEEAbgBkAFcAZQBpAHMAcwAuAHAAZABmAA8ADgAGAEIAYQBjAGsAdQBwABIAXy9Mb25nVGVybUFyY2hpdmVzTGFzdENoYW5nZU1heTEwXzIwMTIvV29yay9SZXNlYXJjaC9SZWZlcmVuY2VzL1Byb2dyYW1GYW1pbGllcy9DdWthQW5kV2Vpc3MucGRmAAATAA8vVm9sdW1lcy9CYWNrdXAA//8AAIAG0hscHR5aJGNsYXNzbmFtZVgkY2xhc3Nlc11OU011dGFibGVEYXRhox0fIFZOU0RhdGFYTlNPYmplY3TSGxwiI1xOU0RpY3Rpb25hcnmiIiBfEA9OU0tleWVkQXJjaGl2ZXLRJidUcm9vdIABAAgAEQAaACMALQAyADcAQABGAE0AVQBgAGcAagBsAG4AcQBzAHUAdwCEAI4BEAEVAR0DGQMbAyADKwM0A0IDRgNNA1YDWwNoA2sDfQOAA4UAAAAAAAACAQAAAAAAAAAoAAAAAAAAAAAAAAAAAAADhw==}, + Bdsk-Url-1 = {http://www.research.avayalabs.com/user/weiss/Publications.html}} + +@techreport{CaretteEtAl2007_TR, + Annote = {Acknowledgment: NSERC}, + Author = {Jacques Carette and W. Spencer Smith and John McCutchan and Christopher Anand and Alexandre Korobkine}, + Date-Added = {2017-09-14 20:48:49 +0000}, + Date-Modified = {2017-09-14 20:48:49 +0000}, + Institution = {Software Quality Research Laboratory, McMaster University}, + Month = {December}, + Note = {41 pp}, + Number = {48}, + Title = {Model manipulation as part of a better development process for scientific computing code}, + Year = {2007}, + Bdsk-File-1 = {YnBsaXN0MDDUAQIDBAUGJCVYJHZlcnNpb25YJG9iamVjdHNZJGFyY2hpdmVyVCR0b3ASAAGGoKgHCBMUFRYaIVUkbnVsbNMJCgsMDxJXTlMua2V5c1pOUy5vYmplY3RzViRjbGFzc6INDoACgAOiEBGABIAFgAdccmVsYXRpdmVQYXRoWWFsaWFzRGF0YV8QLy4uLy4uL09MRF9TVk4vbW1zY09MRF9TVk4vTU1TQ19UUi9TUVJMX1RSNDgucGRm0hcLGBlXTlMuZGF0YU8RAbgAAAAAAbgAAgAADE1hY2ludG9zaCBIRAAAAAAAAAAAAAAAAAAAAM6Xc4NIKwAAApHPMQ1TUVJMX1RSNDgucGRmAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACkc9z0CEtAwAAAAAAAAAAAAIABAAACSAAAAAAAAAAAAAAAAAAAAAHTU1TQ19UUgAAEAAIAADOl6vDAAAAEQAIAADQIWVDAAAAAQAYApHPMQKRxEwJMf6nABIVpwAI92YAAmSOAAIAT01hY2ludG9zaCBIRDpVc2VyczoAc21pdGhzOgBSZXBvczoAT0xEX1NWTjoAbW1zY09MRF9TVk46AE1NU0NfVFI6AFNRUkxfVFI0OC5wZGYAAA4AHAANAFMAUQBSAEwAXwBUAFIANAA4AC4AcABkAGYADwAaAAwATQBhAGMAaQBuAHQAbwBzAGgAIABIAEQAEgA8VXNlcnMvc21pdGhzL1JlcG9zL09MRF9TVk4vbW1zY09MRF9TVk4vTU1TQ19UUi9TUVJMX1RSNDgucGRmABMAAS8AABUAAgAN//8AAIAG0hscHR5aJGNsYXNzbmFtZVgkY2xhc3Nlc11OU011dGFibGVEYXRhox0fIFZOU0RhdGFYTlNPYmplY3TSGxwiI1xOU0RpY3Rpb25hcnmiIiBfEA9OU0tleWVkQXJjaGl2ZXLRJidUcm9vdIABAAgAEQAaACMALQAyADcAQABGAE0AVQBgAGcAagBsAG4AcQBzAHUAdwCEAI4AwADFAM0CiQKLApACmwKkArICtgK9AsYCywLYAtsC7QLwAvUAAAAAAAACAQAAAAAAAAAoAAAAAAAAAAAAAAAAAAAC9w==}} + +@inbook{CaretteEtAl2008, + Address = {Birmingham, UK}, + Author = {Jacques Carette and W. Spencer Smith and John McCutchan and Christopher Anand and Alexandre Korobkine}, + Chapter = {Case Studies in Model Manipulation for Scientific Computing}, + Date-Added = {2017-09-14 20:48:35 +0000}, + Date-Modified = {2017-09-14 20:48:35 +0000}, + Local-Url = {/Users/smiths/Work/Research/Papers/mmsc/aisc08/CaretteEtAl2008_AsPublished.pdf}, + Pages = {24--37}, + Publisher = {Springer Berlin / Heidelberg}, + Series = {Lecture Notes in Computer Science}, + Title = {Intelligent Computer Mathematics, 9th International Conference, AISC 2008}, + Url = {{http://dx.doi.org/10.1007/978-3-540-85110-3_4}}, + Year = {2008}, + Bdsk-File-1 = {YnBsaXN0MDDUAQIDBAUGJCVYJHZlcnNpb25YJG9iamVjdHNZJGFyY2hpdmVyVCR0b3ASAAGGoKgHCBMUFRYaIVUkbnVsbNMJCgsMDxJXTlMua2V5c1pOUy5vYmplY3RzViRjbGFzc6INDoACgAOiEBGABIAFgAdccmVsYXRpdmVQYXRoWWFsaWFzRGF0YV8QYy4uLy4uLy4uL1dvcmsvVGVhY2hpbmcvQ0FTNzQxLzIwMDkvV2ViUGFnZUluZm8vQ0FTNzQxL1Byb2dyYW1GYW1pbHkvQ2FyZXR0ZUV0QWwyMDA4X0FzUHVibGlzaGVkLnBkZtIXCxgZV05TLmRhdGFPEQJIAAAAAAJIAAIAAAxNYWNpbnRvc2ggSEQAAAAAAAAAAAAAAAAAAADOl3ODSCsAAAAX0JcfQ2FyZXR0ZUV0QWwyMDA4X0FzUHVibGlzaGVkLnBkZgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABf+Ac8i5FwAAAAAAAAAAAADAAgAAAkgAAAAAAAAAAAAAAAAAAAADVByb2dyYW1GYW1pbHkAABAACAAAzperwwAAABEACAAAzyMqrAAAAAEAJAAX0JcAF5ShABcxywAXCPsAFwHfABcAUQAW/e0ACPdmAAJkjgACAH1NYWNpbnRvc2ggSEQ6VXNlcnM6AHNtaXRoczoAV29yazoAVGVhY2hpbmc6AENBUzc0MToAMjAwOToAV2ViUGFnZUluZm86AENBUzc0MToAUHJvZ3JhbUZhbWlseToAQ2FyZXR0ZUV0QWwyMDA4X0FzUHVibGlzaGVkLnBkZgAADgBAAB8AQwBhAHIAZQB0AHQAZQBFAHQAQQBsADIAMAAwADgAXwBBAHMAUAB1AGIAbABpAHMAaABlAGQALgBwAGQAZgAPABoADABNAGEAYwBpAG4AdABvAHMAaAAgAEgARAASAGdVc2Vycy9zbWl0aHMvV29yay9UZWFjaGluZy9DQVM3NDEvMjAwOS9XZWJQYWdlSW5mby9DQVM3NDEvUHJvZ3JhbUZhbWlseS9DYXJldHRlRXRBbDIwMDhfQXNQdWJsaXNoZWQucGRmAAATAAEvAAAVAAIADf//AACABtIbHB0eWiRjbGFzc25hbWVYJGNsYXNzZXNdTlNNdXRhYmxlRGF0YaMdHyBWTlNEYXRhWE5TT2JqZWN00hscIiNcTlNEaWN0aW9uYXJ5oiIgXxAPTlNLZXllZEFyY2hpdmVy0SYnVHJvb3SAAQAIABEAGgAjAC0AMgA3AEAARgBNAFUAYABnAGoAbABuAHEAcwB1AHcAhACOAPQA+QEBA00DTwNUA18DaAN2A3oDgQOKA48DnAOfA7EDtAO5AAAAAAAAAgEAAAAAAAAAKAAAAAAAAAAAAAAAAAAAA7s=}, + Bdsk-Url-1 = {%7Bhttp://dx.doi.org/10.1007/978-3-540-85110-3_4%7D}} + +@inproceedings{SmithMcCutchanAndCao2007, + Address = {Montr\'{e}al, Qu\'{e}bec}, + Author = {W. Spencer Smith and John McCutchan and Fang Cao}, + Booktitle = {7$^{th}$ OOPSLA Workshop on Domain Specific Modelling ({DSM}'07)}, + Date-Added = {2017-09-14 20:47:28 +0000}, + Date-Modified = {2017-09-14 20:47:28 +0000}, + Editor = {Jonathan Sprinkle and Jeff Gray and Matti Rossi and Juha-Pekka Tolvanen}, + Local-Url = {/Users/smiths/Work/Research/Papers/OOPSLA_Workshop2007/ProgFamiliesInSciComp_CameraReady.pdf}, + Month = {October}, + Pages = {39--47}, + Title = {Program Families in Scientific Computing}, + Year = {2007}, + Bdsk-File-1 = {YnBsaXN0MDDUAQIDBAUGJCVYJHZlcnNpb25YJG9iamVjdHNZJGFyY2hpdmVyVCR0b3ASAAGGoKgHCBMUFRYaIVUkbnVsbNMJCgsMDxJXTlMua2V5c1pOUy5vYmplY3RzViRjbGFzc6INDoACgAOiEBGABIAFgAdccmVsYXRpdmVQYXRoWWFsaWFzRGF0YV8QVy4uLy4uLy4uL1dvcmsvUmVzZWFyY2gvUGFwZXJzL09PUFNMQV9Xb3Jrc2hvcDIwMDcvUHJvZ0ZhbWlsaWVzSW5TY2lDb21wX0NhbWVyYVJlYWR5LnBkZtIXCxgZV05TLmRhdGFPEQIsAAAAAAIsAAIAAAxNYWNpbnRvc2ggSEQAAAAAAAAAAAAAAAAAAADOl3ODSCsAAAAXC2ofUHJvZ0ZhbWlsaWVzSW5TY2lDbyNEQ0ZFREU5LnBkZgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADc/t6c8i4TQAAAAAAAAAAAADAAUAAAkgAAAAAAAAAAAAAAAAAAAAE09PUFNMQV9Xb3Jrc2hvcDIwMDcAABAACAAAzperwwAAABEACAAAzyMnhAAAAAEAGAAXC2oAFwILABcATQAW/e0ACPdmAAJkjgACAGhNYWNpbnRvc2ggSEQ6VXNlcnM6AHNtaXRoczoAV29yazoAUmVzZWFyY2g6AFBhcGVyczoAT09QU0xBX1dvcmtzaG9wMjAwNzoAUHJvZ0ZhbWlsaWVzSW5TY2lDbyNEQ0ZFREU5LnBkZgAOAEwAJQBQAHIAbwBnAEYAYQBtAGkAbABpAGUAcwBJAG4AUwBjAGkAQwBvAG0AcABfAEMAYQBtAGUAcgBhAFIAZQBhAGQAeQAuAHAAZABmAA8AGgAMAE0AYQBjAGkAbgB0AG8AcwBoACAASABEABIAW1VzZXJzL3NtaXRocy9Xb3JrL1Jlc2VhcmNoL1BhcGVycy9PT1BTTEFfV29ya3Nob3AyMDA3L1Byb2dGYW1pbGllc0luU2NpQ29tcF9DYW1lcmFSZWFkeS5wZGYAABMAAS8AABUAAgAN//8AAIAG0hscHR5aJGNsYXNzbmFtZVgkY2xhc3Nlc11OU011dGFibGVEYXRhox0fIFZOU0RhdGFYTlNPYmplY3TSGxwiI1xOU0RpY3Rpb25hcnmiIiBfEA9OU0tleWVkQXJjaGl2ZXLRJidUcm9vdIABAAgAEQAaACMALQAyADcAQABGAE0AVQBgAGcAagBsAG4AcQBzAHUAdwCEAI4A6ADtAPUDJQMnAywDNwNAA04DUgNZA2IDZwN0A3cDiQOMA5EAAAAAAAACAQAAAAAAAAAoAAAAAAAAAAAAAAAAAAADkw==}} + +@mastersthesis{Cao2006, + Author = {Fang Cao}, + Date-Added = {2017-09-14 20:47:14 +0000}, + Date-Modified = {2017-09-14 20:47:14 +0000}, + Month = {April}, + School = {McMaster University}, + Title = {A Program Family Approach to Developing Mesh Generators}, + Year = {2006}} + +@article{BastarricaAndHitschfeld2006, + Author = {Mar\'{i}a Cecilia Bastarrica and Nancy Hischfeld-Kahler}, + Date-Added = {2017-09-14 20:47:06 +0000}, + Date-Modified = {2017-09-14 20:47:06 +0000}, + Journal = {Advances in Engineering Software}, + Keywords = {meshing tools, object-oriented design, software product line}, + Local-Url = {file://localhost/Users/smiths/LongTermArchives/Work/Research/References/SciCompAndSoftEng/BastarricaAndHitschfeld2005.pdf}, + Number = {1}, + Pages = {1--10}, + Title = {Designing a product family of meshing tools}, + Volume = {37}, + Year = {2006}, + Bdsk-File-1 = {YnBsaXN0MDDUAQIDBAUGJCVYJHZlcnNpb25YJG9iamVjdHNZJGFyY2hpdmVyVCR0b3ASAAGGoKgHCBMUFRYaIVUkbnVsbNMJCgsMDxJXTlMua2V5c1pOUy5vYmplY3RzViRjbGFzc6INDoACgAOiEBGABIAFgAdccmVsYXRpdmVQYXRoWWFsaWFzRGF0YV8QZy4uLy4uLy4uLy4uL0xvbmdUZXJtQXJjaGl2ZXMvV29yay9SZXNlYXJjaC9SZWZlcmVuY2VzL1NjaUNvbXBBbmRTb2Z0RW5nL0Jhc3RhcnJpY2FBbmRIaXRzY2hmZWxkMjAwNS5wZGbSFwsYGVdOUy5kYXRhTxECPAAAAAACPAACAAAMTWFjaW50b3NoIEhEAAAAAAAAAAAAAAAAAAAAxsVhAEgrAAAAEqeSH0Jhc3RhcnJpY2FBbmRIaXRzY2hmZWxkMjAwNS5wZGYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAStC/ITnQ/UERGIENBUk8ABAAGAAAJIAAAAAAAAAAAAAAAAAAAABFTY2lDb21wQW5kU29mdEVuZwAAEAAIAADGxZlAAAAAEQAIAADITqx/AAAAAQAcABKnkgASojYAEqDKABKgqQASoKUACFn3AAB8YwACAHVNYWNpbnRvc2ggSEQ6VXNlcnM6c21pdGhzOkxvbmdUZXJtQXJjaGl2ZXM6V29yazpSZXNlYXJjaDpSZWZlcmVuY2VzOlNjaUNvbXBBbmRTb2Z0RW5nOkJhc3RhcnJpY2FBbmRIaXRzY2hmZWxkMjAwNS5wZGYAAA4AQAAfAEIAYQBzAHQAYQByAHIAaQBjAGEAQQBuAGQASABpAHQAcwBjAGgAZgBlAGwAZAAyADAAMAA1AC4AcABkAGYADwAaAAwATQBhAGMAaQBuAHQAbwBzAGgAIABIAEQAEgBoVXNlcnMvc21pdGhzL0xvbmdUZXJtQXJjaGl2ZXMvV29yay9SZXNlYXJjaC9SZWZlcmVuY2VzL1NjaUNvbXBBbmRTb2Z0RW5nL0Jhc3RhcnJpY2FBbmRIaXRzY2hmZWxkMjAwNS5wZGYAEwABLwAAFQACAA3//wAAgAbSGxwdHlokY2xhc3NuYW1lWCRjbGFzc2VzXU5TTXV0YWJsZURhdGGjHR8gVk5TRGF0YVhOU09iamVjdNIbHCIjXE5TRGljdGlvbmFyeaIiIF8QD05TS2V5ZWRBcmNoaXZlctEmJ1Ryb290gAEACAARABoAIwAtADIANwBAAEYATQBVAGAAZwBqAGwAbgBxAHMAdQB3AIQAjgD4AP0BBQNFA0cDTANXA2ADbgNyA3kDggOHA5QDlwOpA6wDsQAAAAAAAAIBAAAAAAAAACgAAAAAAAAAAAAAAAAAAAOz}} + +@mastersthesis{Chen2003, + Author = {Chien-Hsien Chen}, + Date-Added = {2017-09-14 20:46:56 +0000}, + Date-Modified = {2017-09-14 20:46:56 +0000}, + Keywords = {sofware engineering, mesh generation, commonality analysis, requirements, modular decomposition, module interface specification}, + School = {McMaster University, Hamilton, Ontario, Canada}, + Title = {A software engineering approach to developing mesh generators}, + Year = {2003}} + +@book{Saaty1980, + Address = {New York, New York}, + Author = {T. L. Saaty}, + Date-Added = {2017-09-14 20:46:45 +0000}, + Date-Modified = {2017-09-14 20:46:45 +0000}, + Publisher = {McGraw-Hill Publishing Company}, + Title = {The Analytic Hierarchy Process: Planning, Priority Setting, Resource Allocation}, + Year = {1980}} + +@book{WeissAndLai1999, + Author = {D. Weiss and C.T.R. Lai}, + Date-Added = {2017-09-14 20:46:33 +0000}, + Date-Modified = {2017-09-14 20:46:33 +0000}, + Publisher = {Addison-Wesley}, + Title = {Software Product Line Engineering: A Family-Based Software Development Process}, + Year = {1999}} + +@article{CukaAndWeiss1998, + Address = {Los Alamitos, CA, USA}, + Author = {D.A. Cuka and D.M. Weiss}, + Date-Added = {2017-09-14 20:46:24 +0000}, + Date-Modified = {2017-09-14 20:46:24 +0000}, + Doi = {http://doi.ieeecomputersociety.org/10.1109/ICSR.1998.685727}, + Issn = {1085-9098}, + Journal = {Software Reuse, International Conference on}, + Pages = {26--34}, + Publisher = {IEEE Computer Society}, + Title = {Engineering Domains: Executable Commands as an Example}, + Year = {1998}, + Bdsk-File-1 = {YnBsaXN0MDDUAQIDBAUGJCVYJHZlcnNpb25YJG9iamVjdHNZJGFyY2hpdmVyVCR0b3ASAAGGoKgHCBMUFRYaIVUkbnVsbNMJCgsMDxJXTlMua2V5c1pOUy5vYmplY3RzViRjbGFzc6INDoACgAOiEBGABIAFgAdccmVsYXRpdmVQYXRoWWFsaWFzRGF0YV8Qgy4uLy4uLy4uLy4uLy4uLy4uL1ZvbHVtZXMvQmFja3VwL0xvbmdUZXJtQXJjaGl2ZXNMYXN0Q2hhbmdlTWF5MTBfMjAxMi9Xb3JrL1Jlc2VhcmNoL1JlZmVyZW5jZXMvUHJvZ3JhbUZhbWlsaWVzL0N1a2FBbmRXZWlzczE5OTgucGRm0hcLGBlXTlMuZGF0YU8RAggAAAAAAggAAgAABkJhY2t1cAAAAAAAAAAAAAAAAAAAAAAAAAAAAMphtaVIKwAAAcnnIRRDdWthQW5kV2Vpc3MxOTk4LnBkZgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAByecoyE50NAAAAAAAAAAA/////wAACQAAAAAAAAAAAAAAAAAAAAAPUHJvZ3JhbUZhbWlsaWVzAAAQAAgAAMph7eUAAAARAAgAAMhOrHQAAAABABQByechAcnklgHJ4H0BycfSAcmqbAACAGlCYWNrdXA6TG9uZ1Rlcm1BcmNoaXZlc0xhc3RDaGEjMUM5QUE2QzoAV29yazoAUmVzZWFyY2g6AFJlZmVyZW5jZXM6AFByb2dyYW1GYW1pbGllczoAQ3VrYUFuZFdlaXNzMTk5OC5wZGYAAA4AKgAUAEMAdQBrAGEAQQBuAGQAVwBlAGkAcwBzADEAOQA5ADgALgBwAGQAZgAPAA4ABgBCAGEAYwBrAHUAcAASAGMvTG9uZ1Rlcm1BcmNoaXZlc0xhc3RDaGFuZ2VNYXkxMF8yMDEyL1dvcmsvUmVzZWFyY2gvUmVmZXJlbmNlcy9Qcm9ncmFtRmFtaWxpZXMvQ3VrYUFuZFdlaXNzMTk5OC5wZGYAABMADy9Wb2x1bWVzL0JhY2t1cAD//wAAgAbSGxwdHlokY2xhc3NuYW1lWCRjbGFzc2VzXU5TTXV0YWJsZURhdGGjHR8gVk5TRGF0YVhOU09iamVjdNIbHCIjXE5TRGljdGlvbmFyeaIiIF8QD05TS2V5ZWRBcmNoaXZlctEmJ1Ryb290gAEACAARABoAIwAtADIANwBAAEYATQBVAGAAZwBqAGwAbgBxAHMAdQB3AIQAjgEUARkBIQMtAy8DNAM/A0gDVgNaA2EDagNvA3wDfwORA5QDmQAAAAAAAAIBAAAAAAAAACgAAAAAAAAAAAAAAAAAAAOb}, + Bdsk-Url-1 = {http://doi.ieeecomputersociety.org/10.1109/ICSR.1998.685727}} + +@article{Weiss1998, + Author = {David M. Weiss}, + Date-Added = {2017-09-14 20:46:19 +0000}, + Date-Modified = {2017-09-14 20:46:19 +0000}, + Journal = {Lecture Notes in Computer Science}, + Keywords = {commonality analysis, program families}, + Local-Url = {/Users/smiths/LongTermArchives/Work/Research/References/ProgramFamilies/DefiningFamilies.ARES.pdf}, + Pages = {214--222}, + Title = {Commonality analysis: A systematic process for defining families}, + Url = {citeseer.ist.psu.edu/13585.html}, + Volume = {1429}, + Year = {1998}, + Bdsk-File-1 = {YnBsaXN0MDDUAQIDBAUGJCVYJHZlcnNpb25YJG9iamVjdHNZJGFyY2hpdmVyVCR0b3ASAAGGoKgHCBMUFRYaIVUkbnVsbNMJCgsMDxJXTlMua2V5c1pOUy5vYmplY3RzViRjbGFzc6INDoACgAOiEBGABIAFgAdccmVsYXRpdmVQYXRoWWFsaWFzRGF0YV8QiC4uLy4uLy4uLy4uLy4uLy4uL1ZvbHVtZXMvQmFja3VwL0xvbmdUZXJtQXJjaGl2ZXNMYXN0Q2hhbmdlTWF5MTBfMjAxMi9Xb3JrL1Jlc2VhcmNoL1JlZmVyZW5jZXMvUHJvZ3JhbUZhbWlsaWVzL0RlZmluaW5nRmFtaWxpZXMuQVJFUy5wZGbSFwsYGVdOUy5kYXRhTxECGgAAAAACGgACAAAGQmFja3VwAAAAAAAAAAAAAAAAAAAAAAAAAAAAymG1pUgrAAAByechGURlZmluaW5nRmFtaWxpZXMuQVJFUy5wZGYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHJ5ynITnQ3UERGIHBydnf/////AAAJAAAAAAAAAAAAAAAAAAAAAA9Qcm9ncmFtRmFtaWxpZXMAABAACAAAymHt5QAAABEACAAAyE6sdwAAAAEAFAHJ5yEByeSWAcngfQHJx9IByapsAAIAbkJhY2t1cDpMb25nVGVybUFyY2hpdmVzTGFzdENoYSMxQzlBQTZDOgBXb3JrOgBSZXNlYXJjaDoAUmVmZXJlbmNlczoAUHJvZ3JhbUZhbWlsaWVzOgBEZWZpbmluZ0ZhbWlsaWVzLkFSRVMucGRmAA4ANAAZAEQAZQBmAGkAbgBpAG4AZwBGAGEAbQBpAGwAaQBlAHMALgBBAFIARQBTAC4AcABkAGYADwAOAAYAQgBhAGMAawB1AHAAEgBoL0xvbmdUZXJtQXJjaGl2ZXNMYXN0Q2hhbmdlTWF5MTBfMjAxMi9Xb3JrL1Jlc2VhcmNoL1JlZmVyZW5jZXMvUHJvZ3JhbUZhbWlsaWVzL0RlZmluaW5nRmFtaWxpZXMuQVJFUy5wZGYAEwAPL1ZvbHVtZXMvQmFja3VwAP//AACABtIbHB0eWiRjbGFzc25hbWVYJGNsYXNzZXNdTlNNdXRhYmxlRGF0YaMdHyBWTlNEYXRhWE5TT2JqZWN00hscIiNcTlNEaWN0aW9uYXJ5oiIgXxAPTlNLZXllZEFyY2hpdmVy0SYnVHJvb3SAAQAIABEAGgAjAC0AMgA3AEAARgBNAFUAYABnAGoAbABuAHEAcwB1AHcAhACOARkBHgEmA0QDRgNLA1YDXwNtA3EDeAOBA4YDkwOWA6gDqwOwAAAAAAAAAgEAAAAAAAAAKAAAAAAAAAAAAAAAAAAAA7I=}, + Bdsk-Url-1 = {citeseer.ist.psu.edu/13585.html}} + +@article{Weiss1997, + Author = {David M. Weiss}, + Date-Added = {2017-09-14 20:46:14 +0000}, + Date-Modified = {2017-09-14 20:46:14 +0000}, + Journal = {Submitted to IEEE Transactions on Software Engineering}, + Keywords = {software engineering, domain analysis, domain engineering, families, software process, application-oriented languages}, + Local-Url = {/Users/smiths/LongTermArchives/Work/Research/References/ProgramFamilies/DefiningFamilies.pdf}, + Title = {Defining families: The commonality analysis}, + Url = {http://www.research.avayalabs.com/user/weiss/Publications.html}, + Year = {1997}, + Bdsk-File-1 = {YnBsaXN0MDDUAQIDBAUGJCVYJHZlcnNpb25YJG9iamVjdHNZJGFyY2hpdmVyVCR0b3ASAAGGoKgHCBMUFRYaIVUkbnVsbNMJCgsMDxJXTlMua2V5c1pOUy5vYmplY3RzViRjbGFzc6INDoACgAOiEBGABIAFgAdccmVsYXRpdmVQYXRoWWFsaWFzRGF0YV8Qgy4uLy4uLy4uLy4uLy4uLy4uL1ZvbHVtZXMvQmFja3VwL0xvbmdUZXJtQXJjaGl2ZXNMYXN0Q2hhbmdlTWF5MTBfMjAxMi9Xb3JrL1Jlc2VhcmNoL1JlZmVyZW5jZXMvUHJvZ3JhbUZhbWlsaWVzL0RlZmluaW5nRmFtaWxpZXMucGRm0hcLGBlXTlMuZGF0YU8RAggAAAAAAggAAgAABkJhY2t1cAAAAAAAAAAAAAAAAAAAAAAAAAAAAMphtaVIKwAAAcnnIRREZWZpbmluZ0ZhbWlsaWVzLnBkZgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAByecqyE50NFBERiBwcnZ3/////wAACQAAAAAAAAAAAAAAAAAAAAAPUHJvZ3JhbUZhbWlsaWVzAAAQAAgAAMph7eUAAAARAAgAAMhOrHQAAAABABQByechAcnklgHJ4H0BycfSAcmqbAACAGlCYWNrdXA6TG9uZ1Rlcm1BcmNoaXZlc0xhc3RDaGEjMUM5QUE2QzoAV29yazoAUmVzZWFyY2g6AFJlZmVyZW5jZXM6AFByb2dyYW1GYW1pbGllczoARGVmaW5pbmdGYW1pbGllcy5wZGYAAA4AKgAUAEQAZQBmAGkAbgBpAG4AZwBGAGEAbQBpAGwAaQBlAHMALgBwAGQAZgAPAA4ABgBCAGEAYwBrAHUAcAASAGMvTG9uZ1Rlcm1BcmNoaXZlc0xhc3RDaGFuZ2VNYXkxMF8yMDEyL1dvcmsvUmVzZWFyY2gvUmVmZXJlbmNlcy9Qcm9ncmFtRmFtaWxpZXMvRGVmaW5pbmdGYW1pbGllcy5wZGYAABMADy9Wb2x1bWVzL0JhY2t1cAD//wAAgAbSGxwdHlokY2xhc3NuYW1lWCRjbGFzc2VzXU5TTXV0YWJsZURhdGGjHR8gVk5TRGF0YVhOU09iamVjdNIbHCIjXE5TRGljdGlvbmFyeaIiIF8QD05TS2V5ZWRBcmNoaXZlctEmJ1Ryb290gAEACAARABoAIwAtADIANwBAAEYATQBVAGAAZwBqAGwAbgBxAHMAdQB3AIQAjgEUARkBIQMtAy8DNAM/A0gDVgNaA2EDagNvA3wDfwORA5QDmQAAAAAAAAIBAAAAAAAAACgAAAAAAAAAAAAAAAAAAAOb}, + Bdsk-Url-1 = {http://www.research.avayalabs.com/user/weiss/Publications.html}} + +@inproceedings{ArdisAndWeiss1997, + Author = {Mark Ardis and David M. Weiss}, + Booktitle = {Proceedings of the Nineteenth International Conference on Software Engineering}, + Date-Added = {2017-09-14 20:45:55 +0000}, + Date-Modified = {2017-09-14 20:45:55 +0000}, + Keywords = {software engineering, domain analysis, domain engineering, families, software process, application-oriented languages, reuse, requirements engineering}, + Local-Url = {/Users/smiths/LongTermArchives/Work/Research/References/ProgramFamilies/ArdisAndWeiss_ProgFam.pdf}, + Pages = {649--650}, + Publisher = {ACM, Inc.}, + Title = {Defining families: The commonality analysis}, + Year = {1997}, + Bdsk-File-1 = {YnBsaXN0MDDUAQIDBAUGJCVYJHZlcnNpb25YJG9iamVjdHNZJGFyY2hpdmVyVCR0b3ASAAGGoKgHCBMUFRYaIVUkbnVsbNMJCgsMDxJXTlMua2V5c1pOUy5vYmplY3RzViRjbGFzc6INDoACgAOiEBGABIAFgAdccmVsYXRpdmVQYXRoWWFsaWFzRGF0YV8QiC4uLy4uLy4uLy4uLy4uLy4uL1ZvbHVtZXMvQmFja3VwL0xvbmdUZXJtQXJjaGl2ZXNMYXN0Q2hhbmdlTWF5MTBfMjAxMi9Xb3JrL1Jlc2VhcmNoL1JlZmVyZW5jZXMvUHJvZ3JhbUZhbWlsaWVzL0FyZGlzQW5kV2Vpc3NfUHJvZ0ZhbS5wZGbSFwsYGVdOUy5kYXRhTxECGgAAAAACGgACAAAGQmFja3VwAAAAAAAAAAAAAAAAAAAAAAAAAAAAymG1pUgrAAAByechGUFyZGlzQW5kV2Vpc3NfUHJvZ0ZhbS5wZGYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHJ5yPITnQ0AAAAAAAAAAD/////AAAJAAAAAAAAAAAAAAAAAAAAAA9Qcm9ncmFtRmFtaWxpZXMAABAACAAAymHt5QAAABEACAAAyE6sdAAAAAEAFAHJ5yEByeSWAcngfQHJx9IByapsAAIAbkJhY2t1cDpMb25nVGVybUFyY2hpdmVzTGFzdENoYSMxQzlBQTZDOgBXb3JrOgBSZXNlYXJjaDoAUmVmZXJlbmNlczoAUHJvZ3JhbUZhbWlsaWVzOgBBcmRpc0FuZFdlaXNzX1Byb2dGYW0ucGRmAA4ANAAZAEEAcgBkAGkAcwBBAG4AZABXAGUAaQBzAHMAXwBQAHIAbwBnAEYAYQBtAC4AcABkAGYADwAOAAYAQgBhAGMAawB1AHAAEgBoL0xvbmdUZXJtQXJjaGl2ZXNMYXN0Q2hhbmdlTWF5MTBfMjAxMi9Xb3JrL1Jlc2VhcmNoL1JlZmVyZW5jZXMvUHJvZ3JhbUZhbWlsaWVzL0FyZGlzQW5kV2Vpc3NfUHJvZ0ZhbS5wZGYAEwAPL1ZvbHVtZXMvQmFja3VwAP//AACABtIbHB0eWiRjbGFzc25hbWVYJGNsYXNzZXNdTlNNdXRhYmxlRGF0YaMdHyBWTlNEYXRhWE5TT2JqZWN00hscIiNcTlNEaWN0aW9uYXJ5oiIgXxAPTlNLZXllZEFyY2hpdmVy0SYnVHJvb3SAAQAIABEAGgAjAC0AMgA3AEAARgBNAFUAYABnAGoAbABuAHEAcwB1AHcAhACOARkBHgEmA0QDRgNLA1YDXwNtA3EDeAOBA4YDkwOWA6gDqwOwAAAAAAAAAgEAAAAAAAAAKAAAAAAAAAAAAAAAAAAAA7I=}} + +@mastersthesis{McCutchan2007, + Address = {Hamilton, ON, Canada}, + Author = {John McCutchan}, + Date-Added = {2017-09-14 20:45:41 +0000}, + Date-Modified = {2017-09-14 20:45:41 +0000}, + Local-Url = {file://localhost/Users/smiths/Work/Research/GradStudents/JohnMcCutchan/thesis/thesis/build/Thesis.pdf}, + Month = {September}, + School = {McMaster University}, + Title = {A generative approach to a virtual material testing laboratory}, + Year = {2007}, + Bdsk-File-1 = {YnBsaXN0MDDUAQIDBAUGJCVYJHZlcnNpb25YJG9iamVjdHNZJGFyY2hpdmVyVCR0b3ASAAGGoKgHCBMUFRYaIVUkbnVsbNMJCgsMDxJXTlMua2V5c1pOUy5vYmplY3RzViRjbGFzc6INDoACgAOiEBGABIAFgAdccmVsYXRpdmVQYXRoWWFsaWFzRGF0YV8QLi4uLy4uL3ZpcnRsYWIvZG9jLzIwMDcvSm9obk1jQ3V0Y2hhblRoZXNpcy5wZGbSFwsYGVdOUy5kYXRhTxEBxgAAAAABxgACAAAMTWFjaW50b3NoIEhEAAAAAAAAAAAAAAAAAAAAzpdzg0grAAAJNoJiF0pvaG5NY0N1dGNoYW5UaGVzaXMucGRmAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAk2gmPTcxXHAAAAAAAAAAAAAgAEAAAJIAAAAAAAAAAAAAAAAAAAAAQyMDA3ABAACAAAzperwwAAABEACAAA03NOBwAAAAEAGAk2gmIJNoJhCTZ6twASFacACPdmAAJkjgACAE5NYWNpbnRvc2ggSEQ6VXNlcnM6AHNtaXRoczoAUmVwb3M6AHZpcnRsYWI6AGRvYzoAMjAwNzoASm9obk1jQ3V0Y2hhblRoZXNpcy5wZGYADgAwABcASgBvAGgAbgBNAGMAQwB1AHQAYwBoAGEAbgBUAGgAZQBzAGkAcwAuAHAAZABmAA8AGgAMAE0AYQBjAGkAbgB0AG8AcwBoACAASABEABIAO1VzZXJzL3NtaXRocy9SZXBvcy92aXJ0bGFiL2RvYy8yMDA3L0pvaG5NY0N1dGNoYW5UaGVzaXMucGRmAAATAAEvAAAVAAIADf//AACABtIbHB0eWiRjbGFzc25hbWVYJGNsYXNzZXNdTlNNdXRhYmxlRGF0YaMdHyBWTlNEYXRhWE5TT2JqZWN00hscIiNcTlNEaWN0aW9uYXJ5oiIgXxAPTlNLZXllZEFyY2hpdmVy0SYnVHJvb3SAAQAIABEAGgAjAC0AMgA3AEAARgBNAFUAYABnAGoAbABuAHEAcwB1AHcAhACOAL8AxADMApYCmAKdAqgCsQK/AsMCygLTAtgC5QLoAvoC/QMCAAAAAAAAAgEAAAAAAAAAKAAAAAAAAAAAAAAAAAAAAwQ=}} + +@techreport{SmithAndChen2004b, + Author = {W. Spencer Smith and Chien-Hsien Chen}, + Date-Added = {2017-09-14 20:45:24 +0000}, + Date-Modified = {2017-09-14 20:45:24 +0000}, + Institution = {McMaster University, Department of Computing and Software}, + Local-Url = {file://localhost/Users/smiths/Work/Research/WorkingDocs/MeshGenSyst/CommAnalysisMeshGen/CAS%2004-10-SS.pdf}, + Note = {45 pp}, + Number = {CAS-04-10-SS}, + Title = {Commonality analysis for mesh generating systems}, + Type = {Technical Report}, + Year = {2004}, + Bdsk-File-1 = {YnBsaXN0MDDUAQIDBAUGJCVYJHZlcnNpb25YJG9iamVjdHNZJGFyY2hpdmVyVCR0b3ASAAGGoKgHCBMUFRYaIVUkbnVsbNMJCgsMDxJXTlMua2V5c1pOUy5vYmplY3RzViRjbGFzc6INDoACgAOiEBGABIAFgAdccmVsYXRpdmVQYXRoWWFsaWFzRGF0YV8QUy4uLy4uLy4uL1dvcmsvUmVzZWFyY2gvV29ya2luZ0RvY3MvTWVzaEdlblN5c3QvQ29tbUFuYWx5c2lzTWVzaEdlbi9DQVMgMDQtMTAtU1MucGRm0hcLGBlXTlMuZGF0YU8RAgYAAAAAAgYAAgAADE1hY2ludG9zaCBIRAAAAAAAAAAAAAAAAAAAAM6Xc4NIKwAAABeHSxBDQVMgMDQtMTAtU1MucGRmAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAF79jzyLirwAAAAAAAAAAAAMABgAACSAAAAAAAAAAAAAAAAAAAAATQ29tbUFuYWx5c2lzTWVzaEdlbgAAEAAIAADOl6vDAAAAEQAIAADPIyj/AAAAAQAcABeHSwAXD/4AFwIUABcATQAW/e0ACPdmAAJkjgACAGtNYWNpbnRvc2ggSEQ6VXNlcnM6AHNtaXRoczoAV29yazoAUmVzZWFyY2g6AFdvcmtpbmdEb2NzOgBNZXNoR2VuU3lzdDoAQ29tbUFuYWx5c2lzTWVzaEdlbjoAQ0FTIDA0LTEwLVNTLnBkZgAADgAiABAAQwBBAFMAIAAwADQALQAxADAALQBTAFMALgBwAGQAZgAPABoADABNAGEAYwBpAG4AdABvAHMAaAAgAEgARAASAFdVc2Vycy9zbWl0aHMvV29yay9SZXNlYXJjaC9Xb3JraW5nRG9jcy9NZXNoR2VuU3lzdC9Db21tQW5hbHlzaXNNZXNoR2VuL0NBUyAwNC0xMC1TUy5wZGYAABMAAS8AABUAAgAN//8AAIAG0hscHR5aJGNsYXNzbmFtZVgkY2xhc3Nlc11OU011dGFibGVEYXRhox0fIFZOU0RhdGFYTlNPYmplY3TSGxwiI1xOU0RpY3Rpb25hcnmiIiBfEA9OU0tleWVkQXJjaGl2ZXLRJidUcm9vdIABAAgAEQAaACMALQAyADcAQABGAE0AVQBgAGcAagBsAG4AcQBzAHUAdwCEAI4A5ADpAPEC+wL9AwIDDQMWAyQDKAMvAzgDPQNKA00DXwNiA2cAAAAAAAACAQAAAAAAAAAoAAAAAAAAAAAAAAAAAAADaQ==}} + +@inproceedings{SmithAndChen2004, + Address = {Banff, Alberta}, + Author = {W. Spencer Smith and Chien-Hsien Chen}, + Booktitle = {Proceedings of the Sixteenth International Conference on Software Engineering and Knowledge Engineering (SEKE 2004)}, + Date-Added = {2017-09-14 20:45:16 +0000}, + Date-Modified = {2017-09-14 20:45:16 +0000}, + Editor = {F. Maurer and G. Ruhe}, + Local-Url = {/Users/smiths/Work/Research/Papers/CommReqAnal_MeshGen_SEKE04/AsSubmitted_SmithAndChen.pdf}, + Pages = {384--387}, + Title = {Commonality and Requirements Analysis for Mesh Generating Software}, + Year = {2004}, + Bdsk-File-1 = {YnBsaXN0MDDUAQIDBAUGJCVYJHZlcnNpb25YJG9iamVjdHNZJGFyY2hpdmVyVCR0b3ASAAGGoKgHCBMUFRYaIVUkbnVsbNMJCgsMDxJXTlMua2V5c1pOUy5vYmplY3RzViRjbGFzc6INDoACgAOiEBGABIAFgAdccmVsYXRpdmVQYXRoWWFsaWFzRGF0YV8QVS4uLy4uLy4uL1dvcmsvUmVzZWFyY2gvUGFwZXJzL0NvbW1SZXFBbmFsX01lc2hHZW5fU0VLRTA0L0FzU3VibWl0dGVkX1NtaXRoQW5kQ2hlbi5wZGbSFwsYGVdOUy5kYXRhTxECIgAAAAACIgACAAAMTWFjaW50b3NoIEhEAAAAAAAAAAAAAAAAAAAAzpdzg0grAAAAFwtMHEFzU3VibWl0dGVkX1NtaXRoQW5kQ2hlbi5wZGYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXjRXPIuFNAAAAAAAAAAAAAwAFAAAJIAAAAAAAAAAAAAAAAAAAABpDb21tUmVxQW5hbF9NZXNoR2VuX1NFS0UwNAAQAAgAAM6Xq8MAAAARAAgAAM8jJ50AAAABABgAFwtMABcCCwAXAE0AFv3tAAj3ZgACZI4AAgBsTWFjaW50b3NoIEhEOlVzZXJzOgBzbWl0aHM6AFdvcms6AFJlc2VhcmNoOgBQYXBlcnM6AENvbW1SZXFBbmFsX01lc2hHZW5fU0VLRTA0OgBBc1N1Ym1pdHRlZF9TbWl0aEFuZENoZW4ucGRmAA4AOgAcAEEAcwBTAHUAYgBtAGkAdAB0AGUAZABfAFMAbQBpAHQAaABBAG4AZABDAGgAZQBuAC4AcABkAGYADwAaAAwATQBhAGMAaQBuAHQAbwBzAGgAIABIAEQAEgBZVXNlcnMvc21pdGhzL1dvcmsvUmVzZWFyY2gvUGFwZXJzL0NvbW1SZXFBbmFsX01lc2hHZW5fU0VLRTA0L0FzU3VibWl0dGVkX1NtaXRoQW5kQ2hlbi5wZGYAABMAAS8AABUAAgAN//8AAIAG0hscHR5aJGNsYXNzbmFtZVgkY2xhc3Nlc11OU011dGFibGVEYXRhox0fIFZOU0RhdGFYTlNPYmplY3TSGxwiI1xOU0RpY3Rpb25hcnmiIiBfEA9OU0tleWVkQXJjaGl2ZXLRJidUcm9vdIABAAgAEQAaACMALQAyADcAQABGAE0AVQBgAGcAagBsAG4AcQBzAHUAdwCEAI4A5gDrAPMDGQMbAyADKwM0A0IDRgNNA1YDWwNoA2sDfQOAA4UAAAAAAAACAQAAAAAAAAAoAAAAAAAAAAAAAAAAAAADhw==}} + +@misc{Blitz2010, + Author = {Blitz}, + Date-Added = {2017-09-14 20:45:01 +0000}, + Date-Modified = {2017-09-14 20:45:01 +0000}, + Node = {Version 1.2}, + Title = {Blitz++, Object-Oriented Scientific Computing}, + Url = {http://www.oonumerics.org/blitz/}, + Year = {Last Accessed in December 2001}, + Bdsk-Url-1 = {http://www.oonumerics.org/blitz/}} + +@inproceedings{Veldhuizen1998, + Author = {Todd. L. Veldhuizen}, + Booktitle = {Proceedings of the 2nd International Scientific Computing in Object-Oriented Parallel Environments ({ISCOPE}'98), Lecture Notes in Computer Science}, + Date-Added = {2017-09-14 20:44:29 +0000}, + Date-Modified = {2017-09-14 20:44:29 +0000}, + Local-Url = {file://localhost/Users/smiths/LongTermArchives/Work/Research/References/GenerativeProgramming/Veldhuizen98.pdf}, + Publisher = {Springer-Verlag}, + Title = {Arrays in {Blitz++}}, + Year = {1998}, + Bdsk-File-1 = {YnBsaXN0MDDUAQIDBAUGJCVYJHZlcnNpb25YJG9iamVjdHNZJGFyY2hpdmVyVCR0b3ASAAGGoKgHCBMUFRYaIVUkbnVsbNMJCgsMDxJXTlMua2V5c1pOUy5vYmplY3RzViRjbGFzc6INDoACgAOiEBGABIAFgAdccmVsYXRpdmVQYXRoWWFsaWFzRGF0YV8QXC4uLy4uLy4uLy4uL0xvbmdUZXJtQXJjaGl2ZXMvV29yay9SZXNlYXJjaC9SZWZlcmVuY2VzL0dlbmVyYXRpdmVQcm9ncmFtbWluZy9WZWxkaHVpemVuOTgucGRm0hcLGBlXTlMuZGF0YU8RAgwAAAAAAgwAAgAADE1hY2ludG9zaCBIRAAAAAAAAAAAAAAAAAAAAMbFYQBIKwAAABKnhhBWZWxkaHVpemVuOTgucGRmAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAErN+yE50MlBERiBDQVJPAAQABgAACSAAAAAAAAAAAAAAAAAAAAAVR2VuZXJhdGl2ZVByb2dyYW1taW5nAAAQAAgAAMbFmUAAAAARAAgAAMhOrHIAAAABABwAEqeGABKiNgASoMoAEqCpABKgpQAIWfcAAHxjAAIAak1hY2ludG9zaCBIRDpVc2VyczpzbWl0aHM6TG9uZ1Rlcm1BcmNoaXZlczpXb3JrOlJlc2VhcmNoOlJlZmVyZW5jZXM6R2VuZXJhdGl2ZVByb2dyYW1taW5nOlZlbGRodWl6ZW45OC5wZGYADgAiABAAVgBlAGwAZABoAHUAaQB6AGUAbgA5ADgALgBwAGQAZgAPABoADABNAGEAYwBpAG4AdABvAHMAaAAgAEgARAASAF1Vc2Vycy9zbWl0aHMvTG9uZ1Rlcm1BcmNoaXZlcy9Xb3JrL1Jlc2VhcmNoL1JlZmVyZW5jZXMvR2VuZXJhdGl2ZVByb2dyYW1taW5nL1ZlbGRodWl6ZW45OC5wZGYAABMAAS8AABUAAgAN//8AAIAG0hscHR5aJGNsYXNzbmFtZVgkY2xhc3Nlc11OU011dGFibGVEYXRhox0fIFZOU0RhdGFYTlNPYmplY3TSGxwiI1xOU0RpY3Rpb25hcnmiIiBfEA9OU0tleWVkQXJjaGl2ZXLRJidUcm9vdIABAAgAEQAaACMALQAyADcAQABGAE0AVQBgAGcAagBsAG4AcQBzAHUAdwCEAI4A7QDyAPoDCgMMAxEDHAMlAzMDNwM+A0cDTANZA1wDbgNxA3YAAAAAAAACAQAAAAAAAAAoAAAAAAAAAAAAAAAAAAADeA==}} + +@article{WhaleyEtAl2001, + Author = {R. C. Whaley and A. Petitet and J. J. Dongarra}, + Date-Added = {2017-09-14 20:43:34 +0000}, + Date-Modified = {2017-09-14 20:43:34 +0000}, + Journal = {Parallel Computing}, + Local-Url = {file://localhost/Users/smiths/LongTermArchives/Work/Research/References/GenerativeProgramming/WhaleyEtAl2001.pdf}, + Number = {1--2}, + Pages = {3--35}, + Title = {Automated empirical optimization of software and the {ATLAS} project}, + Volume = {27}, + Year = {2001}, + Bdsk-File-1 = {YnBsaXN0MDDUAQIDBAUGJCVYJHZlcnNpb25YJG9iamVjdHNZJGFyY2hpdmVyVCR0b3ASAAGGoKgHCBMUFRYaIVUkbnVsbNMJCgsMDxJXTlMua2V5c1pOUy5vYmplY3RzViRjbGFzc6INDoACgAOiEBGABIAFgAdccmVsYXRpdmVQYXRoWWFsaWFzRGF0YV8QXi4uLy4uLy4uLy4uL0xvbmdUZXJtQXJjaGl2ZXMvV29yay9SZXNlYXJjaC9SZWZlcmVuY2VzL0dlbmVyYXRpdmVQcm9ncmFtbWluZy9XaGFsZXlFdEFsMjAwMS5wZGbSFwsYGVdOUy5kYXRhTxECFAAAAAACFAACAAAMTWFjaW50b3NoIEhEAAAAAAAAAAAAAAAAAAAAxsVhAEgrAAAAEqeGEldoYWxleUV0QWwyMDAxLnBkZgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASs67ITnQ1AAAAAAAAAAAABAAGAAAJIAAAAAAAAAAAAAAAAAAAABVHZW5lcmF0aXZlUHJvZ3JhbW1pbmcAABAACAAAxsWZQAAAABEACAAAyE6sdQAAAAEAHAASp4YAEqI2ABKgygASoKkAEqClAAhZ9wAAfGMAAgBsTWFjaW50b3NoIEhEOlVzZXJzOnNtaXRoczpMb25nVGVybUFyY2hpdmVzOldvcms6UmVzZWFyY2g6UmVmZXJlbmNlczpHZW5lcmF0aXZlUHJvZ3JhbW1pbmc6V2hhbGV5RXRBbDIwMDEucGRmAA4AJgASAFcAaABhAGwAZQB5AEUAdABBAGwAMgAwADAAMQAuAHAAZABmAA8AGgAMAE0AYQBjAGkAbgB0AG8AcwBoACAASABEABIAX1VzZXJzL3NtaXRocy9Mb25nVGVybUFyY2hpdmVzL1dvcmsvUmVzZWFyY2gvUmVmZXJlbmNlcy9HZW5lcmF0aXZlUHJvZ3JhbW1pbmcvV2hhbGV5RXRBbDIwMDEucGRmAAATAAEvAAAVAAIADf//AACABtIbHB0eWiRjbGFzc25hbWVYJGNsYXNzZXNdTlNNdXRhYmxlRGF0YaMdHyBWTlNEYXRhWE5TT2JqZWN00hscIiNcTlNEaWN0aW9uYXJ5oiIgXxAPTlNLZXllZEFyY2hpdmVy0SYnVHJvb3SAAQAIABEAGgAjAC0AMgA3AEAARgBNAFUAYABnAGoAbABuAHEAcwB1AHcAhACOAO8A9AD8AxQDFgMbAyYDLwM9A0EDSANRA1YDYwNmA3gDewOAAAAAAAAAAgEAAAAAAAAAKAAAAAAAAAAAAAAAAAAAA4I=}} + +@article{Carette2006, + Author = {Jacques Carette}, + Date-Added = {2017-09-14 20:43:20 +0000}, + Date-Modified = {2017-09-14 20:43:20 +0000}, + Journal = {Science of Computer Programming}, + Keywords = {MetaOCaml, linear algebra, genericity, generative, staging}, + Local-Url = {file://localhost/Users/smiths/LongTermArchives/Work/Research/References/ScientificComputing/Carette2006.pdf}, + Number = {1}, + Pages = {3--24}, + Title = {Gaussian Elimination: A case study in efficient genericity with {M}eta{OC}aml}, + Volume = {62}, + Year = {2006}, + Bdsk-File-1 = {YnBsaXN0MDDUAQIDBAUGJCVYJHZlcnNpb25YJG9iamVjdHNZJGFyY2hpdmVyVCR0b3ASAAGGoKgHCBMUFRYaIVUkbnVsbNMJCgsMDxJXTlMua2V5c1pOUy5vYmplY3RzViRjbGFzc6INDoACgAOiEBGABIAFgAdccmVsYXRpdmVQYXRoWWFsaWFzRGF0YV8QMS4uLy4uLy4uL1dvcmsvUmVzZWFyY2gvUmVmZXJlbmNlcy9DYXJldHRlMjAwNi5wZGbSFwsYGVdOUy5kYXRhTxEBrAAAAAABrAACAAAMTWFjaW50b3NoIEhEAAAAAAAAAAAAAAAAAAAAzpdzg0grAAAAFwIMD0NhcmV0dGUyMDA2LnBkZgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAS/y9TRHI/XAAAAAAAAAAAAAwAEAAAJIAAAAAAAAAAAAAAAAAAAAApSZWZlcmVuY2VzABAACAAAzperwwAAABEACAAA0RzWJwAAAAEAFAAXAgwAFwBNABb97QAI92YAAmSOAAIAR01hY2ludG9zaCBIRDpVc2VyczoAc21pdGhzOgBXb3JrOgBSZXNlYXJjaDoAUmVmZXJlbmNlczoAQ2FyZXR0ZTIwMDYucGRmAAAOACAADwBDAGEAcgBlAHQAdABlADIAMAAwADYALgBwAGQAZgAPABoADABNAGEAYwBpAG4AdABvAHMAaAAgAEgARAASADVVc2Vycy9zbWl0aHMvV29yay9SZXNlYXJjaC9SZWZlcmVuY2VzL0NhcmV0dGUyMDA2LnBkZgAAEwABLwAAFQACAA3//wAAgAbSGxwdHlokY2xhc3NuYW1lWCRjbGFzc2VzXU5TTXV0YWJsZURhdGGjHR8gVk5TRGF0YVhOU09iamVjdNIbHCIjXE5TRGljdGlvbmFyeaIiIF8QD05TS2V5ZWRBcmNoaXZlctEmJ1Ryb290gAEACAARABoAIwAtADIANwBAAEYATQBVAGAAZwBqAGwAbgBxAHMAdQB3AIQAjgDCAMcAzwJ/AoEChgKRApoCqAKsArMCvALBAs4C0QLjAuYC6wAAAAAAAAIBAAAAAAAAACgAAAAAAAAAAAAAAAAAAALt}} + +@incollection{Dijkstra1972, + Acmid = {1243381}, + Address = {London, UK, UK}, + Author = {Dijkstra, Edsger W.}, + Booktitle = {Structure Programming}, + Date-Added = {2017-09-14 20:42:43 +0000}, + Date-Modified = {2017-09-14 20:42:43 +0000}, + Editor = {Dahl, O. J. and Dijkstra, E. W. and Hoare, C. A. R.}, + Isbn = {0-12-200550-3}, + Numpages = {82}, + Pages = {1--82}, + Publisher = {Academic Press Ltd.}, + Title = {Notes on Structured Programming}, + Url = {http://dl.acm.org/citation.cfm?id=1243380.1243381}, + Year = {1972}, + Bdsk-File-1 = {YnBsaXN0MDDUAQIDBAUGJCVYJHZlcnNpb25YJG9iamVjdHNZJGFyY2hpdmVyVCR0b3ASAAGGoKgHCBMUFRYaIVUkbnVsbNMJCgsMDxJXTlMua2V5c1pOUy5vYmplY3RzViRjbGFzc6INDoACgAOiEBGABIAFgAdccmVsYXRpdmVQYXRoWWFsaWFzRGF0YV8QMC4uLy4uLy4uL1dvcmsvUmVzZWFyY2gvUmVmZXJlbmNlcy9jYi1zcC1kYWhsLnBkZtIXCxgZV05TLmRhdGFPEQGmAAAAAAGmAAIAAAxNYWNpbnRvc2ggSEQAAAAAAAAAAAAAAAAAAADOl3ODSCsAAAAXAgwOY2Itc3AtZGFobC5wZGYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAtvS2NBAYEQAAAAAAAAAAAADAAQAAAkgAAAAAAAAAAAAAAAAAAAAClJlZmVyZW5jZXMAEAAIAADOl6vDAAAAEQAIAADQQJiEAAAAAQAUABcCDAAXAE0AFv3tAAj3ZgACZI4AAgBGTWFjaW50b3NoIEhEOlVzZXJzOgBzbWl0aHM6AFdvcms6AFJlc2VhcmNoOgBSZWZlcmVuY2VzOgBjYi1zcC1kYWhsLnBkZgAOAB4ADgBjAGIALQBzAHAALQBkAGEAaABsAC4AcABkAGYADwAaAAwATQBhAGMAaQBuAHQAbwBzAGgAIABIAEQAEgA0VXNlcnMvc21pdGhzL1dvcmsvUmVzZWFyY2gvUmVmZXJlbmNlcy9jYi1zcC1kYWhsLnBkZgATAAEvAAAVAAIADf//AACABtIbHB0eWiRjbGFzc25hbWVYJGNsYXNzZXNdTlNNdXRhYmxlRGF0YaMdHyBWTlNEYXRhWE5TT2JqZWN00hscIiNcTlNEaWN0aW9uYXJ5oiIgXxAPTlNLZXllZEFyY2hpdmVy0SYnVHJvb3SAAQAIABEAGgAjAC0AMgA3AEAARgBNAFUAYABnAGoAbABuAHEAcwB1AHcAhACOAMEAxgDOAngCegJ/AooCkwKhAqUCrAK1AroCxwLKAtwC3wLkAAAAAAAAAgEAAAAAAAAAKAAAAAAAAAAAAAAAAAAAAuY=}, + Bdsk-Url-1 = {http://dl.acm.org/citation.cfm?id=1243380.1243381}} + +@article{Parnas1979, + Author = {David L. Parnas}, + Date-Added = {2017-09-14 20:42:25 +0000}, + Date-Modified = {2017-09-14 20:42:25 +0000}, + Journal = {IEEE Transactions on Software Engineering}, + Month = {March}, + Pages = {128-138}, + Title = {Designing Software for Ease of Extension and Contraction}, + Year = {1979}} + +@article{Parnas1976, + Author = {David Parnas}, + Date-Added = {2017-09-14 20:42:18 +0000}, + Date-Modified = {2017-09-14 20:42:18 +0000}, + Journal = {IEEE Transactions on Software Engineering}, + Keywords = {program families, step-wise refinement, modules}, + Number = {1}, + Pages = {1-9}, + Title = {On the design and development of program families}, + Volume = {SE-2}, + Year = {1976}} + +@book{PohlEtAl2005, + Author = {K. Pohl and G. B\"{o}ckle and F. van der Linden}, + Date-Added = {2017-09-14 20:42:09 +0000}, + Date-Modified = {2017-09-14 20:42:09 +0000}, + Publisher = {Springer-Verlag}, + Title = {Software Product Line Engineering: Foundations, Principles, and Techniques}, + Year = {2005}} + +@book{ClementsAndNorthrop2001, + Address = {Boston, MA, USA}, + Author = {Paul Clements and Linda M. Northrop}, + Date-Added = {2017-09-14 20:42:02 +0000}, + Date-Modified = {2017-09-14 20:42:02 +0000}, + Publisher = {Addison-Wesley Longman Publishing Co., Inc.}, + Title = {Software product lines: practices and patterns}, + Year = {2002}} + @inproceedings{SmithEtAl2008, Address = {Leipzig, Germany}, Author = {W. Spencer Smith and John McCutchan and Jacques Carette}, diff --git a/ReferenceMaterial/SQRL_TR48.pdf b/ReferenceMaterial/SQRL_TR48.pdf new file mode 100644 index 0000000000000000000000000000000000000000..4805e4f7e05a9a1fc545b42e1fa05de50f6ddc53 Binary files /dev/null and b/ReferenceMaterial/SQRL_TR48.pdf differ diff --git a/ReferenceMaterial/cb-sp-dahl.pdf b/ReferenceMaterial/cb-sp-dahl.pdf new file mode 100644 index 0000000000000000000000000000000000000000..3032b872134f1bff6cca56a757395e76e41d4b68 Binary files /dev/null and b/ReferenceMaterial/cb-sp-dahl.pdf differ