Full Download Computational Nuclear Engineering and Radiological Science Using Python 1st Edition Ryan Mcclarren PDF
Full Download Computational Nuclear Engineering and Radiological Science Using Python 1st Edition Ryan Mcclarren PDF
com
https://textbookfull.com/product/computational-
nuclear-engineering-and-radiological-science-
using-python-1st-edition-ryan-mcclarren/
https://textbookfull.com/product/fundamentals-of-nuclear-science-and-
engineering-third-edition-faw/
textbookfull.com
https://textbookfull.com/product/ethics-and-law-for-chemical-
biological-radiological-nuclear-explosive-crises-donal-p-omathuna/
textbookfull.com
https://textbookfull.com/product/chemical-and-biomedical-engineering-
calculations-using-python-1st-edition-jeffrey-j-heys/
textbookfull.com
https://textbookfull.com/product/textbook-of-oncofertility-research-
and-practice-a-multidisciplinary-approach-teresa-k-woodruff-editor/
textbookfull.com
Dante and Polish Writers : From Romanticism to the Present
1st Edition Andrea Ceccherelli
https://textbookfull.com/product/dante-and-polish-writers-from-
romanticism-to-the-present-1st-edition-andrea-ceccherelli/
textbookfull.com
https://textbookfull.com/product/desert-storm-1991-the-most-
shattering-air-campaign-in-history-1st-edition-richard-p-hallion/
textbookfull.com
https://textbookfull.com/product/eddie-a-short-curvy-girl-rock-star-
romance-she-rocks-my-heart-book-4-1st-edition-eve-london-london-eve/
textbookfull.com
https://textbookfull.com/product/the-product-managers-desk-
reference-3rd-edition-steven-haines/
textbookfull.com
ISBN: 978-0-12-812253-2
Acknowledgment xvii
3. Functions, Scoping, Recursion, and
I Other Miscellany
vii
viii CONTENTS
13. Open Root Finding Methods 16.1 Gauss Quadrature Rules 187
16.1.1. Where Did The�e Point� Come
13.1 Newton's Method 230
From? 288
13.2 Inexact Ne\\'ron 234
16.1.2. Code for Gauss-Legendre
13.J Secant Method 236
Quadrature 290
1304 Slow Convergence 238
16.2 Multi.dim ensionallntegrals 294
13.5 Newton's Method for Systems of Equarions 242
Coda 297
13.5.1. Rec tangular Parallelepiped
Problems 298
(Shoebox) Reactor Exmnple 243
Short Exercises 298
Coda 247
Programming Projects 298
Problems 147
Short Exercises 247
Programming Projects 247 17. Initial Value Problems
Ryan G. McClarren first tried to use com- a scientist at Los Alamos National Labora-
puters to solve scientific problems in mid- tory in the Computational Physics and Meth-
dle school when he thought his self-taught ods Group (CCS-2). He is the author of over
BASIC programming skills might make his al- 40 publications appearing in peer-reviewed
gebra homework easier. Currently, he is As- journals, including the Journal of Compu-
sociate Professor of Aerospace and Mechan- tational Physics, Nuclear Science and Engi-
ical Engineering at the University of Notre
neering, Physics of Plasmas, and the Journal
Dame. He obtained his Ph.D. (nuclear engi-
of Computational and Theoretical Transport.
neering and radiological sciences) from the
He also has extensive experience in applied
University of Michigan. He is an active re-
searcher in numerical methods for radiation data science and has consulted for a vari-
transport problems and uncertainty quan- ety of large firms applying computational
tification. Prior to joining Notre Dame, he science to problems in the retail, banking,
was Assistant Professor of Nuclear Engineer- and entertainment spaces. He lives in Indi-
ing in the Dwight Look College of Engi- ana with his wife, Katie and their four chil-
neering at Texas A&M University, and was dren: Beatrix, Flannery, Lowry, and Cormac.
xiii
Preface
This book is intended to serve two pur- where some knowledge of diffusion theory
poses: one to introduce students in nuclear for neutral particles is assumed. Neverthe-
and radiological engineering to Python and less, references to the relevant background
to use Python as a pedagogical tool for nu- are given.
merical methods relevant to their studies. The final part of the text covers the impor-
The audience for this book is intended to tant topic of Monte Carlo methods for parti-
be junior and senior undergraduate students. cle transport, in particular neutron transport.
Most of the material is, however, suitable The discussion mentions neutrons specifi-
for sophomore students if appropriate back- cally, but of the techniques directly apply
ground is provided for the nuclear reactor to gamma or x-ray transport, the eigenvalue
and radiation physics. The book arose out of discussion in Chapter 23 notwithstanding.
a set of lecture notes for a course at Texas For the Monte Carlo chapters, the discus-
A&M University that was for juniors who sion walks a fine line between demonstrating
had previously taken a course in nuclear re- the full power of Monte Carlo methods and
actor theory. minimizing the length of code listings. The
The first part of the book serves as the idea is to show the reader how complications
introduction to Python 3 and the relevant
could be added to Monte Carlo codes, with-
libraries for scientific computing (namely
out having each code have the totality of the
NumPy and Matplotlib). The use of the li-
functionality discussed.
brary SciPy is scrupulously minimized. This
This book adopts the philosophy that all
is not because the library is not useful (I find
the elements of the text should, where pos-
it particularly useful). Rather, learning the
numerical methods needed for engineering sible, be included in the flow of the discus-
problems would be minimized if students sion and not to treat figures and code listings
had such methods delivered on an Argen- as floating objects that can appear far from
tine platter. Additionally, this book does where they are mentioned. Additionally, in
not cover object-oriented programming with the early chapters, the code to generate the
Python. While this will be a useful skill for figures is included to demonstrate how one
those students that will develop engineering makes such figures using Python.
software as a career, there is simply not room The exercises in this book have been cho-
to do it justice in a single text. sen to demonstrate the features of the nu-
The second part of the text introduces tra- merical methods or Python code features dis-
ditional engineering numerical methods and cussed. The solutions are intended to include
applies them to engineering problems rel- a large amount of discussion and critical
evant to the audience. On the whole, the analysis of the results. This is especially true
applications do not assume a great deal for the programming projects. Ideally, the so-
of nuclear or radiological engineering back- lutions provided by students for these prob-
ground. The exception is chapters 18–20, lems are mini-lab reports, because in these
xv
xvi PREFACE
problems, the students are performing nu- Those students who do go on to be com-
merical experiments. putational scientists will deepen their un-
Finally, this book seeks to serve the needs derstanding in additional courses and read-
of students by making Python a tool for ing. I fully realize that this point of view
them to use to solve engineering problems. is not universally adopted. I only point out
Many of problems are designed to teach a that using calculators without understand-
student how to set up a problem and then ing the circuit boards inside did not make
solve it with a known algorithm. The pri- previous generations of students lesser scien-
mary goal is to know how to apply the tists.
method. My view is that a deep understand- My ultimate goal is that this book gen-
ing of numerical techniques is preferable, erates excitement in students for computa-
but not de rigeur for contemporary students. tional science.
Ryan G. McClarren
April 27, 2017
Acknowledgment
This text would not be possible with- Dr. Jean Ragusa for allowing me to present
out the many students who asked ques- a modified version of some of his problems
tions, pointed out mistakes, or told me what from when he taught a course using For-
I said that did not make sense during lec- tran.
tures or after reading my notes. In particu- I would also like to acknowledge the great
lar I want to thank Patrick Behne for catch- technology of Jupyter notebooks for creating
ing many errors in a very early draft of a means to express code in such a way as
my notes, and Logan Harbour for helping to interweave it with the reasoning behind
with the solutions to almost of the prob- it. I only hope that I could do the medium
lems herein. I would also like to thank justice.
Ryan G. McClarren
April 27, 2017
xvii
PAR T I
INTRODUCTION TO PYTHON
FOR SCIENTIFIC COMPUTING
C H A P T E R
1
Getting Started in Python
O U T L I N E
You can be shaped, or you can be broken. There is not much in between. Try to learn. Be coachable.
Try to learn from everybody, especially those who fail. This is hard. ... How promising you are as a
Student of the Game is a function of what you can pay attention to without running away.
David Foster Wallace, Infinite Jest
CHAPTER POINTS
• Python is a computer programming • Branching executes different parts of a
language that we can use to solve code depending on conditions the
engineering problems. programmer defines.
• One stores information in variables and • Iteration execute the same block of code
can make computations and comparisons repeatedly under controlled conditions.
with those variables.
In our study of computational nuclear engineering we are going to use Python, specifically
version 3 of Python. Python is a powerful and widely accepted programming language that
can do just about anything lower-level programming languages like Fortran, C, and C++ can.
By learning to program in Python, you will learn the skills you need to program in any other
computer language with relative ease.
While this book uses Python to explore computational nuclear engineering, it is not an
exhaustive description of the Python language and how to use it. We will cover the topics
needed for our computer simulation and numerical methods only. As a general computer pro-
gramming language, Python can be used to analyze large data sets, write computer games,
control devices, etc. The techniques we cover, and the approach we use to tackle problems
using a computer will be applicable to these other fields as well.
The best way to start to learn a programming language is to actually use it to solve a
problem. In almost any computer language the first thing you do is create a program called
“Hello world!”, where you make the computer say, in text, “Hello World!” (That is, after
installing a way to write and run programs in the language. When installing Python on a
machine, install Python 3 if you want to repeat the examples in this book. For those new to
coding, a Python distribution such as Anaconda might be the easiest installation to begin
with.) In Python you simply start a Python session and type:
In [1]: print("Hello World!")
Hello World!
This is the first command we will learn in Python, the print command:
The print command takes a comma- ters contained inside either single quotes or
separated list of objects to print to the screen. double quotes. When printing to the screen,
Most commonly these are strings of charac- each object is separated by a space by default.
The code to type in to your Python interpreter is the part that follows In [1]: and the
output is directly below it separate by a blank line. We could have it print any string of
characters. The string of characters could be something simple such as
In [2]: print("Saw ’em off")
Note how Python supports the unicode character set so that we can get those fancy char-
acters. Actually typing those characters in from a standard US keyboard is trickier, but if you
do manage to input them, Python can handle it (I used copy and paste).
These results were obtained by running the code in interactive mode via a Jupyter note-
book, which means the result of each line is displayed when I enter the line, and the result of
the last line of input is printed to the screen. It is more common to put your code into a sepa-
rate file and then execute it. These files can be executed either on the command line by typing
python codename.py where “codename.py” is the name of your file, or by running it in
an integrated development environment, such as IDLE or Spyder.
1.1.1 Comments
A comment is an annotation in your code to
• inform the reader, often yourself, of what a particular piece of code is trying to do,
• indicate the designed output, result, etc. of a part of the code, and
• make the code more readable.
A comment can be anything to tell you or another reader of the source code what is go-
ing on in the code. Comments can also be useful to remind you to come back and clean up
an ugly part of the code, or explain to your future self why the code is written in such a
way.
Comments are your friend. They can be time consuming to add, but never have I
looked back at old code and regretted adding them. Any code you write that other people
might read should be well commented. This includes code you may write for a course on
Python.
You use the pound (aka hashtag) # to comment out the rest of a line: everything that follows
the # is ignored by Python. Therefore, you can put little notes to yourself or others about what
is going on in the code.
100
81
There are also ways to make multiline comments by using a triple quote ”’
Later we will discuss some standard formats for comments at the beginning of a function.
For now we will use comments as needed to illustrate what particular snippets of code are
doing.
1.1.2 Errors
In any code you write longer than a few lines, you will make a mistake. In the par-
lance of our times these errors are called bugs. Now there are good bugs and bad bugs.
(The term bug for an error or defect goes back to at least Thomas Edison in 1878 de-
scribing an error in an invention. The most celebrated use of the word was from Grace
Hopper regarding an instance in 1947 when a moth lodged itself inside one of the compo-
nents of the room-sized computers of the day, and caused a malfunction.) The good bugs
get caught by Python and it will complain when it finds them. The bad bugs are insidi-
ous little beings that make your code do the wrong thing, without you knowing it. Good
bugs are easier to find because Python will alert you to the error. Bad bugs can exist in a
code for a long time (decades even) before being unearthed. Yes, decades: Microsoft Win-
dows reportedly had a 17-year-old bug (http://www.computerworld.com/article/2523045/
malware-vulnerabilities/microsoft-confirms-17-year-old-windows-bug.html).
Even experienced programmers write code with bugs. There are many different proce-
dures to try to rid a code of bugs, but even the most sophisticated software quality assurance
techniques will not catch every one.
We will now look at a good bug and a bad bug in the following code:
In [6]: #This is a good bug because the Python interpreter complains
9*9 +
Notice that Python printed a whole host of mumbo jumbo to the screen, but if you look at
it closely it tells you what exactly went wrong: in line 2 of the code, there was a plus sign
without anything on the right of it. This bug is good because the code didn’t run and you
know to go back in and fix it.
Visit https://textbookfull.com
now to explore a rich
collection of eBooks, textbook
and enjoy exciting offers!
1.1. WHY PYTHON? 7
A bad bug does the wrong thing, at least according to what you want it to do, and the user
and the person writing the code may be none the wiser, as in this example:
In [7]: #This is a bad error because
#it doesn’t do what you might think
#Say you want to compute (3 + 5)^2 = 8^2 = 64,
#but you actually input
print(3 + 5**2)
#You don’t get the correct answer,
# and no one tells you that you’re wrong.
28
This is an example of the power and feebleness of computers. A computer can do anything
you tell it to, but it does not necessarily do what you want it to. Always keep this in mind:
just because the computer did something, that does not mean it did what you wanted.
Later, we will talk in more detail about bugs, finding bugs (called debugging), and testing
of code.
All codes that are longer than a few lines or that those bugs are ever encountered in the
have bugs. This does not mean that those typical usage of the code. The bugs are there,
bugs meaningfully affect the program output, however.
1.1.3 Indentation
Python is, by design, very picky about how you lay out your code. It requires that code
blocks be properly indented. We will discuss what code blocks are later, but your code needs
to be properly aligned to work.
Notice that none of the code executed because of the indentation error. In Python when
you indent something it tells the interpreter that the indented code is part of a code block
that is executed differently than other levels of indentation. Only at certain times can one
indent and it make sense. This sounds pretty abstract and nebulous right now, but it should
become clear as we go through further examples.
8 1. GETTING STARTED IN PYTHON
Almost every code needs to store information at some point in its execution. When this
information is stored by a program in the computers memory, we call the identifier or name
of the information a variable. Information, or data, is stored in variables using the equals sign.
There are different types of variables for different types of data and we will discuss several
of them here. Variable type means what type of information the variable stores. A simple
example is storing a number versus text.
We will discuss numeric variables, i.e., variables that store a number, first. Later we will
discuss how to store text and more exotic variables.
A Python expression of the form sion evaluates to. The type of a variable in-
dicates what kind of data the variable holds.
variable_name = expression The type function will identify a variable’s
type:
will store in a variable named
“variable_name” the value that expres- type(variable_name)
1.2.1 Integers
Integers are whole numbers, including the negatives. They never have a fractional, or dec-
imal, part and should only be used for data that is a count.
In [9]: #assign the value 2 to x
x = 2
print(x*2)
4
int
The function type(x) returns the name of the type of the variable x. Notice that Python
abbreviates the term integer to “int”.
Integers are useful for things that can be counted: perhaps the number of times we execute
a loop, the number of elements of a vector, or the number of students in a class.
print("x =",x)
print(type(y))
#note that exponentiation is **
z = (x / y)**3
print("(2 / 4.2)**3 =",z)
x = 2
<class ’float’>
(2 / 4.2)**3 = 0.10797969981643449
The way that floating point numbers are represented on a computer has only a finite pre-
cision: there are only a finite number of bytes in the computer memory to hold the digits in
the number. That means we cannot represent a number exactly in many cases. In fact floating
point numbers are actually rational numbers (fractions) in the computer’s internal workings.
We will see later an example of how floating point accuracy can make a difference in a calcu-
lation.
In the code below, I set it up so that to use a math function you use the syntax
math.[function] where [function] is the name of the function you want to call.
See https://docs.Python.org/3.4/library/math.html for the complete list of built-in math-
ematical functions.
The following code snipped uses the built-in Python function for computing the cosine of
the number.
In [11]:import math
#take cosine of a number close to pi
theta = 3.14159
trig_variable = math.cos(theta)
print("cos(",theta,") =",trig_variable)
10 1. GETTING STARTED IN PYTHON
Notice how in the print statements, if I give it multiple arguments, it prints each with a
space in between. This is useful for combining static text with calculations, as we did above.
To evaluate logarithms we note an idiosyncrasy in the way that Python names the relevant
functions. The natural logarithm is just math.log and the base 10 logarithm is math.log10.
In [12]:print("The natural log of 10 is",math.log(10))
print("The log base-10 of 10 is",math.log10(10))
There are two non-obvious mathematical operators, integer division: //, and the modulus
(or remainder): %
In [13]: # 7 / 3 is 2 remainder 1
print("7 divided by 3 is",7//3,"remainder",7%3)
print("851 divided by 13 is",851//13,"remainder",851%13)
7 divided by 3 is 2 remainder 1
851 divided by 13 is 65 remainder 6
To use common mathematical functions on complex numbers, we need to import the mod-
ule cmath. With cmath, the common special functions and trigonometric functions can be
applied to complex numbers. To illustrate this, we will compute the quadratic formula to
find the roots of the polynomial
√ √ √
x 2 + 2 − 2 x − 2 2 = x − 2 (x + 2).
Notice that this example used cmath.sqrt when taking the square root of a number that
could be negative.
In cmath the constants cmath.e and cmath.pi are defined. We can use this to demon-
strate Euler’s famous relation:
In [16]: print(cmath.exp(cmath.pi*1j))
(-1+1.2246467991473532e-16j)
Here we see the effects of finite precision arithmetic in that this does not evaluate to exactly
−1.
A string is a data type that is a collection of characters, and needs to be inside quotes (you
can use single or double quotes to enclose strings as the examples here will indicate):
In [17]: #This is a string
aString = "Coffee is for closers."
print(aString)
print("aString")
Anything inside the quotes is taken literally by Python. That is why the second print state-
ment above just printed the literal text aString.
You can also subset, that is get some of the characters in a string, using brackets. Putting
a single number in a bracket gives you the character in that position. Note, Python starts
numbering at 0 so that 0 is the first character in a string.
Random documents with unrelated
content Scribd suggests to you:
Cy fait mencion de la puissance & auctorité du
capitaine de la chevalerie du prince selon droit
Et pour quelz cas les gens d’armes pevent
encourir crisme capital. iiii. c.
Affin que les nobles hommes qui ce present livre pourront oyr
tant pour le temps present comme celluy advenir/ puissent savoir de
quelles choses faire en armes/ Le droit donne licence et desquelles
non. Et pource chier amy que cy devant m’as ramentu gaiges et
sauldees en fait de guerre/ te diray partie en quoy homme d’armes
s’oblege en prendant gaiges & sauldees en fait de guerre/ et aussi
en quelle maniere le seigneur est tenu de paier gaiges et en quelle
non Car telles choses sont contenues es droitz escrips.
Premierement est assavoir que tous seigneurs villes ou
communes seignouries qui prendent gens a sauldees sont tenus de
les paier pour le pais qu’ilz sont prins soient mis en euvre ou non. Et
mesmement supposé qu’ilz fussent a sejour et sans riens faire voire
en cas que la faulte ne tenist en eulz & que tousjours fussent prestz
Et se faulte de paiement y a selon la promesse/ je dy que selon droit
& raison le pevent demander par belle justice.
Maistre puys que en ceste matiere sommez entrez et tu dis que
le seigneur est entré en debte de les paier et y est tenu des gens
d’armes contenter de leurs sauldees supposé qu’ilz fussent a sejour/
te vueil a se propos former aucunes demandes en telle maniere.
Premierement je suppose que ung capitaine atout une route de
gens d’armes soit retenu es gaiges du roy. Et par son
commandement s’en voit en gaigne contre les anglois. Advient que
en chemin se logent en certain lieu auquel les gens dudit lieu aient
malicieusement empoisonné le pain et le vin par quoy advient que
aucuns d’iceulz meurent Autres demeurent malades par l’espace que
servir doibvent ou plus/ par quoy n’est en leur puissance de servir le
roy ainsy que promis l’avoient/ si te demande se les gaiges d’icelluy
temps doibvent avoir perdus. A ceste question respons que non
certainement/ veu encore que la maladie leur soit venue a cause
dudit service/ car maladie en droit excuse l’omme/ ne a celle cause
ne doibt perdre nulles distributions puys que venue est apres la
retenue.
Autre question doncques faire te vueil. ung sauldoyer est retenu
par une annee a gaiges. S’il advient en celluy temps que il a a faire
en son hostel par quoy vient au capitaine et prent licence pour aller
veoir sa femme et son mesnage pour l’espace de ung moys. Je te
demande se par droit doibt avoir les gaiges de icelluy moys/ car il
sembleroit que non/ veu que en celluy temps ne serviroit le
seigneur/ ains est allé a ses besoingnes/ pour quoy doncques
debveroit il avoir loyer de ce qu’il n’a pas fait.
Je te respons ad ce sache que telle est la maniere d’armes/ que
sy grant puissance/ a le congé et licence du capitaine et tant est
previlegié/ que puys que voulentiers a consenty le congé/ ledit
homme d’armes doit estre reputé pour resident/ car tousjours est
demouré serviteur du seigneur en sa guerre/ voire puys que retenu
estoit pour l’annee. Mais bien est vray que se obligé estoit par
division de temps/ c’est assavoir que sans plus fust retenu a certaine
somme par chascun moys/ tant tenu tant payé la diroy je autrement.
Autre question te fais ung chevalier pour une annee est prins a
gaiges pour servir le roy en ses guerres. Advient apres que troys
moys a servy s’en veult partir et demande les gaiges du temps que
servy a/ le capitaine contredit disant qu’il auroit prins pour une
annee/ & que s’il ne l’eust promis il en eust bien eu ung autre et qui
ne parfait son service pert.
Ad ce je te respons que bon droit a le capitaine/ car se l’omme
d’armes fault premierement de sa promesse il n’y a aussy raison que
convenance/ de gaiges luy soit tenue. Mesmement plus fort y a/ car
je te dis et te certifie que se par sa deffaulte il avoit perdu ses
chevaulz ou son habillement de guerre comme harnois et autre ne
peust recouvrer/ pour laquelle chose fut non convenable a servir. Il
doit perdre tout le temps qu’il a servy. car service ne fait a avoir
gaiges/ jusques a la fin/ ou cas toutesfoys que autres convenances
n’y seroient faictes. car marché fait & convenance passe toute loy/ &
peus bien veoir que la mauvaise chose entremeslee avec la bonne
retourne la bonne en mauvaise.
Maistre or me respons a ceste question. ung vaillant homme
d’armes est prins pour servir toute une annee. Advient tantost que
nouvelles luy viennent que grant affaire a en son hostel. par quoy
aller s’en veult/ & au congé prendre dit au capitaine qu’il mettra ung
autre en son lieu pour faire le service qu’il debvoit. Ad ce contredit le
capitaine disant qu’il l’avoit prins pour sa vaillance preudommie &
sagesse/ & que a peine trouveroit il homme qui souffisamment tenist
son lieu. Le sauldoyer replicque disant que certains affaires luy sont
survenus/ par quoy il perdroit sa terre et son heritage se en
personne n’y estoit/ et que selon raison est plus tenu de son sens
aider a luy mesmes que a nul autre Si ne le peut contraindre
aucunement de demourer/ Le capitaine respont qu’il est obligé par
serment sur sainctes evangilles/ Sy n’est pas l’omme en sa franche
liberté qui a autruy se lye. Or determinés maistre ceste question Car
veu les raisons dudit homme d’armes/ & que en son lieu veut mettre
homme souffisant sembleroit que quicte s’en peust aller.
Je te respons que a bien ceste question determiner a grant
regard Car il n’est pas doubte que de ung homme d’armes commun
deveroit souffrir homme pour homme/ mais a dire que celuy fut tant
solennel que a peine son pareil peust estre mis en son lieu/ de y
mettre plusieurs autres assez moins vallables ne seroit pas raison.
S’il advenoit que ainsy bon y meist je ne le dy pas que la chose ne
fust fort raisonnable/ car si que devant t’ay dit/ l’omme d’armes n’est
pas maistre de soy puys que par serment est obligé. Pour celle cause
te dis que icelluy n’en seroit pas quitte quelque necessité ne quelque
affaire qu’il peust avoir en ses besoingnes se de grace especiale le
prince ou capitaine qui de ce a la charge de son bon vouloir et plaisir
ne l’en quittoit. Et y a bonne raison Car se aucun obligé estoit de
paier dix aulnes d’escarlate et il paioit en ce lieu gros burel quoy que
tout fust drap ne deveroit pourtant estre quicte.
Cy devise se ung capitaine de certain nombre
de gens d’armes les peut bien transmuer a sa
voulenté puis qu’ilz sont retenuz a gens
d’armes. ix. c.