Skip to content
Snippets Groups Projects
Commit 777deb10 authored by Christophe Geuzaine's avatar Christophe Geuzaine
Browse files

clean

parent 4e8b6636
No related branches found
No related tags found
No related merge requests found
Showing with 20 additions and 1907 deletions
print-license:
split -l 40 LICENSE page-
echo "Page (1/3)" > head1.txt
echo "" >> head1.txt
echo "Page (2/3)" > head2.txt
echo "" >> head2.txt
echo "Page (3/3)" > head3.txt
echo "" >> head3.txt
echo " ../.." > foot.txt
cat head1.txt page-aa foot.txt > page1.txt
cat head2.txt page-ab foot.txt > page2.txt
cat head3.txt page-ac > page3.txt
rm -f page-a? head*.txt foot.txt
This is Gmsh, an automatic three-dimensional finite element mesh
generator, primarily Delaunay, with built-in pre- and post-processing
facilities.
To install Gmsh, type
./configure --disable-gsl
make
make install
This requires FLTK 1.1.x (configured with OpenGL support; freely
available from http://www.fltk.org) to be properly installed on your
system.
To install a non-graphical version of Gmsh (that does not require FLTK
nor OpenGL), type
./configure --disable-gsl --disable-gui
make
make install
For a description of all other configuration options, type
./configure --help
See doc/LICENSE and doc/CREDITS for licensing and copyright
information.
See the doc/ and tutorial/ directories for documentation. The
reference manual is located in doc/texinfo/.
See the demos/ directory for additional examples.
To distribute Gmsh under another license:
1) Put the license in the LICENSE file (in this directory, i.e.
in utils/commercial/LICENSE)
2) go to the base directory and "make source-commercial"
That's it!
The precise licensing conditions for this version of Gmsh can be found in
the @file{doc/LICENSE} file that accompanies the source code, or in
@ref{License}. Detailed copyright information can be found in the
@file{doc/CREDITS} file, or in @ref{Credits}.
Please send all Gmsh-related questions to the Gmsh mailing list at
@email{gmsh@@geuz.org}.
clean:
rm -f *.aux *.out *.bbl *.toc *.lof *.lot *.log *.blg *.dvi *.idx *.ind *.ilg\
\documentclass{article}
\usepackage{invoice}
\usepackage{hyperref}
\setlength{\parindent}{0mm}
\setlength{\textwidth}{150mm}
\setlength{\oddsidemargin}{30mm}
\setlength{\evensidemargin}{30mm}
\addtolength{\oddsidemargin}{-25.4mm}
\addtolength{\evensidemargin}{-25.4mm}
\pagestyle{empty}
\thispagestyle{empty}
\begin{document}
Dr. Christophe Geuzaine \hfill Phone: +1-626-395-5760\\
California Institute of Technology \hfill Fax: +1-626-578-0124\\
Applied and Computational Mathematics \hfill Email: geuzaine@acm.caltech.edu\\
1200 E. California Boulevard, MC 217-50 \hfill Website: \url{http://geuz.org/gmsh/}\\
Pasadena, CA 91125 \\
USA
\vspace*{3em}
\begin{minipage}{0.5\textwidth}\centering
\textbf{\large INVOICE}
\end{minipage}%
\begin{minipage}{0.5\textwidth}\flushright
\begin{tabular}{|l|l|}
\hline
\textbf{Invoice \#:} & 2003.006\\
\textbf{Invoice Date:} & December 11, 2003\\
\textbf{Customer ID:} & MIG1\\
\hline
\end{tabular}
\end{minipage}
\vspace*{3em}
\textbf{Bill To:}\smallskip
MIG Microwave Innovation Group\\
Fahrenheistr. 1\\
28359 Bremen\\
Germany
\bigskip
\begin{invoice}{USD}{0}
\ProjectTitle{Gmsh Mesh Tool Kit}
\Fee{Gmsh commercial license}{XXXX.00}{1}
\end{invoice}
\bigskip
\textbf{Important note:}\smallskip
Electronic payments through PayPal (see
\url{http://geuz.org/gmsh/order.html}) will be charged an additional 3\%
service fee on the Total amount printed above.
\end{document}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% File: invoice.def
% Author: Oliver Corff
% Date: 2001-12-06
%
% This file contains messages, labels etc. in English and German
%
% This file cannot be used alone but is called by invoice.sty
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% This file is the only file of this package which may be
% modified without renaming it.
%
% Adding a new language to labels is simple. Follow the
% instructions at line 194 of this file, and, please!,
% do not forget to send the result to
%
% corff@zedat.fu-berlin.de
%
% Credits for language contributions given in invoice.sty.
%
% Thank you very much for your support of "invoice".
%
% Oliver Corff,
%
% Berlin, Guangzhou, Ulaanbaatar, Zagreb, Shenyang 2001
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% English definitions are default. Other
% languages are selected automatically.
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% Warning messages for non-fatal situations
%
\def\InvoiceCompleted {Invoice completed. Command ignored.}%
\def\FeeSTExists {You cannot print a fee subtotal twice!}%
\def\ProjectEmpty {Project empty. No subtotal possible!}%
\def\ProjectSTExists {You cannot print a project subtotal twice!}%
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% Error messages for fatal situations
%
\def\InternalError {Package `invoice': Internal error!}%
%
\def\NoInvoiceNesting {Invoices cannot be nested.
Close this invoice first!}%
%
\def\InvoiceCompletedNoExpense {Invoice closed.
No new expense item allowed.
Start a new invoice
first!}%
%
\def\InvoiceCompletedNoFee {Invoice closed.
No new fee item allowed.
Start a new invoice
first!}%
%
\def\InvoiceCompletedNoFeeST {Invoice closed.
No fee subtotal allowed.
Start a new invoice
first!}%
%
\def\InvoiceCompletedNoProject {Invoice closed.
No new project allowed.
Start a new invoice
first!}%
%
\def\InvoiceCompletedNoProjectST {Invoice closed.
No project subtotal allowed.
Start a new invoice
first!}%
%
\def\MissingFee {No fee given.
You must charge at least one fee!}%
%
\def\MissingInputData {Missing input data!}%
%
\def\MissingOpening {You must open an invoice!}%
%
\def\MissingProject {No project given.
Open a project first!}%
%
\def\FeeBeforeExpense {Fees are charged first.
Expenses follow.}%
%
\def\NoProjectNesting {Projects cannot be nested.
Close this project first!}%
%
\def\ProjectCompletedNoExpense {Project closed.
No new expense item allowed.
Start a new project
first!}%
%
\def\ProjectCompletedNoFee {Project closed.
No new fee item allowed.
Start a new project
first!}%
%
\def\KOMA {Users of KOMA-Script's scrlettr.cls%
^^Jsay `invoiceno' for the scrlettr
invoice command,^^Jand `invoiceenv'
for the invoice environment!}%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% Labels. These ones are available in translation, too. See below.
%
\def\Warning {Warning}%
\def\Error {Error}%
\def\Expense {Expense}%
\def\Amount {Amount}%
\def\Currency {Currency}%
\def\Factor {Factor}%
\def\Activity {Activity}%
\def\Count {Count}%
\def\UnitRate {Rate/Unit}%
\def\Fees {Fees}%
\def\VAT {VAT}%
\def\Expenses {Expenses}%
\def\SumFees {Sum \Fees}%
\def\SumVAT {Sum \VAT}%
\def\SumExpenses {Sum \Expenses}%
\def\SubtotalFee {Subtotal \Fees}%
\def\SubtotalExpenses {Subtotal \Expenses}%
\def\SubtotalProject {Subtotal Project}%
\def\Total {Total}%
%
% This is German.
%
\ifx\l@german\undefined
\message{^^J(invoice) \Warning:
Language \string\l@german\space unknown.^^J^^J}
\else
\ifnum\number\language=\number\l@german
\def\Warning {Warnung}%
\def\Error {Fehler}%
\def\Expense {Auslage}%
\def\Amount {Betrag}%
\def\Currency {W\"ahrung}%
\def\Factor {Faktor}%
\def\Activity {Aktivit\"at}%
\def\Count {Anzahl}%
\def\UnitRate {Rate/Einheit}%
\def\Fees {Honorare}%
\def\VAT {MWSt.}%
\def\Expenses {Auslagen}%
\def\SumFees {Summe \Fees}%
\def\SumVAT {Summe \VAT}%
\def\SumExpenses {Summe \Expenses}%
\def\SubtotalFee {Zwischensumme \Fees}%
\def\SubtotalExpenses {Zwischensumme \Expenses}%
\def\SubtotalProject {Zwischensumme Projekt}%
\def\Total {Gesamtsumme}%
\fi\fi
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% This is Dutch.
%
\ifx\l@dutch\undefined
\message{^^J(invoice) \Warning:
Language \string\l@dutch\space unknown.^^J^^J}
\else
\ifnum\number\language=\number\l@dutch
\def\Warning {Waarschuwing}%
\def\Error {Fout}%
\def\Expense {Onkosten}%
\def\Amount {Bedrag}%
\def\Currency {Valuta}%
\def\Factor {Faktor}%
\def\Activity {Activiteit}%
\def\Count {Aantal}%
\def\UnitRate {Prijs/Eenheid}%
\def\Fees {Honorarium}%
\def\VAT {BTW}%
\def\Expenses {Onkosten}%
\def\SumFees {Totaal \Fees}%
\def\SumVAT {Totaal \VAT}%
\def\SumExpenses {Totaal \Expenses}%
\def\SubtotalFee {Subtotaal \Fees}%
\def\SubtotalExpenses {Subtotaal \Expenses}%
\def\SubtotalProject {Subtotaal project}%
\def\Total {Totaal}%
\fi\fi
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% This is French.
%
\ifx\l@french\undefined
\message{^^J(invoice) \Warning:
Language \string\l@french\space unknown.^^J^^J}
\else
\ifnum\number\language=\number\l@french
\def\Warning {Avertissement}%
\def\Error {Erreur}%
\def\Expense {D\'epense}%
\def\Amount {Montant}%
\def\Currency {Devise}%
\def\Factor {Facteur}%
\def\Activity {Activit\'e}%
\def\Count {Quantit\'e}%
\def\UnitRate {Prix/Unit\'e}%
\def\Fees {Honoraires}%
\def\VAT {TVA}%
\def\Expenses {D\'epenses}%
\def\SumFees {Total \Fees}%
\def\SumVAT {Total \VAT}%
\def\SumExpenses {Total \Expenses}%
\def\SubtotalFee {Sous-Total \Fees}%
\def\SubtotalExpenses {Sous-Total \Expenses}%
\def\SubtotalProject {Sous-Total Projet}%
\def\Total {Total}%
\fi\fi
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% How to add new label languages to the `invoice' package:
%
% 1. Copy all following lines after this explanation
% and insert them above this comment.
%
% 2. Remove all comment symbols at the beginning of the lines.
%
% 3. Fill the empty parentheses {} with the appropriate
% translations.
%
% 4. Enter the correct internal language name used by LaTeX2e
% into the condition of the \ifnum clause.
%
% 5. Please do not forget to mail the resulting file to
% corff@zedat.fu-berlin.de
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% Name correct language name here --v--
% and --v--!
%\ifx\l@german\undefined
% \message{^^J(invoice) \Warning:
% Language \string\l@german\space unknown.^^J^^J}
%\else
%\ifnum\number\language=\number\l@german
% \def\Warning {} % Enter translations here!
% \def\Error {} %
% \def\Expense {} %
% \def\Amount {} %
% \def\Currency {} %
% \def\Factor {} %
% \def\Activity {} %
% \def\Count {} %
% \def\UnitRate {} %
% \def\Fees {} %
% \def\VAT {} %
% \def\Expenses {} %
% \def\SumFees {} %
% \def\SumVAT {} %
% \def\SumExpenses {} %
% \def\SubtotalFee {} %
% \def\SubtotalExpenses {} %
% \def\SubtotalProject {} %
% \def\Total {} %
%\fi
This diff is collapsed.
%% realcalc.tex
%%
%% (C) Frank Buchholz, Jan. 1993
%% e-mail: buchholz@lusty.informatik.uni-dortmund.de
% User documentation: All lines starting with two %
% Try grep to extract these lines.
%%
%% Real arithmetic with big values and high precision.
%% Calculations are done with 9 decimal digits.
%% Usable with TeX and LaTeX.
%%
%% Parameter:
%%
%% <macro> Macro, witch catches the result.
%% <value> String or macro witch expands to a value in the range
%% from -2147483647.999999999 to 2147483647.999999999
%% <precision> Number from 0 to 9
%%
%% Functions:
%%
% Don't read this file twice
\ifx\Radd\undefined \else \endinput \fi
% Make "@" be a letters
\chardef\catamp=\the\catcode`\@
\catcode`@=11
\def\@Rversion{Version 1.0, Jan. 1993}
\message{`Real arithmetic', \@Rversion (C) Frank Buchholz}
% Allocation of temporary registers
\newcount\@ta
\newcount\@tb
%
\newcount\@xs % Sign of 1st value
\newcount\@xi % Integer part of 1st value
\newcount\@xf % Fractional part of 1st value
%
\newcount\@ys % Sign of 2nd value
\newcount\@yi % Integer part of 2nd value
\newcount\@yf % Fractional part of 2nd value
%
\newcount\@mil \@mil=1000000000 % 10^9
%
\countdef\@xa240
\countdef\@xb241
\countdef\@xc242
\countdef\@xd243
\countdef\@xe244
\countdef\@ya245
\countdef\@yb246
\countdef\@yc247
\countdef\@yd248
\countdef\@ye249
\let\@f=\@tb
\let\@product=\@ta
\chardef\@zero=0
%% \Radd<macro><value><value> Addition
\def\Radd#1#2#3{\@callc\@Radd#1{#2}{#3}}
%% \Rsub<macro><value><value> Subtraction
\def\Rsub#1#2#3{\@callc\@Radd#1{#2}{-#3}}
\def\@Radd#1#2.#3.#4\relax#5.#6.#7\relax{%
% #1 Macro, witch gets the result
% #2 integer part of 1st value
% #3 fractional part of 1st value
% #4 dummy to swallow everthing after the 2nd '.'
% #5 integer part of 2nd value
% #6 fractional part of 2nd value
% #7 dummy to swallow everthing after the 2nd '.'
%
\@readvalue\@xs\@xi\@xf{#2}{#3}%
\@readvalue\@ys\@yi\@yf{#5}{#6}%
%
% Add integer parts
\@ta=\@xi \advance\@ta\@yi%
%
% Add fractional parts if they are not zero
\ifnum\@xf=\@zero%
\ifnum\@yf=\@zero%
\@tb=\@zero%
\else%
\@longadd%
\fi%
\else%
\@longadd%
\fi%
%
% Store result
\@store#1\@ta\@tb%
}
\def\@longadd{%
% Propagate sign to fractional parts
\multiply\@xf\@xs \multiply\@yf\@ys%
%
% Add fractional parts
\@tb=\@xf \advance\@tb\@yf%
%
% Calculate carry
\ifnum\@tb<\@zero%
\ifnum\@tb<-\@mil \advance\@ta -\@ne \advance\@tb\@mil \fi%
\else%
\ifnum\@tb<\@mil \else \advance\@ta \@ne \advance\@tb-\@mil \fi%
\fi%
}
%% \Rmul<macro><value><value> Multiplication
\def\Rmul#1#2#3{\@callc\@Rmul#1{#2}{#3}}
\def\@Rmul#1#2.#3.#4\relax#5.#6.#7\relax{%
% #1 Macro, witch gets the result
% #2 integer part of 1st value
% #3 fractional part of 1st value
% #4 dummy to swallow everthing after the 2nd '.'
% #5 integer part of 2nd value
% #6 fractional part of 2nd value
% #7 dummy to swallow everthing after the 2nd '.'
%
% How to do real multiplications:
% Split values in various parts
% x y = 1234 567890 . 123 456 789
% -> xa xb xc xd xe
% -> ya yb yc yd ye
% Do 21 (!) integer multiplications if there are any fractional parts
% r = x * Y
% -> r = xi*yi
% + (xa*yc + xa*yc )*10^3
% + (xa*yd + xd*ya )*10^-0
% + (xa*ye + xe*ya + xb*yc + xc*yb)*10^-3
% + (xb*yd + xd*yb + xc*yc )*10^-6
% + (xb*ye + xe*yb + xc*yd + xd*yc)*10^-9
% + (xc*ye + xe*yc + xd*yd )*10^-12
% + (xd*ye + xe*yd )*10^-15
% + (xe*ye )*10^-18
%
% -> r = ((((( xe*ye / 1000
% + xd*ye + xe*yd ) / 1000
% + xc*ye + xe*yc + xd*yd ) / 1000
% + xb*ye + xe*yb + xc*yd + xd*yc ) / 1000
% + xb*yd + xd*yb + xc*yc ) / 1000
% + xa*ye + ye*xa + xb*yc + xc*yb ) / 1000
% + xa*yd + xd*ya + (xa*yc + ya*xc)*1000 + xi*yi
% The last three digigs are saved just before the divisions.
%
% Init
%
\@readvalue\@xs\@xi\@xf{#2}{#3}%
\@readvalue\@ys\@yi\@yf{#5}{#6}%
%
% Sign
\multiply\@xi\@xs%
\multiply\@yi\@ys%
\multiply\@xs\@ys%
%
\@product=\@zero%
%
\ifnum\@xf=\@zero%
\ifnum\@yf=\@zero%
% No fractional parts
\edef\@frac{000000000} % digits of fractional part
\else%
\@longmul % Long multiplication
\fi%
\else%
\@longmul % Long multiplication
\fi%
%
% Multiply integer parts
\count@=\@xi \multiply\count@\@yi%
\advance\@product\count@%
%
% Sign
\multiply\@product\@xs%
%
% Store result
\edef#1{\number\@product.\@frac}%
}
% Do long multiplication
\def\@longmul{%
% Split values in pieces
\@f=1000000%
\count@=\@xi%
\divide\count@\@f \@xa=\count@%
\multiply\count@-\@f \advance\count@\@xi \@xb=\count@%
\count@=\@xf%
\divide\count@\@f \@xc=\count@%
\multiply\count@-\@f \advance\count@\@xf%
\@f=1000%
\@xe=\count@%
\divide\count@\@f \@xd=\count@%
\multiply\count@-\@f \advance\count@\@xe \@xe=\count@%
%
\@f=1000000%
\count@=\@yi%
\divide\count@\@f \@ya=\count@%
\multiply\count@-\@f \advance\count@\@yi \@yb=\count@%
\count@=\@yf%
\divide\count@\@f \@yc=\count@%
\multiply\count@-\@f \advance\count@\@yf%
\@f=1000%
\@ye=\count@%
\divide\count@\@f \@yd=\count@%
\multiply\count@-\@f \advance\count@\@ye \@ye=\count@%
%
\edef\@frac{} % digits of fractional part
%
\@mul ee \relax\@shift % 10^-18
\@mul de ed \relax\@shift % 10^-15
\@mul ce ec dd \relax\@shift % 10^-12
\@mul be eb cd dc \relax\@saveshift % 10^-9
\@mul bd db cc \relax\@saveshift % 10^-6
\@mul ae ea bc cb \relax\@saveshift % 10^-3
\multiply\@xa\@f \multiply\@xc\@f % 10^3
\@mul ad da ac ca \relax%
}
\def\@mul#1#2#3{%
\count@=\csname @x#1\endcsname%
\multiply\count@\csname @y#2\endcsname%
\advance\@product\count@%
%
\ifx#3\relax%
\let\next=\relax%
\else%
\let\next=\@mul%
\fi%
\next#3%
}
\def\@shift{%
\divide\@product\@f%
}
\def\@saveshift{%
% Save rightmost digits
\count@=\@product%
\divide\@product\@f%
\multiply\@product\@f%
\advance\count@-\@product%
\advance\count@\@f%
\edef\@frac{\expandafter\@ignorenext\number\count@\@frac}%
%
\divide\@product\@f%
}
%% \Rdiv<macro><value><value> Division
\def\Rdiv#1#2#3{\@callc\@Radd#1{#2}{#3}}
\def\@Rdiv#1#2.#3.#4\relax#5.#6.#7\relax{%
% #1 Macro, witch gets the result
% #2 integer part of 1st value
% #3 fractional part of 1st value
% #4 dummy to swallow everthing after the 2nd '.'
% #5 integer part of 2nd value
% #6 fractional part of 2nd value
% #7 dummy to swallow everthing after the 2nd '.'
%
\message{Error: Rdiv not ready}
%
\@readvalue\@xs\@xi\@xf{#2}{#3}%
\@readvalue\@ys\@yi\@yf{#5}{#6}%
%
\ifnum\@yi=\@zero
\@xi=\@zero
\else
\divide\@xi\@yi
\fi
%
\@store#1\@xi\@xf%
}
%% \Rneg<macro><value> Negation
\def\Rneg#1#2{%
% Expand the value and split it into the integer and the fractional part
\edef\next{\noexpand\@Rneg\noexpand#1#2..\noexpand\relax}%
\next%
}
\def\@Rneg#1#2.#3.#4\relax{
% #1 Macro, witch gets the result
% #2 Integer part of value
% #3 Fractional part of value
% #4 Remaining tokens
%
\@readvalue\@xs\@xi\@xf{#2}{#3}%
%
% Change sign
\multiply\@xi-\@ne%
\multiply\@xf-\@xs%
%
% Store result
\@store#1\@xi\@xf%
}
%%
%% \Rtrunc<macro><precision><value> Truncate value to specified precision
\def\Rtrunc#1#2#3{%
% Expand parameter and split the value into the integer and fractional part
\edef\next{\noexpand\@Rtrunc\noexpand#1#2#3..\noexpand\relax}%
\next%
}
\def\@Rtrunc#1#2#3.#4.#5\relax{%
% #1 Macro, witch gets the result
% #2 Number of decimal places
% #3 Integer part of value
% #4 Fractional part of value
% #5 dummy to swallow everthing after the 2nd '.'
%
\count@=#2%
\edef\next{\empty}%
\ifnum\count@>\@zero%
\expandafter\@@Rtrunc#4000000000\relax%
\fi%
\edef#1{#3\next}%
}
\def\@@Rtrunc#1#2#3#4#5#6#7#8#9{%
% #1...#9 fractional part, padded with trailing zeros
\edef\next{.#1%
\ifnum\count@>1 #2\fi%
\ifnum\count@>2 #3\fi%
\ifnum\count@>3 #4\fi%
\ifnum\count@>4 #5\fi%
\ifnum\count@>5 #6\fi%
\ifnum\count@>6 #7\fi%
\ifnum\count@>7 #8\fi%
\ifnum\count@>8 #9\fi%
}%
\@swallow%
}
%%
%% \Rifle<value><value> Test v1 < v2
\def\Rifle#1#2{\@callb\@Rifle{#1}{#2}}
\def\@Rifle#1.#2.#3\relax#4.#5.#6\relax{%
% #1 integer part of 1st value
% #2 fractional part of 1st value
% #3 dummy to swallow everthing after the 2nd '.'
% #4 integer part of 2nd value
% #5 fractional part of 2nd value
% #6 dummy to swallow everthing after the 2nd '.'
%
\@readvalue\@xs\@xi\@xf{#1}{#2}%
\@readvalue\@ys\@yi\@yf{#4}{#5}%
%
\ifnum\@xs<\@ys%
\Rtesttrue%
\else%
\ifnum\@xs>\@ys%
\Rtestfalse%
\else%
\Rtestfalse%
\ifnum\@xi<\@yi \Rtesttrue \fi%
\ifnum\@xi=\@yi%
\multiply\@xf\@xs \multiply\@yf\@ys%
\ifnum\@xf<\@yf \Rtesttrue \fi%
\fi%
\fi%
\fi%
%
\ifRtest%
}
%% \Rifeq<value><value> Test v1 = v2
\def\Rifeq#1#2{\@callb\@Rifeq{#1}{#2}}
\def\@Rifeq#1.#2.#3\relax#4.#5.#6\relax{%
% #1 integer part of 1st value
% #2 fractional part of 1st value
% #3 dummy to swallow everthing after the 2nd '.'
% #4 integer part of 2nd value
% #5 fractional part of 2nd value
% #6 dummy to swallow everthing after the 2nd '.'
%
\@readvalue\@xs\@xi\@xf{#1}{#2}%
\@readvalue\@ys\@yi\@yf{#4}{#5}%
%
\Rtestfalse%
\ifnum\@xi=\@yi\ifnum\@xf=\@yf \Rtesttrue \fi\fi%
\ifRtest%
}
%% \Rifgt<value><value> Test v1 > v2
\def\Rifgt#1#2{\@callb\@Rifgt{#1}{#2}}
\def\@Rifgt#1.#2.#3\relax#4.#5.#6\relax{%
% #1 integer part of 1st value
% #2 fractional part of 1st value
% #3 dummy to swallow everthing after the 2nd '.'
% #4 integer part of 2nd value
% #5 fractional part of 2nd value
% #6 dummy to swallow everthing after the 2nd '.'
%
\@readvalue\@xs\@xi\@xf{#1}{#2}%
\@readvalue\@ys\@yi\@yf{#4}{#5}%
%
\ifnum\@xs>\@ys%
\Rtesttrue%
\else%
\ifnum\@xs<\@ys%
\Rtestfalse%
\else%
\Rtestfalse%
\ifnum\@xi>\@yi \Rtesttrue \fi%
\ifnum\@xi=\@yi%
\multiply\@xf\@xs \multiply\@yf\@ys%
\ifnum\@xf>\@yf \Rtesttrue \fi%
\fi%
\fi%
\fi%
%
\ifRtest%
}
%% \Rifneg<value> Test v < 0
\def\Rifneg#1{\@calla\@Rifneg{#1}}
\def\@Rifneg#1.#2.#3\relax{%
% #1 Integer part of value
% #2 Fractional part of value
% #3 dummy to swallow everthing after the 2nd '.'
%
\@readvalue\@xs\@xi\@xf{#1}{#2}%
%
\ifnum\@xs<0 \Rtesttrue \else \Rtestfalse \fi%
\ifRtest%
}
%% \Rifzero<value> Test v = 0
\def\Rifzero#1{\@calla\@Rifzero{#1}}
\def\@Rifzero#1.#2.#3\relax{%
% #1 Integer part of value
% #2 Fractional part of value
% #3 dummy to swallow everthing after the 2nd '.'
%
\@readvalue\@xs\@xi\@xf{#1}{#2}%
%
\Rtestfalse%
\ifnum\@xi=\@zero \ifnum\@xf=\@zero \Rtesttrue \fi \fi%
\ifRtest%
}
%% \Rifpos<value> Test v >= 0
%% Take care to have a corresponding \fi
\def\Rifpos#1{\@calla\@Rifpos{#1}}
\def\@Rifpos#1.#2.#3\relax{%
% #1 Integer part of value
% #2 Fractional part of value
% #3 dummy to swallow everthing after the 2nd '.'
%
\@readvalue\@xs\@xi\@xf{#1}{#2}%
%
\ifnum\@xs<0 \Rtestfalse \else \Rtesttrue \fi%
\ifRtest%
}
%% \Rifint<value> Test v is an integer value
%% Take care to have a corresponding \fi
\def\Rifint#1{\@calla\@Rifint{#1}}
\def\@Rifint#1.#2.#3\relax{%
% #1 Integer part of value
% #2 Fractional part of value
% #3 dummy to swallow everthing after the 2nd '.'
%
\@readvalue\@xs\@xi\@xf{#1}{#2}%
%
\ifnum\@xf=0 \Rtesttrue \else \Rtestfalse \fi%
\ifRtest%
}
% Utility macros
\def\@calla#1#2{%
% #1 Macro to call
% #2 Value
% Expand the value and split them into the integer and the fractional part
\edef\next{\noexpand#1#2..\noexpand\relax}%
\next%
}
\def\@callb#1#2#3{%
% #1 Macro to call
% #2 1st value
% #3 2nd value
% Expand the values and split them into the integer and the fractional parts
\edef\next{\noexpand#1#2..\noexpand\relax#3..\noexpand\relax}%
\next%
}
\def\@callc#1#2#3#4{%
% #1 Macro to call
% #2 Macro, witch gets the result
% #3 1st value
% #4 2nd value
% Expand the values and split them into the integer and the fractional parts
\edef\next{\noexpand#1\noexpand#2#3..\noexpand\relax#4..\noexpand\relax}%
\next%
}
%% \ifRtest ... \else ... \fi Re-execute the last test
\newif\ifRtest
%
% Read value
%
\def\@readvalue#1#2#3#4#5{%
% #1 macro to catch the sign ( -1 or 1 )
% #2 macro to catch the integer part (maybe negative)
% #3 macro to catch the fractional part (positive)
% #4.#5 value
%
% Regular expression [-...d]d...["."[d...]]
% Attention: There has to be at least one digit between "-" and "."!
%
% Integer part
\if !#4! #2=\@zero \else #2=#4 \fi%
%
% Sign
\ifnum#2<\@zero #1=-\@ne \else #1=\@ne \fi%
\ifnum#2=\@zero \ifnum #4#5<\@zero #1=-\@ne \fi \fi%
%
% Fractional part
\if !#5!%
#3=\@zero%
\else%
\@@setcount@#5000000000\relax%
#3=\count@%
\fi%
}
% Set count@ to fractional part with trailing zeros
\def\@@setcount@#1#2#3#4#5#6#7#8#9{%
% #1...#9 fractional part, padded with '0'
\count@=#1#2#3#4#5#6#7#8#9%
\@swallow%
}
% Swallow everything up to next \relax
\def\@swallow#1\relax{}
%
% Store result
%
\def\@store#1#2#3{%
% #1 marcro to catch the result
% #2 counter with integer part (maybe negative)
% #3 counter with fractional part (maybe negative}
%
% Sign
\edef#1{}%
\count@=#3%
\ifnum\count@<\@zero%
\count@=-\count@%
\ifnum#2=\@zero%
\edef#1{-}%
\fi%
\fi%
%
% Pad fractional part with leading zeros
\advance\count@\@mil%
%
% Store result
\edef#1{#1\number#2.\expandafter\@ignorenext\number\count@}%
}
% Ignore next token
\def\@ignorenext#1{}
% Restore catcode of "@"
\catcode`\@=\catamp
@verbatiminclude ../LICENSE
Page (1/3)
SOFTWARE AGREEMENT
between
BUYER
and
Christophe GEUZAINE & Jean-Francois REMACLE
Copyright holders of the Gmsh Software
This Software Agreement (hereinafter referred to as "AGREEMENT") made
as of ____________________________________, is entered into between
Christophe GEUZAINE and Jean-Francois REMACLE (hereinafter referred to
as "GMSH AUTHOR") and BUYER (hereinafter referred to as "BUYER").
This AGREEMENT governs the use by BUYER of the Gmsh Mesh Generation
Tool Kit and all its elements (hereinafter referred to as "SOFTWARE"),
which includes source code and documentation.
This AGREEMENT constitutes the complete and exclusive statement of the
AGREEMENT between the parties and supersedes all proposals, oral or
written, and all other communications relating to the subject matter
of this AGREEMENT. No modification thereof shall be binding upon GMSH
AUTHOR unless acknowledged in writing by GMSH AUTHOR authorized
representative.
1. GRANT AND SCOPE OF LICENSE
-----------------------------
For the purpose of this Article, the term "BUYERS" shall include all
buyer's subsidiaries and affiliates which are 50% or more owned or
controlled by BUYER.
GMSH AUTHOR hereby grants to BUYER a paid-up, non-exclusive, right to
use, modify or sell the SOFTWARE subject to the following terms,
conditions, and restrictions:
1.1 Access to the source code of the SOFTWARE in any manner by any
../..
Page (2/3)
person not employed by the BUYER is prohibited.
1.2 The BUYER has the right of possession of the source code in
accordance with this AGREEMENT. The BUYER has the right to modify the
software to perform any functions which the BUYER deems desirable.
The source code as so modified, shall nonetheless, remain subject to
the same restrictions on use, reproduction, transmission, disclosure,
translation and access as are contained in the AGREEMENT with respect
to SOFTWARE for a period of 3 years.
2. ERRORS AND WARRANTY
----------------------
2.1 GMSH AUTHOR shall not be responsible or liable for any damages
suffered by BUYER or others resulting from use of the SOFTWARE
including, but not limited to, special, indirect or consequential
damages arising out of or in connection with any errors in the
SOFTWARE. BUYER hereby agrees to indemnify and hold harmless GMSH
AUTHOR with respect to any and all injury, claim, loss, damage, either
special, indirect, consequential or otherwise, which shall arise from
the use of the SOFTWARE.
2.2 GMSH AUTHOR MAKES NO WARRANTIES, REPRESENTATIONS OR GUARANTEES,
INCLUDING BUT NOT LIMITED TO, WARRANTIES OR MERCHANTABILITY OR FITNESS
FOR INTENDED USE, REGARDING THE SOFTWARE.
3. CONSIDERATION
----------------
In consideration of the sale of the SOFTWARE granted to BUYER under
section 1 of this AGREEMENT, BUYER agrees to pay to GMSH AUTHOR, the
lump sum of ______________________. BUYER agrees to pay directly to
GMSH AUTHOR any local, state, or federal taxes which may accrue or be
levied due to the granting of this license, exclusive, however, of
taxes based on net income.
4. TITLE/PROPRIETARY RIGHTS
---------------------------
4.1 GMSH AUTHOR represents that it is the owner and copyright holder
../..
Page (3/3)
of the original version of the SOFTWARE. BUYER acknowledges that this
AGREEMENT grants to it no interest in the title to the original
version of the software. Any copies of the original version SOFTWARE,
in whole or part which are made by BUYER shall be and remain the sole
property of GMSH AUTHOR.
4.2 BUYER acknowledges that pursuant to this AGREEMENT, it obtains
only the right to use, modify and resell the SOFTWARE but that no
right, title or interest in or to any copyrights is transferred from
GMSH AUTHOR to BUYER.
4.3 BUYER shall not remove, alter, cover or obliterate any copyright
notice placed by GMSH AUTHOR on the SOFTWARE.
4.4 BUYER will make best effort to acknowledge GMSH AUTHOR as the
developer of the original version of the SOFTWARE in the user
documentation relating to the use of the SOFTWARE.
For GMSH AUTHOR:
_____________________________
Name
_____________________________ _____________________________
Signature Date
Accepted for BUYER:
_____________________________ _____________________________
Name Title
_____________________________ _____________________________
Signature Date
#!/bin/sh
# This script removes all references to the GPL in the source code and documentation
if [ $# -lt 1 ]; then
echo "Usage: $0 path" 1>&2;
exit 1;
fi
path=$1
# Remove the big license blocks
files=`find ${path} -name "*.cpp" -o -name "*.h" -o -name "*.y" -o -name "*.in"\
-o -name "*.c" -o -name "*.l" -o -name "*.texi" -o -name "Makefile*"`
for A in $files; do
echo "cleaning up \"$A\""
mv $A $A.old
sed -e "/\/\/ This program is free software; you can redistribute/,/USA./D"\
-e '/\/\/ Copyright (C).*Remacle/a\
//\
// This software is provided "as is" without express or implied warranty.\
// See the file "doc/LICENSE" for the licensing terms.'\
-e "/# This program is free software; you can redistribute/,/USA./D"\
-e '/# Copyright (C).*Remacle/a\
#\
# This software is provided "as is" without express or implied warranty.\
# See the file "doc/LICENSE" for the licensing terms.'\
-e "/ \* This program is free software; you can redistribute/,/provide one./D"\
-e '/ \* Copyright (C).*Christophe/a\
\ \*\
\ \* This software is provided "as is" without express or implied warranty.\
\ \* See the file "doc/LICENSE" for the licensing terms.'\
-e "/@c This program is free software; you can redistribute/,/USA./D"\
-e '/@c Copyright (C).*Remacle/a\
@c\
@c This software is provided "as is" without express or implied warranty.\
@c See the file "doc/LICENSE" for the licensing terms.'\
-e "/dnl This program is free software; you can redistribute/,/USA./D"\
-e '/dnl Copyright (C).*Remacle/a\
dnl\
dnl This software is provided "as is" without express or implied warranty.\
dnl See the file "doc/LICENSE" for the licensing terms.'\
$A.old > $A
rm -f $A.old
done
# Remove the license string in the top makefile
files=`find ${path} -name "Makefile*"`
for A in $files; do
echo "cleaning up \"$A\""
mv $A $A.old
sed -e "s/GNU General Public License/Commercial/g" $A.old > $A
rm -f $A.old
done
...@@ -23,17 +23,27 @@ int main(int argc, char **argv) ...@@ -23,17 +23,27 @@ int main(int argc, char **argv)
// import the shape in gmsh and mesh it // import the shape in gmsh and mesh it
GmshInitialize(argc, argv); GmshInitialize(argc, argv);
GModel *m = new GModel();
m->importOCCShape((void*)&shape, 0); GModel m;
m->mesh(2); m.importOCCShape((void*)&shape, 0);
for(GModel::riter it = m->firstRegion(); it != m->lastRegion(); ++it){ m.mesh(2);
GRegion *r = *it;
printf("volume %d contains %d elements:\n", r->tag(), r->getNumMeshElements()); for(GModel::fiter it = m.firstFace(); it != m.lastFace(); ++it){
for(unsigned int i = 0; i < r->getNumMeshElements(); i++) GFace *f = *it;
printf(" %d", r->getMeshElement(i)->getNum()); printf("Surface %d contains %d elements:\n", f->tag(), f->getNumMeshElements());
for(unsigned int i = 0; i < f->getNumMeshElements(); i++){
MElement *e = f->getMeshElement(i);
printf(" element %d:", e->getNum());
for(unsigned int j = 0; j < e->getNumVertices(); j++){
MVertex *v = e->getVertex(j);
printf(" %d (%g,%g,%g)", v->getNum(), v->x(), v->y(), v->z());
}
printf("\n"); printf("\n");
} }
m->writeMSH("test.msh"); printf("\n");
delete m; }
m.writeMSH("test.msh");
GmshFinalize(); GmshFinalize();
} }
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment