<commit_before>ArgyrisPack
============
Overview
--------
ArgyrisPack is a library for doing things with the Argyris finite element, a 
C1 finite element with 21 degrees of freedom.

What can it do?
---------------
ArgyrisPack contains the coordinate mappings needed for doing work with the
reference Argyris triangle as well as a Python program to convert quadratic
.mesh files in to Argyris meshes by adding extra nodes at corners.

Authors
-------
<NAME>, Virginia Tech
<NAME>, Virginia Tech
<NAME>, Virginia Tech

Relevant Papers
---------------
To be added.<commit_msg>REWRITE updated information and papers<commit_after>ArgyrisPack
===========
Overview
--------
ArgyrisPack is a library for doing things with the Argyris-5 finite element, a 
C1 finite element with 21 degrees of freedom. The Argyris-5 element spans the
space of 5th degree polynomials on each element and has O(h^4) convergence in
the H2 norm. The main goals of ArgyrisPack are numerical correctness,
performance, and portability.

Design & Usage Philosophy
-------------------------
ArgyrisPack assumes that it is faster to work with precomputed values of
reference basis functions. Therefore it is up to the user to set up appropriate
tables of reference data (function values, derivative values, presumably second
derivative values) and to use these when setting up the typical per-element
matricies.

Since performance and portability are both goals, the C code does not offer
much abstraction; one passes in pointers to arrays and the functions fill the
arrays appropriately. The Matlab, Python, and Julia interfaces take care of
wrapping output values and checking bounds instead.

ArgyrisPack may be compiled to use either row-major or column-major storage.
Macros (contained in `order_logic.h`) ensure that the C code does 'the right
things' (correct BLAS calls, correct order traversal, etc) in both cases.

What can ArgyrisPack do?
------------------------
ArgyrisPack consists of four levels of C and Python functions/classes:
* Level 1: evaluation of the Argyris basis functions (and derivatives) at
  arbitrary points on the reference triangle. These are the functions beginning
  with `local_`.
* Level 2: evaluation of the required coordinate transformations (Dominguez and
  Sayas' C, B, b, and Theta (Th) matricies) and evaluation of Argyris basis
  functions on arbitrary triangles. These are the functions beginning with
  `global_`.
* Level 3: evaluation of a few common bilinear forms (the classic stiffness and
  mass matricies as well as the 'biharmonic' matrix resulting from
  discretization of the biharmonic operator). These functions begin with
  `matrix_`.
* Level 4: mesh generation. Argyris elements have 21 nodes (5 on each corner
  and one at the midpoint of each triangle edge). ArgyrisPack contains a simple
  Python class (MeshParser.ParseMESHFormat) that can parse .mesh files
  generated by GMSH and convert quadratic meshes in to Argyris meshes. 

Authors
-------
* <NAME>, Virginia Tech
* <NAME>, Virginia Tech
* <NAME>, Virginia Tech

Relevant Papers
---------------
ArgyrisPack is a new implementation of older ideas. We are greatly indebted
to those who have done the necessary mathematical research for making this
library possible.

* Dominguez and Sayas: A simple Matlab implementation of the Argyris element,
  2006
{'fraction_non_alphanumeric': 0.08125937031484258, 'fraction_numerical': 0.006596701649175412, 'mean_word_length': 3.9131075110456552, 'pattern_counts': {'":': 0, '<': 9, '<?xml version=': 0, '>': 9, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '179489', 'n_tokens_mistral': 863, 'n_tokens_neox': 811, 'n_words': 465}