diff --git a/CMakeLists.txt b/CMakeLists.txt index de2b96d..f4def9a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -2,43 +2,141 @@ cmake_minimum_required(VERSION 3.12) project(Shell VERSION 1.0 LANGUAGES CXX) # Find and load CMake configuration of packages containing this plugin's dependencies -find_package(Sofa.Component.Controller REQUIRED) +find_package(Sofa.Config REQUIRED) +sofa_find_package(Sofa.GL REQUIRED) +sofa_find_package(Sofa.Type REQUIRED) +sofa_find_package(Sofa.Geometry REQUIRED) +sofa_find_package(Sofa.Simulation.Core REQUIRED) +sofa_find_package(Sofa.Component.Controller REQUIRED) sofa_find_package(Sofa.Component.StateContainer REQUIRED) +sofa_find_package(Sofa.Component.Mapping.NonLinear REQUIRED) +sofa_find_package(Sofa.Component.Constraint REQUIRED) +sofa_find_package(Sofa.Component.Constraint.Lagrangian REQUIRED) +sofa_find_package(Sofa.Component.Constraint.Lagrangian.Model REQUIRED) +sofa_find_package(Sofa.Component.Constraint.Lagrangian.Solver REQUIRED) +sofa_find_package(Sofa.Component.Topology.Container.Dynamic REQUIRED) +sofa_find_package(Sofa.Component.Collision.Detection.Intersection REQUIRED) +set(README_FILE README.md) +set(SOFASHELLS_SRC_DIR src/SofaShells) + +option(SOFA-PLUGIN_SHELLS_ADAPTIVITY "Enables shells adaptivity" OFF) # List all files set(SHELL_SRC_DIR src/Shell) set(HEADER_FILES - ${SHELL_SRC_DIR}/config.h.in - ${SHELL_SRC_DIR}/controller/MeshChangedEvent.h - ${SHELL_SRC_DIR}/controller/MeshInterpolator.h - ${SHELL_SRC_DIR}/controller/MeshInterpolator.inl - ${SHELL_SRC_DIR}/engine/JoinMeshPoints.h - ${SHELL_SRC_DIR}/engine/JoinMeshPoints.inl - ${SHELL_SRC_DIR}/forcefield/TriangularBendingFEMForceField.h - ${SHELL_SRC_DIR}/forcefield/TriangularBendingFEMForceField.inl + ${SOFASHELLS_SRC_DIR}/config.h.in + ${SOFASHELLS_SRC_DIR}/controller/MeshChangedEvent.h + ${SOFASHELLS_SRC_DIR}/controller/MeshInterpolator.h + ${SOFASHELLS_SRC_DIR}/controller/MeshInterpolator.inl + ${SOFASHELLS_SRC_DIR}/controller/TriangleSwitchExample.h + ${SOFASHELLS_SRC_DIR}/controller/TriangleSwitchExample.inl + ${SOFASHELLS_SRC_DIR}/engine/JoinMeshPoints.h + ${SOFASHELLS_SRC_DIR}/engine/JoinMeshPoints.inl + ${SOFASHELLS_SRC_DIR}/engine/FindClosePoints.h + ${SOFASHELLS_SRC_DIR}/engine/FindClosePoints.inl + ${SOFASHELLS_SRC_DIR}/forcefield/BezierTriangularBendingFEMForceField.h + ${SOFASHELLS_SRC_DIR}/forcefield/BezierTriangularBendingFEMForceField.inl + ${SOFASHELLS_SRC_DIR}/forcefield/CstFEMForceField.h + ${SOFASHELLS_SRC_DIR}/forcefield/CstFEMForceField.inl + ${SOFASHELLS_SRC_DIR}/forcefield/TriangularBendingFEMForceField.h + ${SOFASHELLS_SRC_DIR}/forcefield/TriangularBendingFEMForceField.inl + ${SOFASHELLS_SRC_DIR}/forcefield/TriangularShellForceField.h + ${SOFASHELLS_SRC_DIR}/forcefield/TriangularShellForceField.inl + ${SOFASHELLS_SRC_DIR}/mapping/BendingPlateMechanicalMapping.h + ${SOFASHELLS_SRC_DIR}/mapping/BendingPlateMechanicalMapping.inl + ${SOFASHELLS_SRC_DIR}/mapping/BezierTriangleMechanicalMapping.h + ${SOFASHELLS_SRC_DIR}/mapping/BezierTriangleMechanicalMapping.inl + ${SOFASHELLS_SRC_DIR}/misc/PointProjection.h + ${SOFASHELLS_SRC_DIR}/misc/PointProjection.inl + ${SOFASHELLS_SRC_DIR}/shells2/fem/BezierShellInterpolation.h + ${SOFASHELLS_SRC_DIR}/shells2/fem/BezierShellInterpolation.inl + ${SOFASHELLS_SRC_DIR}/shells2/fem/BezierShellInterpolationM.h + ${SOFASHELLS_SRC_DIR}/shells2/fem/BezierShellInterpolationM.inl + ${SOFASHELLS_SRC_DIR}/shells2/forcefield/BezierShellForceField.h + ${SOFASHELLS_SRC_DIR}/shells2/forcefield/BezierShellForceField.inl + ${SOFASHELLS_SRC_DIR}/shells2/mapping/BezierShellMechanicalMapping.h + ${SOFASHELLS_SRC_DIR}/shells2/mapping/BezierShellMechanicalMapping.inl ) + set(SOURCE_FILES - ${SHELL_SRC_DIR}/initShell.cpp - ${SHELL_SRC_DIR}/controller/MeshChangedEvent.cpp - ${SHELL_SRC_DIR}/controller/MeshInterpolator.cpp - ${SHELL_SRC_DIR}/engine/JoinMeshPoints.cpp - ${SHELL_SRC_DIR}/forcefield/TriangularBendingFEMForceField.cpp -) -set(README_FILES - README.md + ${SOFASHELLS_SRC_DIR}/initPluginShells.cpp + ${SOFASHELLS_SRC_DIR}/controller/MeshChangedEvent.cpp + ${SOFASHELLS_SRC_DIR}/controller/MeshInterpolator.cpp + ${SOFASHELLS_SRC_DIR}/controller/TriangleSwitchExample.cpp + ${SOFASHELLS_SRC_DIR}/engine/JoinMeshPoints.cpp + ${SOFASHELLS_SRC_DIR}/engine/FindClosePoints.cpp + ${SOFASHELLS_SRC_DIR}/forcefield/BezierTriangularBendingFEMForceField.cpp + ${SOFASHELLS_SRC_DIR}/forcefield/CstFEMForceField.cpp + ${SOFASHELLS_SRC_DIR}/forcefield/TriangularBendingFEMForceField.cpp + ${SOFASHELLS_SRC_DIR}/forcefield/TriangularShellForceField.cpp + ${SOFASHELLS_SRC_DIR}/mapping/BendingPlateMechanicalMapping.cpp + ${SOFASHELLS_SRC_DIR}/mapping/BezierTriangleMechanicalMapping.cpp + ${SOFASHELLS_SRC_DIR}/misc/PointProjection.cpp + ${SOFASHELLS_SRC_DIR}/shells2/fem/BezierShellInterpolation.cpp + ${SOFASHELLS_SRC_DIR}/shells2/fem/BezierShellInterpolationM.cpp + ${SOFASHELLS_SRC_DIR}/shells2/forcefield/BezierShellForceField.cpp + ${SOFASHELLS_SRC_DIR}/shells2/mapping/BezierShellMechanicalMapping.cpp ) -# Create the plugin library. +if(SOFA-PLUGIN_SHELLS_ADAPTIVITY) + set(COMPILER_DEFINE "SOFA_BUILD_SHELLS_ADAPTIVITY") + + list(APPEND HEADER_FILES + ${SOFASHELLS_SRC_DIR}/controller/AdaptiveCuttingController.h + ${SOFASHELLS_SRC_DIR}/controller/AdaptiveCuttingController.inl + ${SOFASHELLS_SRC_DIR}/controller/Test2DAdapter.h + ${SOFASHELLS_SRC_DIR}/controller/Test2DAdapter.inl + ${SOFASHELLS_SRC_DIR}/misc/Optimize2DSurface.h + ${SOFASHELLS_SRC_DIR}/misc/Optimize2DSurface.inl + ${SOFASHELLS_SRC_DIR}/misc/SurfaceParametrization.h + ${SOFASHELLS_SRC_DIR}/misc/SurfaceParametrization.inl + ) + + list(APPEND SOURCE_FILES + ${SOFASHELLS_SRC_DIR}/controller/AdaptiveCuttingController.cpp + ${SOFASHELLS_SRC_DIR}/controller/Test2DAdapter.cpp + ${SOFASHELLS_SRC_DIR}/misc/Optimize2DSurface.cpp + ${SOFASHELLS_SRC_DIR}/misc/SurfaceParametrization.cpp + ) + + if(SofaGui_FOUND AND SofaOpenglVisual_FOUND) + list(APPEND HEADER_FILES + ${SOFASHELLS_SRC_DIR}/cutting/AdaptiveCutting.h + ) + + list(APPEND SOURCE_FILES + ${SOFASHELLS_SRC_DIR}/cutting/AdaptiveCutting.cpp + ) + endif() + +endif() + + +# Create the plugin library add_library(${PROJECT_NAME} SHARED ${HEADER_FILES} ${SOURCE_FILES} ${README_FILES}) # Link the plugin library to its dependency(ies). -target_link_libraries(${PROJECT_NAME} Sofa.Component.Controller Sofa.Component.StateContainer) +target_link_libraries(${PROJECT_NAME} + Sofa.Component.Controller + Sofa.Component.Topology.Container.Dynamic + Sofa.Component.StateContainer + Sofa.GL + Sofa.Component.Collision.Detection.Intersection + Sofa.Component.Mapping.NonLinear + Sofa.Component.Constraint.Lagrangian.Model + Sofa.Component.Constraint.Lagrangian.Solver + Sofa.Component.Constraint.Lagrangian + Sofa.Component.Constraint.Projective + Sofa.Component.Mass + Sofa.Component.SolidMechanics.Spring + Sofa.Component.MechanicalLoad + Sofa.Component.LinearSolver.Iterative + Sofa.Component.ODESolver.Backward + Sofa.Component.Engine.Select + Sofa.Component.Mapping.Linear +) -# Create package Config, Version & Target files. -# Deploy the headers, resources, scenes & examples. -# Set the plugin 'relocatable' if built within SOFA. -# --> see SofaMacros.cmake sofa_create_package_with_targets( PACKAGE_NAME ${PROJECT_NAME} PACKAGE_VERSION ${PROJECT_VERSION} diff --git a/SofaShells.txt b/SofaShells.txt new file mode 100644 index 0000000..7249349 --- /dev/null +++ b/SofaShells.txt @@ -0,0 +1,20 @@ + +************************************ +* SofaShells.txt * +************************************ + + +AUTHOR : + - Thomas Golembiovsky + - Christian Duriez + - Olivier Comas + - Igor Peterlik + - Stéphane Cotin + + +LICENCE : + - GPL + + + +OTHER COMMENTS : diff --git a/SofaShellsConfig.cmake.in b/SofaShellsConfig.cmake.in new file mode 100644 index 0000000..bc39ac5 --- /dev/null +++ b/SofaShellsConfig.cmake.in @@ -0,0 +1,30 @@ +# CMake package configuration file for the SofaShells plugin + +@PACKAGE_GUARD@ +@PACKAGE_INIT@ + +set(SOFASHELLS_HAVE_SOFAGUI @SOFASHELLS_HAVE_SOFAGUI@) +set(SOFASHELLS_HAVE_SOFAOPENGLVISUAL @SOFASHELLS_HAVE_SOFAOPENGLVISUAL@) + +find_package(SofaFramework REQUIRED) +find_package(SofaBase REQUIRED) +find_package(SofaGeneral REQUIRED) +find_package(SofaBoundaryCondition REQUIRED) +find_package(SofaUserInteraction REQUIRED) +find_package(SofaMeshCollision REQUIRED) +find_package(SofaGraphComponent REQUIRED) +find_package(Sofa.Component.Controller REQUIRED) +find_package(Sofa.Component.StateContainer REQUIRED) + + +if(SOFASHELLS_HAVE_SOFAGUI AND SOFASHELLS_HAVE_SOFAOPENGLVISUAL) + find_package(SofaGui REQUIRED) + find_package(SofaOpenglVisual REQUIRED) +endif() + + +if(NOT TARGET @PROJECT_NAME@) + include("${CMAKE_CURRENT_LIST_DIR}/@PROJECT_NAME@Targets.cmake") +endif() + +check_required_components(@PROJECT_NAME@) diff --git a/doc/Copie de sauvegarde de NewShells.pages b/doc/Copie de sauvegarde de NewShells.pages new file mode 100644 index 0000000..1ead31e Binary files /dev/null and b/doc/Copie de sauvegarde de NewShells.pages differ diff --git a/doc/Doxyfile b/doc/Doxyfile new file mode 100644 index 0000000..a51a5d4 --- /dev/null +++ b/doc/Doxyfile @@ -0,0 +1,1600 @@ +# Doxyfile 1.6.3 + +# This file describes the settings to be used by the documentation system +# doxygen (www.doxygen.org) for a project +# +# All text after a hash (#) is considered a comment and will be ignored +# The format is: +# TAG = value [value, ...] +# For lists items can also be appended using: +# TAG += value [value, ...] +# Values that contain spaces should be placed between quotes (" ") + +#--------------------------------------------------------------------------- +# Project related configuration options +#--------------------------------------------------------------------------- + +# This tag specifies the encoding used for all characters in the config file +# that follow. The default is UTF-8 which is also the encoding used for all +# text before the first occurrence of this tag. Doxygen uses libiconv (or the +# iconv built into libc) for the transcoding. See +# http://www.gnu.org/software/libiconv for the list of possible encodings. + +DOXYFILE_ENCODING = UTF-8 + +# The PROJECT_NAME tag is a single word (or a sequence of words surrounded +# by quotes) that should identify the project. + +PROJECT_NAME = Shells + +# The PROJECT_NUMBER tag can be used to enter a project or revision number. +# This could be handy for archiving the generated documentation or +# if some version control system is used. + +PROJECT_NUMBER = + +# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) +# base path where the generated documentation will be put. +# If a relative path is entered, it will be relative to the location +# where doxygen was started. If left blank the current directory will be used. + +OUTPUT_DIRECTORY = code + +# If the CREATE_SUBDIRS tag is set to YES, then doxygen will create +# 4096 sub-directories (in 2 levels) under the output directory of each output +# format and will distribute the generated files over these directories. +# Enabling this option can be useful when feeding doxygen a huge amount of +# source files, where putting all generated files in the same directory would +# otherwise cause performance problems for the file system. + +CREATE_SUBDIRS = NO + +# The OUTPUT_LANGUAGE tag is used to specify the language in which all +# documentation generated by doxygen is written. Doxygen will use this +# information to generate all constant output in the proper language. +# The default language is English, other supported languages are: +# Afrikaans, Arabic, Brazilian, Catalan, Chinese, Chinese-Traditional, +# Croatian, Czech, Danish, Dutch, Esperanto, Farsi, Finnish, French, German, +# Greek, Hungarian, Italian, Japanese, Japanese-en (Japanese with English +# messages), Korean, Korean-en, Lithuanian, Norwegian, Macedonian, Persian, +# Polish, Portuguese, Romanian, Russian, Serbian, Serbian-Cyrilic, Slovak, +# Slovene, Spanish, Swedish, Ukrainian, and Vietnamese. + +OUTPUT_LANGUAGE = English + +# If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will +# include brief member descriptions after the members that are listed in +# the file and class documentation (similar to JavaDoc). +# Set to NO to disable this. + +BRIEF_MEMBER_DESC = YES + +# If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend +# the brief description of a member or function before the detailed description. +# Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the +# brief descriptions will be completely suppressed. + +REPEAT_BRIEF = YES + +# This tag implements a quasi-intelligent brief description abbreviator +# that is used to form the text in various listings. Each string +# in this list, if found as the leading text of the brief description, will be +# stripped from the text and the result after processing the whole list, is +# used as the annotated text. Otherwise, the brief description is used as-is. +# If left blank, the following values are used ("$name" is automatically +# replaced with the name of the entity): "The $name class" "The $name widget" +# "The $name file" "is" "provides" "specifies" "contains" +# "represents" "a" "an" "the" + +ABBREVIATE_BRIEF = "The $name class" \ + "The $name widget" \ + "The $name file" \ + is \ + provides \ + specifies \ + contains \ + represents \ + a \ + an \ + the + +# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then +# Doxygen will generate a detailed section even if there is only a brief +# description. + +ALWAYS_DETAILED_SEC = NO + +# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all +# inherited members of a class in the documentation of that class as if those +# members were ordinary class members. Constructors, destructors and assignment +# operators of the base classes will not be shown. + +INLINE_INHERITED_MEMB = NO + +# If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full +# path before files name in the file list and in the header files. If set +# to NO the shortest path that makes the file name unique will be used. + +FULL_PATH_NAMES = YES + +# If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag +# can be used to strip a user-defined part of the path. Stripping is +# only done if one of the specified strings matches the left-hand part of +# the path. The tag can be used to show relative paths in the file list. +# If left blank the directory from which doxygen is run is used as the +# path to strip. + +STRIP_FROM_PATH = + +# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of +# the path mentioned in the documentation of a class, which tells +# the reader which header file to include in order to use a class. +# If left blank only the name of the header file containing the class +# definition is used. Otherwise one should specify the include paths that +# are normally passed to the compiler using the -I flag. + +STRIP_FROM_INC_PATH = + +# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter +# (but less readable) file names. This can be useful is your file systems +# doesn't support long names like on DOS, Mac, or CD-ROM. + +SHORT_NAMES = NO + +# If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen +# will interpret the first line (until the first dot) of a JavaDoc-style +# comment as the brief description. If set to NO, the JavaDoc +# comments will behave just like regular Qt-style comments +# (thus requiring an explicit @brief command for a brief description.) + +JAVADOC_AUTOBRIEF = NO + +# If the QT_AUTOBRIEF tag is set to YES then Doxygen will +# interpret the first line (until the first dot) of a Qt-style +# comment as the brief description. If set to NO, the comments +# will behave just like regular Qt-style comments (thus requiring +# an explicit \brief command for a brief description.) + +QT_AUTOBRIEF = NO + +# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen +# treat a multi-line C++ special comment block (i.e. a block of //! or /// +# comments) as a brief description. This used to be the default behaviour. +# The new default is to treat a multi-line C++ comment block as a detailed +# description. Set this tag to YES if you prefer the old behaviour instead. + +MULTILINE_CPP_IS_BRIEF = NO + +# If the INHERIT_DOCS tag is set to YES (the default) then an undocumented +# member inherits the documentation from any documented member that it +# re-implements. + +INHERIT_DOCS = YES + +# If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will produce +# a new page for each member. If set to NO, the documentation of a member will +# be part of the file/class/namespace that contains it. + +SEPARATE_MEMBER_PAGES = NO + +# The TAB_SIZE tag can be used to set the number of spaces in a tab. +# Doxygen uses this value to replace tabs by spaces in code fragments. + +TAB_SIZE = 8 + +# This tag can be used to specify a number of aliases that acts +# as commands in the documentation. An alias has the form "name=value". +# For example adding "sideeffect=\par Side Effects:\n" will allow you to +# put the command \sideeffect (or @sideeffect) in the documentation, which +# will result in a user-defined paragraph with heading "Side Effects:". +# You can put \n's in the value part of an alias to insert newlines. + +ALIASES = + +# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C +# sources only. Doxygen will then generate output that is more tailored for C. +# For instance, some of the names that are used will be different. The list +# of all members will be omitted, etc. + +OPTIMIZE_OUTPUT_FOR_C = NO + +# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java +# sources only. Doxygen will then generate output that is more tailored for +# Java. For instance, namespaces will be presented as packages, qualified +# scopes will look different, etc. + +OPTIMIZE_OUTPUT_JAVA = NO + +# Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran +# sources only. Doxygen will then generate output that is more tailored for +# Fortran. + +OPTIMIZE_FOR_FORTRAN = NO + +# Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL +# sources. Doxygen will then generate output that is tailored for +# VHDL. + +OPTIMIZE_OUTPUT_VHDL = NO + +# Doxygen selects the parser to use depending on the extension of the files it parses. +# With this tag you can assign which parser to use for a given extension. +# Doxygen has a built-in mapping, but you can override or extend it using this tag. +# The format is ext=language, where ext is a file extension, and language is one of +# the parsers supported by doxygen: IDL, Java, Javascript, C#, C, C++, D, PHP, +# Objective-C, Python, Fortran, VHDL, C, C++. For instance to make doxygen treat +# .inc files as Fortran files (default is PHP), and .f files as C (default is Fortran), +# use: inc=Fortran f=C. Note that for custom extensions you also need to set +# FILE_PATTERNS otherwise the files are not read by doxygen. + +EXTENSION_MAPPING = + +# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want +# to include (a tag file for) the STL sources as input, then you should +# set this tag to YES in order to let doxygen match functions declarations and +# definitions whose arguments contain STL classes (e.g. func(std::string); v.s. +# func(std::string) {}). This also make the inheritance and collaboration +# diagrams that involve STL classes more complete and accurate. + +BUILTIN_STL_SUPPORT = NO + +# If you use Microsoft's C++/CLI language, you should set this option to YES to +# enable parsing support. + +CPP_CLI_SUPPORT = NO + +# Set the SIP_SUPPORT tag to YES if your project consists of sip sources only. +# Doxygen will parse them like normal C++ but will assume all classes use public +# instead of private inheritance when no explicit protection keyword is present. + +SIP_SUPPORT = NO + +# For Microsoft's IDL there are propget and propput attributes to indicate getter +# and setter methods for a property. Setting this option to YES (the default) +# will make doxygen to replace the get and set methods by a property in the +# documentation. This will only work if the methods are indeed getting or +# setting a simple type. If this is not the case, or you want to show the +# methods anyway, you should set this option to NO. + +IDL_PROPERTY_SUPPORT = YES + +# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC +# tag is set to YES, then doxygen will reuse the documentation of the first +# member in the group (if any) for the other members of the group. By default +# all members of a group must be documented explicitly. + +DISTRIBUTE_GROUP_DOC = NO + +# Set the SUBGROUPING tag to YES (the default) to allow class member groups of +# the same type (for instance a group of public functions) to be put as a +# subgroup of that type (e.g. under the Public Functions section). Set it to +# NO to prevent subgrouping. Alternatively, this can be done per class using +# the \nosubgrouping command. + +SUBGROUPING = YES + +# When TYPEDEF_HIDES_STRUCT is enabled, a typedef of a struct, union, or enum +# is documented as struct, union, or enum with the name of the typedef. So +# typedef struct TypeS {} TypeT, will appear in the documentation as a struct +# with name TypeT. When disabled the typedef will appear as a member of a file, +# namespace, or class. And the struct will be named TypeS. This can typically +# be useful for C code in case the coding convention dictates that all compound +# types are typedef'ed and only the typedef is referenced, never the tag name. + +TYPEDEF_HIDES_STRUCT = NO + +# The SYMBOL_CACHE_SIZE determines the size of the internal cache use to +# determine which symbols to keep in memory and which to flush to disk. +# When the cache is full, less often used symbols will be written to disk. +# For small to medium size projects (<1000 input files) the default value is +# probably good enough. For larger projects a too small cache size can cause +# doxygen to be busy swapping symbols to and from disk most of the time +# causing a significant performance penality. +# If the system has enough physical memory increasing the cache will improve the +# performance by keeping more symbols in memory. Note that the value works on +# a logarithmic scale so increasing the size by one will rougly double the +# memory usage. The cache size is given by this formula: +# 2^(16+SYMBOL_CACHE_SIZE). The valid range is 0..9, the default is 0, +# corresponding to a cache size of 2^16 = 65536 symbols + +SYMBOL_CACHE_SIZE = 0 + +#--------------------------------------------------------------------------- +# Build related configuration options +#--------------------------------------------------------------------------- + +# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in +# documentation are documented, even if no documentation was available. +# Private class members and static file members will be hidden unless +# the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES + +EXTRACT_ALL = NO + +# If the EXTRACT_PRIVATE tag is set to YES all private members of a class +# will be included in the documentation. + +EXTRACT_PRIVATE = NO + +# If the EXTRACT_STATIC tag is set to YES all static members of a file +# will be included in the documentation. + +EXTRACT_STATIC = NO + +# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs) +# defined locally in source files will be included in the documentation. +# If set to NO only classes defined in header files are included. + +EXTRACT_LOCAL_CLASSES = YES + +# This flag is only useful for Objective-C code. When set to YES local +# methods, which are defined in the implementation section but not in +# the interface are included in the documentation. +# If set to NO (the default) only methods in the interface are included. + +EXTRACT_LOCAL_METHODS = NO + +# If this flag is set to YES, the members of anonymous namespaces will be +# extracted and appear in the documentation as a namespace called +# 'anonymous_namespace{file}', where file will be replaced with the base +# name of the file that contains the anonymous namespace. By default +# anonymous namespace are hidden. + +EXTRACT_ANON_NSPACES = NO + +# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all +# undocumented members of documented classes, files or namespaces. +# If set to NO (the default) these members will be included in the +# various overviews, but no documentation section is generated. +# This option has no effect if EXTRACT_ALL is enabled. + +HIDE_UNDOC_MEMBERS = NO + +# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all +# undocumented classes that are normally visible in the class hierarchy. +# If set to NO (the default) these classes will be included in the various +# overviews. This option has no effect if EXTRACT_ALL is enabled. + +HIDE_UNDOC_CLASSES = NO + +# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all +# friend (class|struct|union) declarations. +# If set to NO (the default) these declarations will be included in the +# documentation. + +HIDE_FRIEND_COMPOUNDS = NO + +# If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any +# documentation blocks found inside the body of a function. +# If set to NO (the default) these blocks will be appended to the +# function's detailed documentation block. + +HIDE_IN_BODY_DOCS = NO + +# The INTERNAL_DOCS tag determines if documentation +# that is typed after a \internal command is included. If the tag is set +# to NO (the default) then the documentation will be excluded. +# Set it to YES to include the internal documentation. + +INTERNAL_DOCS = NO + +# If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate +# file names in lower-case letters. If set to YES upper-case letters are also +# allowed. This is useful if you have classes or files whose names only differ +# in case and if your file system supports case sensitive file names. Windows +# and Mac users are advised to set this option to NO. + +CASE_SENSE_NAMES = NO + +# If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen +# will show members with their full class and namespace scopes in the +# documentation. If set to YES the scope will be hidden. + +HIDE_SCOPE_NAMES = YES + +# If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen +# will put a list of the files that are included by a file in the documentation +# of that file. + +SHOW_INCLUDE_FILES = YES + +# If the FORCE_LOCAL_INCLUDES tag is set to YES then Doxygen +# will list include files with double quotes in the documentation +# rather than with sharp brackets. + +FORCE_LOCAL_INCLUDES = NO + +# If the INLINE_INFO tag is set to YES (the default) then a tag [inline] +# is inserted in the documentation for inline members. + +INLINE_INFO = YES + +# If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen +# will sort the (detailed) documentation of file and class members +# alphabetically by member name. If set to NO the members will appear in +# declaration order. + +SORT_MEMBER_DOCS = YES + +# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the +# brief documentation of file, namespace and class members alphabetically +# by member name. If set to NO (the default) the members will appear in +# declaration order. + +SORT_BRIEF_DOCS = NO + +# If the SORT_MEMBERS_CTORS_1ST tag is set to YES then doxygen +# will sort the (brief and detailed) documentation of class members so that +# constructors and destructors are listed first. If set to NO (the default) +# the constructors will appear in the respective orders defined by +# SORT_MEMBER_DOCS and SORT_BRIEF_DOCS. +# This tag will be ignored for brief docs if SORT_BRIEF_DOCS is set to NO +# and ignored for detailed docs if SORT_MEMBER_DOCS is set to NO. + +SORT_MEMBERS_CTORS_1ST = NO + +# If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the +# hierarchy of group names into alphabetical order. If set to NO (the default) +# the group names will appear in their defined order. + +SORT_GROUP_NAMES = NO + +# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be +# sorted by fully-qualified names, including namespaces. If set to +# NO (the default), the class list will be sorted only by class name, +# not including the namespace part. +# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES. +# Note: This option applies only to the class list, not to the +# alphabetical list. + +SORT_BY_SCOPE_NAME = NO + +# The GENERATE_TODOLIST tag can be used to enable (YES) or +# disable (NO) the todo list. This list is created by putting \todo +# commands in the documentation. + +GENERATE_TODOLIST = YES + +# The GENERATE_TESTLIST tag can be used to enable (YES) or +# disable (NO) the test list. This list is created by putting \test +# commands in the documentation. + +GENERATE_TESTLIST = YES + +# The GENERATE_BUGLIST tag can be used to enable (YES) or +# disable (NO) the bug list. This list is created by putting \bug +# commands in the documentation. + +GENERATE_BUGLIST = YES + +# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or +# disable (NO) the deprecated list. This list is created by putting +# \deprecated commands in the documentation. + +GENERATE_DEPRECATEDLIST= YES + +# The ENABLED_SECTIONS tag can be used to enable conditional +# documentation sections, marked by \if sectionname ... \endif. + +ENABLED_SECTIONS = + +# The MAX_INITIALIZER_LINES tag determines the maximum number of lines +# the initial value of a variable or define consists of for it to appear in +# the documentation. If the initializer consists of more lines than specified +# here it will be hidden. Use a value of 0 to hide initializers completely. +# The appearance of the initializer of individual variables and defines in the +# documentation can be controlled using \showinitializer or \hideinitializer +# command in the documentation regardless of this setting. + +MAX_INITIALIZER_LINES = 30 + +# Set the SHOW_USED_FILES tag to NO to disable the list of files generated +# at the bottom of the documentation of classes and structs. If set to YES the +# list will mention the files that were used to generate the documentation. + +SHOW_USED_FILES = YES + +# If the sources in your project are distributed over multiple directories +# then setting the SHOW_DIRECTORIES tag to YES will show the directory hierarchy +# in the documentation. The default is NO. + +SHOW_DIRECTORIES = NO + +# Set the SHOW_FILES tag to NO to disable the generation of the Files page. +# This will remove the Files entry from the Quick Index and from the +# Folder Tree View (if specified). The default is YES. + +SHOW_FILES = YES + +# Set the SHOW_NAMESPACES tag to NO to disable the generation of the +# Namespaces page. This will remove the Namespaces entry from the Quick Index +# and from the Folder Tree View (if specified). The default is YES. + +SHOW_NAMESPACES = YES + +# The FILE_VERSION_FILTER tag can be used to specify a program or script that +# doxygen should invoke to get the current version for each file (typically from +# the version control system). Doxygen will invoke the program by executing (via +# popen()) the command , where is the value of +# the FILE_VERSION_FILTER tag, and is the name of an input file +# provided by doxygen. Whatever the program writes to standard output +# is used as the file version. See the manual for examples. + +FILE_VERSION_FILTER = + +# The LAYOUT_FILE tag can be used to specify a layout file which will be parsed by +# doxygen. The layout file controls the global structure of the generated output files +# in an output format independent way. The create the layout file that represents +# doxygen's defaults, run doxygen with the -l option. You can optionally specify a +# file name after the option, if omitted DoxygenLayout.xml will be used as the name +# of the layout file. + +LAYOUT_FILE = + +#--------------------------------------------------------------------------- +# configuration options related to warning and progress messages +#--------------------------------------------------------------------------- + +# The QUIET tag can be used to turn on/off the messages that are generated +# by doxygen. Possible values are YES and NO. If left blank NO is used. + +QUIET = NO + +# The WARNINGS tag can be used to turn on/off the warning messages that are +# generated by doxygen. Possible values are YES and NO. If left blank +# NO is used. + +WARNINGS = YES + +# If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings +# for undocumented members. If EXTRACT_ALL is set to YES then this flag will +# automatically be disabled. + +WARN_IF_UNDOCUMENTED = YES + +# If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for +# potential errors in the documentation, such as not documenting some +# parameters in a documented function, or documenting parameters that +# don't exist or using markup commands wrongly. + +WARN_IF_DOC_ERROR = YES + +# This WARN_NO_PARAMDOC option can be abled to get warnings for +# functions that are documented, but have no documentation for their parameters +# or return value. If set to NO (the default) doxygen will only warn about +# wrong or incomplete parameter documentation, but not about the absence of +# documentation. + +WARN_NO_PARAMDOC = NO + +# The WARN_FORMAT tag determines the format of the warning messages that +# doxygen can produce. The string should contain the $file, $line, and $text +# tags, which will be replaced by the file and line number from which the +# warning originated and the warning text. Optionally the format may contain +# $version, which will be replaced by the version of the file (if it could +# be obtained via FILE_VERSION_FILTER) + +WARN_FORMAT = "$file:$line: $text" + +# The WARN_LOGFILE tag can be used to specify a file to which warning +# and error messages should be written. If left blank the output is written +# to stderr. + +WARN_LOGFILE = + +#--------------------------------------------------------------------------- +# configuration options related to the input files +#--------------------------------------------------------------------------- + +# The INPUT tag can be used to specify the files and/or directories that contain +# documented source files. You may enter file names like "myfile.cpp" or +# directories like "/usr/src/myproject". Separate the files or directories +# with spaces. + +INPUT = .. + +# This tag can be used to specify the character encoding of the source files +# that doxygen parses. Internally doxygen uses the UTF-8 encoding, which is +# also the default input encoding. Doxygen uses libiconv (or the iconv built +# into libc) for the transcoding. See http://www.gnu.org/software/libiconv for +# the list of possible encodings. + +INPUT_ENCODING = UTF-8 + +# If the value of the INPUT tag contains directories, you can use the +# FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp +# and *.h) to filter out the source-files in the directories. If left +# blank the following patterns are tested: +# *.c *.cc *.cxx *.cpp *.c++ *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh *.hxx +# *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm *.py *.f90 + +FILE_PATTERNS = *.c \ + *.cc \ + *.cxx \ + *.cpp \ + *.c++ \ + *.d \ + *.java \ + *.ii \ + *.ixx \ + *.ipp \ + *.i++ \ + *.inl \ + *.h \ + *.hh \ + *.hxx \ + *.hpp \ + *.h++ \ + *.idl \ + *.odl \ + *.cs \ + *.php \ + *.php3 \ + *.inc \ + *.m \ + *.mm \ + *.dox \ + *.py \ + *.f90 \ + *.f \ + *.vhd \ + *.vhdl + +# The RECURSIVE tag can be used to turn specify whether or not subdirectories +# should be searched for input files as well. Possible values are YES and NO. +# If left blank NO is used. + +RECURSIVE = YES + +# The EXCLUDE tag can be used to specify files and/or directories that should +# excluded from the INPUT source files. This way you can easily exclude a +# subdirectory from a directory tree whose root is specified with the INPUT tag. + +EXCLUDE = + +# The EXCLUDE_SYMLINKS tag can be used select whether or not files or +# directories that are symbolic links (a Unix filesystem feature) are excluded +# from the input. + +EXCLUDE_SYMLINKS = NO + +# If the value of the INPUT tag contains directories, you can use the +# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude +# certain files from those directories. Note that the wildcards are matched +# against the file with absolute path, so to exclude all test directories +# for example use the pattern */test/* + +EXCLUDE_PATTERNS = + +# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names +# (namespaces, classes, functions, etc.) that should be excluded from the +# output. The symbol name can be a fully qualified name, a word, or if the +# wildcard * is used, a substring. Examples: ANamespace, AClass, +# AClass::ANamespace, ANamespace::*Test + +EXCLUDE_SYMBOLS = + +# The EXAMPLE_PATH tag can be used to specify one or more files or +# directories that contain example code fragments that are included (see +# the \include command). + +EXAMPLE_PATH = + +# If the value of the EXAMPLE_PATH tag contains directories, you can use the +# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp +# and *.h) to filter out the source-files in the directories. If left +# blank all files are included. + +EXAMPLE_PATTERNS = * + +# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be +# searched for input files to be used with the \include or \dontinclude +# commands irrespective of the value of the RECURSIVE tag. +# Possible values are YES and NO. If left blank NO is used. + +EXAMPLE_RECURSIVE = NO + +# The IMAGE_PATH tag can be used to specify one or more files or +# directories that contain image that are included in the documentation (see +# the \image command). + +IMAGE_PATH = + +# The INPUT_FILTER tag can be used to specify a program that doxygen should +# invoke to filter for each input file. Doxygen will invoke the filter program +# by executing (via popen()) the command , where +# is the value of the INPUT_FILTER tag, and is the name of an +# input file. Doxygen will then use the output that the filter program writes +# to standard output. If FILTER_PATTERNS is specified, this tag will be +# ignored. + +INPUT_FILTER = + +# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern +# basis. Doxygen will compare the file name with each pattern and apply the +# filter if there is a match. The filters are a list of the form: +# pattern=filter (like *.cpp=my_cpp_filter). See INPUT_FILTER for further +# info on how filters are used. If FILTER_PATTERNS is empty, INPUT_FILTER +# is applied to all files. + +FILTER_PATTERNS = + +# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using +# INPUT_FILTER) will be used to filter the input files when producing source +# files to browse (i.e. when SOURCE_BROWSER is set to YES). + +FILTER_SOURCE_FILES = NO + +#--------------------------------------------------------------------------- +# configuration options related to source browsing +#--------------------------------------------------------------------------- + +# If the SOURCE_BROWSER tag is set to YES then a list of source files will +# be generated. Documented entities will be cross-referenced with these sources. +# Note: To get rid of all source code in the generated output, make sure also +# VERBATIM_HEADERS is set to NO. + +SOURCE_BROWSER = NO + +# Setting the INLINE_SOURCES tag to YES will include the body +# of functions and classes directly in the documentation. + +INLINE_SOURCES = NO + +# Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct +# doxygen to hide any special comment blocks from generated source code +# fragments. Normal C and C++ comments will always remain visible. + +STRIP_CODE_COMMENTS = YES + +# If the REFERENCED_BY_RELATION tag is set to YES +# then for each documented function all documented +# functions referencing it will be listed. + +REFERENCED_BY_RELATION = NO + +# If the REFERENCES_RELATION tag is set to YES +# then for each documented function all documented entities +# called/used by that function will be listed. + +REFERENCES_RELATION = NO + +# If the REFERENCES_LINK_SOURCE tag is set to YES (the default) +# and SOURCE_BROWSER tag is set to YES, then the hyperlinks from +# functions in REFERENCES_RELATION and REFERENCED_BY_RELATION lists will +# link to the source code. Otherwise they will link to the documentation. + +REFERENCES_LINK_SOURCE = YES + +# If the USE_HTAGS tag is set to YES then the references to source code +# will point to the HTML generated by the htags(1) tool instead of doxygen +# built-in source browser. The htags tool is part of GNU's global source +# tagging system (see http://www.gnu.org/software/global/global.html). You +# will need version 4.8.6 or higher. + +USE_HTAGS = NO + +# If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen +# will generate a verbatim copy of the header file for each class for +# which an include is specified. Set to NO to disable this. + +VERBATIM_HEADERS = YES + +#--------------------------------------------------------------------------- +# configuration options related to the alphabetical class index +#--------------------------------------------------------------------------- + +# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index +# of all compounds will be generated. Enable this if the project +# contains a lot of classes, structs, unions or interfaces. + +ALPHABETICAL_INDEX = NO + +# If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then +# the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns +# in which this list will be split (can be a number in the range [1..20]) + +COLS_IN_ALPHA_INDEX = 5 + +# In case all classes in a project start with a common prefix, all +# classes will be put under the same header in the alphabetical index. +# The IGNORE_PREFIX tag can be used to specify one or more prefixes that +# should be ignored while generating the index headers. + +IGNORE_PREFIX = + +#--------------------------------------------------------------------------- +# configuration options related to the HTML output +#--------------------------------------------------------------------------- + +# If the GENERATE_HTML tag is set to YES (the default) Doxygen will +# generate HTML output. + +GENERATE_HTML = YES + +# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `html' will be used as the default path. + +HTML_OUTPUT = html + +# The HTML_FILE_EXTENSION tag can be used to specify the file extension for +# each generated HTML page (for example: .htm,.php,.asp). If it is left blank +# doxygen will generate files with .html extension. + +HTML_FILE_EXTENSION = .html + +# The HTML_HEADER tag can be used to specify a personal HTML header for +# each generated HTML page. If it is left blank doxygen will generate a +# standard header. + +HTML_HEADER = + +# The HTML_FOOTER tag can be used to specify a personal HTML footer for +# each generated HTML page. If it is left blank doxygen will generate a +# standard footer. + +HTML_FOOTER = + +# The HTML_STYLESHEET tag can be used to specify a user-defined cascading +# style sheet that is used by each HTML page. It can be used to +# fine-tune the look of the HTML output. If the tag is left blank doxygen +# will generate a default style sheet. Note that doxygen will try to copy +# the style sheet file to the HTML output directory, so don't put your own +# stylesheet in the HTML output directory as well, or it will be erased! + +HTML_STYLESHEET = + +# If the HTML_TIMESTAMP tag is set to YES then the footer of each generated HTML +# page will contain the date and time when the page was generated. Setting +# this to NO can help when comparing the output of multiple runs. + +HTML_TIMESTAMP = YES + +# If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes, +# files or namespaces will be aligned in HTML using tables. If set to +# NO a bullet list will be used. + +HTML_ALIGN_MEMBERS = YES + +# If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML +# documentation will contain sections that can be hidden and shown after the +# page has loaded. For this to work a browser that supports +# JavaScript and DHTML is required (for instance Mozilla 1.0+, Firefox +# Netscape 6.0+, Internet explorer 5.0+, Konqueror, or Safari). + +HTML_DYNAMIC_SECTIONS = NO + +# If the GENERATE_DOCSET tag is set to YES, additional index files +# will be generated that can be used as input for Apple's Xcode 3 +# integrated development environment, introduced with OSX 10.5 (Leopard). +# To create a documentation set, doxygen will generate a Makefile in the +# HTML output directory. Running make will produce the docset in that +# directory and running "make install" will install the docset in +# ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find +# it at startup. +# See http://developer.apple.com/tools/creatingdocsetswithdoxygen.html for more information. + +GENERATE_DOCSET = NO + +# When GENERATE_DOCSET tag is set to YES, this tag determines the name of the +# feed. A documentation feed provides an umbrella under which multiple +# documentation sets from a single provider (such as a company or product suite) +# can be grouped. + +DOCSET_FEEDNAME = "Doxygen generated docs" + +# When GENERATE_DOCSET tag is set to YES, this tag specifies a string that +# should uniquely identify the documentation set bundle. This should be a +# reverse domain-name style string, e.g. com.mycompany.MyDocSet. Doxygen +# will append .docset to the name. + +DOCSET_BUNDLE_ID = org.doxygen.Project + +# If the GENERATE_HTMLHELP tag is set to YES, additional index files +# will be generated that can be used as input for tools like the +# Microsoft HTML help workshop to generate a compiled HTML help file (.chm) +# of the generated HTML documentation. + +GENERATE_HTMLHELP = NO + +# If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can +# be used to specify the file name of the resulting .chm file. You +# can add a path in front of the file if the result should not be +# written to the html output directory. + +CHM_FILE = + +# If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can +# be used to specify the location (absolute path including file name) of +# the HTML help compiler (hhc.exe). If non-empty doxygen will try to run +# the HTML help compiler on the generated index.hhp. + +HHC_LOCATION = + +# If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag +# controls if a separate .chi index file is generated (YES) or that +# it should be included in the master .chm file (NO). + +GENERATE_CHI = NO + +# If the GENERATE_HTMLHELP tag is set to YES, the CHM_INDEX_ENCODING +# is used to encode HtmlHelp index (hhk), content (hhc) and project file +# content. + +CHM_INDEX_ENCODING = + +# If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag +# controls whether a binary table of contents is generated (YES) or a +# normal table of contents (NO) in the .chm file. + +BINARY_TOC = NO + +# The TOC_EXPAND flag can be set to YES to add extra items for group members +# to the contents of the HTML help documentation and to the tree view. + +TOC_EXPAND = NO + +# If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and QHP_VIRTUAL_FOLDER +# are set, an additional index file will be generated that can be used as input for +# Qt's qhelpgenerator to generate a Qt Compressed Help (.qch) of the generated +# HTML documentation. + +GENERATE_QHP = NO + +# If the QHG_LOCATION tag is specified, the QCH_FILE tag can +# be used to specify the file name of the resulting .qch file. +# The path specified is relative to the HTML output folder. + +QCH_FILE = + +# The QHP_NAMESPACE tag specifies the namespace to use when generating +# Qt Help Project output. For more information please see +# http://doc.trolltech.com/qthelpproject.html#namespace + +QHP_NAMESPACE = org.doxygen.Project + +# The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating +# Qt Help Project output. For more information please see +# http://doc.trolltech.com/qthelpproject.html#virtual-folders + +QHP_VIRTUAL_FOLDER = doc + +# If QHP_CUST_FILTER_NAME is set, it specifies the name of a custom filter to add. +# For more information please see +# http://doc.trolltech.com/qthelpproject.html#custom-filters + +QHP_CUST_FILTER_NAME = + +# The QHP_CUST_FILT_ATTRS tag specifies the list of the attributes of the custom filter to add.For more information please see +# Qt Help Project / Custom Filters. + +QHP_CUST_FILTER_ATTRS = + +# The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this project's +# filter section matches. +# Qt Help Project / Filter Attributes. + +QHP_SECT_FILTER_ATTRS = + +# If the GENERATE_QHP tag is set to YES, the QHG_LOCATION tag can +# be used to specify the location of Qt's qhelpgenerator. +# If non-empty doxygen will try to run qhelpgenerator on the generated +# .qhp file. + +QHG_LOCATION = + +# If the GENERATE_ECLIPSEHELP tag is set to YES, additional index files +# will be generated, which together with the HTML files, form an Eclipse help +# plugin. To install this plugin and make it available under the help contents +# menu in Eclipse, the contents of the directory containing the HTML and XML +# files needs to be copied into the plugins directory of eclipse. The name of +# the directory within the plugins directory should be the same as +# the ECLIPSE_DOC_ID value. After copying Eclipse needs to be restarted before +# the help appears. + +GENERATE_ECLIPSEHELP = NO + +# A unique identifier for the eclipse help plugin. When installing the plugin +# the directory name containing the HTML and XML files should also have +# this name. + +ECLIPSE_DOC_ID = org.doxygen.Project + +# The DISABLE_INDEX tag can be used to turn on/off the condensed index at +# top of each HTML page. The value NO (the default) enables the index and +# the value YES disables it. + +DISABLE_INDEX = NO + +# This tag can be used to set the number of enum values (range [1..20]) +# that doxygen will group on one line in the generated HTML documentation. + +ENUM_VALUES_PER_LINE = 4 + +# The GENERATE_TREEVIEW tag is used to specify whether a tree-like index +# structure should be generated to display hierarchical information. +# If the tag value is set to YES, a side panel will be generated +# containing a tree-like index structure (just like the one that +# is generated for HTML Help). For this to work a browser that supports +# JavaScript, DHTML, CSS and frames is required (i.e. any modern browser). +# Windows users are probably better off using the HTML help feature. + +GENERATE_TREEVIEW = YES + +# By enabling USE_INLINE_TREES, doxygen will generate the Groups, Directories, +# and Class Hierarchy pages using a tree view instead of an ordered list. + +USE_INLINE_TREES = NO + +# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be +# used to set the initial width (in pixels) of the frame in which the tree +# is shown. + +TREEVIEW_WIDTH = 250 + +# Use this tag to change the font size of Latex formulas included +# as images in the HTML documentation. The default is 10. Note that +# when you change the font size after a successful doxygen run you need +# to manually remove any form_*.png images from the HTML output directory +# to force them to be regenerated. + +FORMULA_FONTSIZE = 10 + +# When the SEARCHENGINE tag is enabled doxygen will generate a search box +# for the HTML output. The underlying search engine uses javascript +# and DHTML and should work on any modern browser. Note that when using +# HTML help (GENERATE_HTMLHELP), Qt help (GENERATE_QHP), or docsets +# (GENERATE_DOCSET) there is already a search function so this one should +# typically be disabled. For large projects the javascript based search engine +# can be slow, then enabling SERVER_BASED_SEARCH may provide a better solution. + +SEARCHENGINE = YES + +# When the SERVER_BASED_SEARCH tag is enabled the search engine will be +# implemented using a PHP enabled web server instead of at the web client +# using Javascript. Doxygen will generate the search PHP script and index +# file to put on the web server. The advantage of the server +# based approach is that it scales better to large projects and allows +# full text search. The disadvances is that it is more difficult to setup +# and does not have live searching capabilities. + +SERVER_BASED_SEARCH = NO + +#--------------------------------------------------------------------------- +# configuration options related to the LaTeX output +#--------------------------------------------------------------------------- + +# If the GENERATE_LATEX tag is set to YES (the default) Doxygen will +# generate Latex output. + +GENERATE_LATEX = NO + +# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `latex' will be used as the default path. + +LATEX_OUTPUT = latex + +# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be +# invoked. If left blank `latex' will be used as the default command name. +# Note that when enabling USE_PDFLATEX this option is only used for +# generating bitmaps for formulas in the HTML output, but not in the +# Makefile that is written to the output directory. + +LATEX_CMD_NAME = latex + +# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to +# generate index for LaTeX. If left blank `makeindex' will be used as the +# default command name. + +MAKEINDEX_CMD_NAME = makeindex + +# If the COMPACT_LATEX tag is set to YES Doxygen generates more compact +# LaTeX documents. This may be useful for small projects and may help to +# save some trees in general. + +COMPACT_LATEX = NO + +# The PAPER_TYPE tag can be used to set the paper type that is used +# by the printer. Possible values are: a4, a4wide, letter, legal and +# executive. If left blank a4wide will be used. + +PAPER_TYPE = a4wide + +# The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX +# packages that should be included in the LaTeX output. + +EXTRA_PACKAGES = + +# The LATEX_HEADER tag can be used to specify a personal LaTeX header for +# the generated latex document. The header should contain everything until +# the first chapter. If it is left blank doxygen will generate a +# standard header. Notice: only use this tag if you know what you are doing! + +LATEX_HEADER = + +# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated +# is prepared for conversion to pdf (using ps2pdf). The pdf file will +# contain links (just like the HTML output) instead of page references +# This makes the output suitable for online browsing using a pdf viewer. + +PDF_HYPERLINKS = YES + +# If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of +# plain latex in the generated Makefile. Set this option to YES to get a +# higher quality PDF documentation. + +USE_PDFLATEX = YES + +# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode. +# command to the generated LaTeX files. This will instruct LaTeX to keep +# running if errors occur, instead of asking the user for help. +# This option is also used when generating formulas in HTML. + +LATEX_BATCHMODE = NO + +# If LATEX_HIDE_INDICES is set to YES then doxygen will not +# include the index chapters (such as File Index, Compound Index, etc.) +# in the output. + +LATEX_HIDE_INDICES = NO + +# If LATEX_SOURCE_CODE is set to YES then doxygen will include +# source code with syntax highlighting in the LaTeX output. +# Note that which sources are shown also depends on other settings +# such as SOURCE_BROWSER. + +LATEX_SOURCE_CODE = NO + +#--------------------------------------------------------------------------- +# configuration options related to the RTF output +#--------------------------------------------------------------------------- + +# If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output +# The RTF output is optimized for Word 97 and may not look very pretty with +# other RTF readers or editors. + +GENERATE_RTF = NO + +# The RTF_OUTPUT tag is used to specify where the RTF docs will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `rtf' will be used as the default path. + +RTF_OUTPUT = rtf + +# If the COMPACT_RTF tag is set to YES Doxygen generates more compact +# RTF documents. This may be useful for small projects and may help to +# save some trees in general. + +COMPACT_RTF = NO + +# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated +# will contain hyperlink fields. The RTF file will +# contain links (just like the HTML output) instead of page references. +# This makes the output suitable for online browsing using WORD or other +# programs which support those fields. +# Note: wordpad (write) and others do not support links. + +RTF_HYPERLINKS = NO + +# Load stylesheet definitions from file. Syntax is similar to doxygen's +# config file, i.e. a series of assignments. You only have to provide +# replacements, missing definitions are set to their default value. + +RTF_STYLESHEET_FILE = + +# Set optional variables used in the generation of an rtf document. +# Syntax is similar to doxygen's config file. + +RTF_EXTENSIONS_FILE = + +#--------------------------------------------------------------------------- +# configuration options related to the man page output +#--------------------------------------------------------------------------- + +# If the GENERATE_MAN tag is set to YES (the default) Doxygen will +# generate man pages + +GENERATE_MAN = NO + +# The MAN_OUTPUT tag is used to specify where the man pages will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `man' will be used as the default path. + +MAN_OUTPUT = man + +# The MAN_EXTENSION tag determines the extension that is added to +# the generated man pages (default is the subroutine's section .3) + +MAN_EXTENSION = .3 + +# If the MAN_LINKS tag is set to YES and Doxygen generates man output, +# then it will generate one additional man file for each entity +# documented in the real man page(s). These additional files +# only source the real man page, but without them the man command +# would be unable to find the correct page. The default is NO. + +MAN_LINKS = NO + +#--------------------------------------------------------------------------- +# configuration options related to the XML output +#--------------------------------------------------------------------------- + +# If the GENERATE_XML tag is set to YES Doxygen will +# generate an XML file that captures the structure of +# the code including all documentation. + +GENERATE_XML = NO + +# The XML_OUTPUT tag is used to specify where the XML pages will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `xml' will be used as the default path. + +XML_OUTPUT = xml + +# The XML_SCHEMA tag can be used to specify an XML schema, +# which can be used by a validating XML parser to check the +# syntax of the XML files. + +XML_SCHEMA = + +# The XML_DTD tag can be used to specify an XML DTD, +# which can be used by a validating XML parser to check the +# syntax of the XML files. + +XML_DTD = + +# If the XML_PROGRAMLISTING tag is set to YES Doxygen will +# dump the program listings (including syntax highlighting +# and cross-referencing information) to the XML output. Note that +# enabling this will significantly increase the size of the XML output. + +XML_PROGRAMLISTING = YES + +#--------------------------------------------------------------------------- +# configuration options for the AutoGen Definitions output +#--------------------------------------------------------------------------- + +# If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will +# generate an AutoGen Definitions (see autogen.sf.net) file +# that captures the structure of the code including all +# documentation. Note that this feature is still experimental +# and incomplete at the moment. + +GENERATE_AUTOGEN_DEF = NO + +#--------------------------------------------------------------------------- +# configuration options related to the Perl module output +#--------------------------------------------------------------------------- + +# If the GENERATE_PERLMOD tag is set to YES Doxygen will +# generate a Perl module file that captures the structure of +# the code including all documentation. Note that this +# feature is still experimental and incomplete at the +# moment. + +GENERATE_PERLMOD = NO + +# If the PERLMOD_LATEX tag is set to YES Doxygen will generate +# the necessary Makefile rules, Perl scripts and LaTeX code to be able +# to generate PDF and DVI output from the Perl module output. + +PERLMOD_LATEX = NO + +# If the PERLMOD_PRETTY tag is set to YES the Perl module output will be +# nicely formatted so it can be parsed by a human reader. This is useful +# if you want to understand what is going on. On the other hand, if this +# tag is set to NO the size of the Perl module output will be much smaller +# and Perl will parse it just the same. + +PERLMOD_PRETTY = YES + +# The names of the make variables in the generated doxyrules.make file +# are prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX. +# This is useful so different doxyrules.make files included by the same +# Makefile don't overwrite each other's variables. + +PERLMOD_MAKEVAR_PREFIX = + +#--------------------------------------------------------------------------- +# Configuration options related to the preprocessor +#--------------------------------------------------------------------------- + +# If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will +# evaluate all C-preprocessor directives found in the sources and include +# files. + +ENABLE_PREPROCESSING = YES + +# If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro +# names in the source code. If set to NO (the default) only conditional +# compilation will be performed. Macro expansion can be done in a controlled +# way by setting EXPAND_ONLY_PREDEF to YES. + +MACRO_EXPANSION = NO + +# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES +# then the macro expansion is limited to the macros specified with the +# PREDEFINED and EXPAND_AS_DEFINED tags. + +EXPAND_ONLY_PREDEF = NO + +# If the SEARCH_INCLUDES tag is set to YES (the default) the includes files +# in the INCLUDE_PATH (see below) will be search if a #include is found. + +SEARCH_INCLUDES = YES + +# The INCLUDE_PATH tag can be used to specify one or more directories that +# contain include files that are not input files but should be processed by +# the preprocessor. + +INCLUDE_PATH = + +# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard +# patterns (like *.h and *.hpp) to filter out the header-files in the +# directories. If left blank, the patterns specified with FILE_PATTERNS will +# be used. + +INCLUDE_FILE_PATTERNS = + +# The PREDEFINED tag can be used to specify one or more macro names that +# are defined before the preprocessor is started (similar to the -D option of +# gcc). The argument of the tag is a list of macros of the form: name +# or name=definition (no spaces). If the definition and the = are +# omitted =1 is assumed. To prevent a macro definition from being +# undefined via #undef or recursively expanded use the := operator +# instead of the = operator. + +PREDEFINED = + +# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then +# this tag can be used to specify a list of macro names that should be expanded. +# The macro definition that is found in the sources will be used. +# Use the PREDEFINED tag if you want to use a different macro definition. + +EXPAND_AS_DEFINED = + +# If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then +# doxygen's preprocessor will remove all function-like macros that are alone +# on a line, have an all uppercase name, and do not end with a semicolon. Such +# function macros are typically used for boiler-plate code, and will confuse +# the parser if not removed. + +SKIP_FUNCTION_MACROS = YES + +#--------------------------------------------------------------------------- +# Configuration::additions related to external references +#--------------------------------------------------------------------------- + +# The TAGFILES option can be used to specify one or more tagfiles. +# Optionally an initial location of the external documentation +# can be added for each tagfile. The format of a tag file without +# this location is as follows: +# TAGFILES = file1 file2 ... +# Adding location for the tag files is done as follows: +# TAGFILES = file1=loc1 "file2 = loc2" ... +# where "loc1" and "loc2" can be relative or absolute paths or +# URLs. If a location is present for each tag, the installdox tool +# does not have to be run to correct the links. +# Note that each tag file must have a unique name +# (where the name does NOT include the path) +# If a tag file is not located in the directory in which doxygen +# is run, you must also specify the path to the tagfile here. + +TAGFILES = + +# When a file name is specified after GENERATE_TAGFILE, doxygen will create +# a tag file that is based on the input files it reads. + +GENERATE_TAGFILE = + +# If the ALLEXTERNALS tag is set to YES all external classes will be listed +# in the class index. If set to NO only the inherited external classes +# will be listed. + +ALLEXTERNALS = NO + +# If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed +# in the modules index. If set to NO, only the current project's groups will +# be listed. + +EXTERNAL_GROUPS = YES + +# The PERL_PATH should be the absolute path and name of the perl script +# interpreter (i.e. the result of `which perl'). + +PERL_PATH = /usr/bin/perl + +#--------------------------------------------------------------------------- +# Configuration options related to the dot tool +#--------------------------------------------------------------------------- + +# If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will +# generate a inheritance diagram (in HTML, RTF and LaTeX) for classes with base +# or super classes. Setting the tag to NO turns the diagrams off. Note that +# this option is superseded by the HAVE_DOT option below. This is only a +# fallback. It is recommended to install and use dot, since it yields more +# powerful graphs. + +CLASS_DIAGRAMS = YES + +# You can define message sequence charts within doxygen comments using the \msc +# command. Doxygen will then run the mscgen tool (see +# http://www.mcternan.me.uk/mscgen/) to produce the chart and insert it in the +# documentation. The MSCGEN_PATH tag allows you to specify the directory where +# the mscgen tool resides. If left empty the tool is assumed to be found in the +# default search path. + +MSCGEN_PATH = + +# If set to YES, the inheritance and collaboration graphs will hide +# inheritance and usage relations if the target is undocumented +# or is not a class. + +HIDE_UNDOC_RELATIONS = YES + +# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is +# available from the path. This tool is part of Graphviz, a graph visualization +# toolkit from AT&T and Lucent Bell Labs. The other options in this section +# have no effect if this option is set to NO (the default) + +HAVE_DOT = NO + +# By default doxygen will write a font called FreeSans.ttf to the output +# directory and reference it in all dot files that doxygen generates. This +# font does not include all possible unicode characters however, so when you need +# these (or just want a differently looking font) you can specify the font name +# using DOT_FONTNAME. You need need to make sure dot is able to find the font, +# which can be done by putting it in a standard location or by setting the +# DOTFONTPATH environment variable or by setting DOT_FONTPATH to the directory +# containing the font. + +DOT_FONTNAME = FreeSans + +# The DOT_FONTSIZE tag can be used to set the size of the font of dot graphs. +# The default size is 10pt. + +DOT_FONTSIZE = 10 + +# By default doxygen will tell dot to use the output directory to look for the +# FreeSans.ttf font (which doxygen will put there itself). If you specify a +# different font using DOT_FONTNAME you can set the path where dot +# can find it using this tag. + +DOT_FONTPATH = + +# If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen +# will generate a graph for each documented class showing the direct and +# indirect inheritance relations. Setting this tag to YES will force the +# the CLASS_DIAGRAMS tag to NO. + +CLASS_GRAPH = YES + +# If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen +# will generate a graph for each documented class showing the direct and +# indirect implementation dependencies (inheritance, containment, and +# class references variables) of the class with other documented classes. + +COLLABORATION_GRAPH = YES + +# If the GROUP_GRAPHS and HAVE_DOT tags are set to YES then doxygen +# will generate a graph for groups, showing the direct groups dependencies + +GROUP_GRAPHS = YES + +# If the UML_LOOK tag is set to YES doxygen will generate inheritance and +# collaboration diagrams in a style similar to the OMG's Unified Modeling +# Language. + +UML_LOOK = NO + +# If set to YES, the inheritance and collaboration graphs will show the +# relations between templates and their instances. + +TEMPLATE_RELATIONS = NO + +# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT +# tags are set to YES then doxygen will generate a graph for each documented +# file showing the direct and indirect include dependencies of the file with +# other documented files. + +INCLUDE_GRAPH = YES + +# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and +# HAVE_DOT tags are set to YES then doxygen will generate a graph for each +# documented header file showing the documented files that directly or +# indirectly include this file. + +INCLUDED_BY_GRAPH = YES + +# If the CALL_GRAPH and HAVE_DOT options are set to YES then +# doxygen will generate a call dependency graph for every global function +# or class method. Note that enabling this option will significantly increase +# the time of a run. So in most cases it will be better to enable call graphs +# for selected functions only using the \callgraph command. + +CALL_GRAPH = NO + +# If the CALLER_GRAPH and HAVE_DOT tags are set to YES then +# doxygen will generate a caller dependency graph for every global function +# or class method. Note that enabling this option will significantly increase +# the time of a run. So in most cases it will be better to enable caller +# graphs for selected functions only using the \callergraph command. + +CALLER_GRAPH = NO + +# If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen +# will graphical hierarchy of all classes instead of a textual one. + +GRAPHICAL_HIERARCHY = YES + +# If the DIRECTORY_GRAPH, SHOW_DIRECTORIES and HAVE_DOT tags are set to YES +# then doxygen will show the dependencies a directory has on other directories +# in a graphical way. The dependency relations are determined by the #include +# relations between the files in the directories. + +DIRECTORY_GRAPH = YES + +# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images +# generated by dot. Possible values are png, jpg, or gif +# If left blank png will be used. + +DOT_IMAGE_FORMAT = png + +# The tag DOT_PATH can be used to specify the path where the dot tool can be +# found. If left blank, it is assumed the dot tool can be found in the path. + +DOT_PATH = + +# The DOTFILE_DIRS tag can be used to specify one or more directories that +# contain dot files that are included in the documentation (see the +# \dotfile command). + +DOTFILE_DIRS = + +# The DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of +# nodes that will be shown in the graph. If the number of nodes in a graph +# becomes larger than this value, doxygen will truncate the graph, which is +# visualized by representing a node as a red box. Note that doxygen if the +# number of direct children of the root node in a graph is already larger than +# DOT_GRAPH_MAX_NODES then the graph will not be shown at all. Also note +# that the size of a graph can be further restricted by MAX_DOT_GRAPH_DEPTH. + +DOT_GRAPH_MAX_NODES = 50 + +# The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the +# graphs generated by dot. A depth value of 3 means that only nodes reachable +# from the root by following a path via at most 3 edges will be shown. Nodes +# that lay further from the root node will be omitted. Note that setting this +# option to 1 or 2 may greatly reduce the computation time needed for large +# code bases. Also note that the size of a graph can be further restricted by +# DOT_GRAPH_MAX_NODES. Using a depth of 0 means no depth restriction. + +MAX_DOT_GRAPH_DEPTH = 0 + +# Set the DOT_TRANSPARENT tag to YES to generate images with a transparent +# background. This is disabled by default, because dot on Windows does not +# seem to support this out of the box. Warning: Depending on the platform used, +# enabling this option may lead to badly anti-aliased labels on the edges of +# a graph (i.e. they become hard to read). + +DOT_TRANSPARENT = NO + +# Set the DOT_MULTI_TARGETS tag to YES allow dot to generate multiple output +# files in one run (i.e. multiple -o and -T options on the command line). This +# makes dot run faster, but since only newer versions of dot (>1.8.10) +# support this, this feature is disabled by default. + +DOT_MULTI_TARGETS = NO + +# If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will +# generate a legend page explaining the meaning of the various boxes and +# arrows in the dot generated graphs. + +GENERATE_LEGEND = YES + +# If the DOT_CLEANUP tag is set to YES (the default) Doxygen will +# remove the intermediate dot files that are used to generate +# the various graphs. + +DOT_CLEANUP = YES diff --git a/doc/DoxygenLayout.xml b/doc/DoxygenLayout.xml new file mode 100644 index 0000000..4be599b --- /dev/null +++ b/doc/DoxygenLayout.xml @@ -0,0 +1,185 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/doc/MMVR2014_obsolete/IOSProceedings/IOS-Book-Article.cls b/doc/MMVR2014_obsolete/IOSProceedings/IOS-Book-Article.cls new file mode 100644 index 0000000..9123c22 --- /dev/null +++ b/doc/MMVR2014_obsolete/IOSProceedings/IOS-Book-Article.cls @@ -0,0 +1,1200 @@ +%% This is file `IOSarticle.cls' +%% +%% Generic LaTeX 2e class file for the IOS Press publications +%% +%% Macros written by Vytas Statulevicius, VTeX, Lithuania +%% for IOS Press, The Netherlands +%% Please submit bugs or your comments to vytas@vtex.lt +%% +%% You are free to use this class file as you see fit, provided +%% that you do not make changes to the file. +%% If you DO make changes, you are required to rename this file. +%% +%% It may be distributed under the terms of the LaTeX Project Public +%% License, as described in lppl.txt in the base LaTeX distribution. +%% Either version 1.0 or, at your option, any later version. +%% +%% \CharacterTable +%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z +%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z +%% Digits \0\1\2\3\4\5\6\7\8\9 +%% Exclamation \! Double quote \" Hash (number) \# +%% Dollar \$ Percent \% Ampersand \& +%% Acute accent \' Left paren \( Right paren \) +%% Asterisk \* Plus \+ Comma \, +%% Minus \- Point \. Solidus \/ +%% Colon \: Semicolon \; Less than \< +%% Equals \= Greater than \> Question mark \? +%% Commercial at \@ Left bracket \[ Backslash \\ +%% Right bracket \] Circumflex \^ Underscore \_ +%% Grave accent \` Left brace \{ Vertical bar \| +%% Right brace \} Tilde \~} +%% +%% +%% Bug fixes and changes: +%% 2004.05.19 - small change o layout +%% 2004.09.14 - \parindent changed +%% 2006.03.27 - centering on A4, no running heads, \snm makes uppercase +%% 2006.04.20 - changed: \thebibliography size, indent, \parindent + +\NeedsTeXFormat{LaTeX2e}[1995/12/01] +\ProvidesClass{IOS-Book-Article} + [2006/04/20 v1.0, IOS Press] + +\newif\if@restonecol \@restonecolfalse +\newif\if@openright +\newif\if@mainmatter \@mainmattertrue + +\DeclareOption{draft}{\setlength\overfullrule{5pt}} +\DeclareOption{final}{\setlength\overfullrule{0pt}} +\DeclareOption{openright}{\@openrighttrue} +\DeclareOption{openany}{\@openrightfalse} +\DeclareOption{onecolumn}{\@twocolumnfalse\@restonecoltrue} +\DeclareOption{twocolumn}{\@twocolumntrue} +\DeclareOption{leqno}{\input{leqno.clo}} +\DeclareOption{fleqn}{\input{fleqn.clo}}% +% +% Numbering switches: +\newif\if@seceqn \@seceqnfalse \DeclareOption{seceqn}{\@seceqntrue} +\newif\if@secfloat \@secfloatfalse \DeclareOption{secfloat}{\@secfloattrue} +\newif\if@secthm \DeclareOption{secthm}{\@secthmtrue} +% +% +% Selection of font size and page dimensions +% If 12pt option is used, page will be reduced by 80% at printing time +\newif\if@ten@point \@ten@pointfalse + +\DeclareOption{10pt}{\@ten@pointtrue} +\DeclareOption{12pt}{\@ten@pointfalse} + +% Information about the publication +\def\booktitle#1{\gdef\book@title{#1}} +\def\bookeditors#1{\gdef\book@editors{#1}} +\def\publisher#1{\gdef\@publisher{#1}} + +\booktitle{Book Title} +\bookeditors{Book Editors} +\publisher{IOS Press} + +\ExecuteOptions{10pt,onecolumn,twoside,final,openright,fleqn} +\ProcessOptions +% + +%************************* FONTS +%\def\@xivpt{14} +%\def\@xviipt{17} +%\def\@xviiipt{18} +%\def\@xxpt{20} +%\def\@xxivpt{24} + +% Fonts: +\typeout{Ten point} +% +\renewcommand\normalsize{% + \@setfontsize\normalsize\@xpt{12pt plus .5\p@ minus .1\p@}% + \abovedisplayskip 12\p@ \@plus3pt \@minus3pt% + \abovedisplayshortskip\abovedisplayskip% + \belowdisplayshortskip\abovedisplayskip% + \belowdisplayskip \abovedisplayskip% + \let\@listi\@listI} + +\newcommand\small{% + \@setfontsize\small\@ixpt\@xipt% + \abovedisplayskip 5.5\p@ \@plus3pt% + \abovedisplayshortskip 5.5\p@ \@plus1pt \@minus1pt% + \belowdisplayshortskip 5.5\p@ \@plus1pt \@minus1pt% + \def\@listi{\leftmargin\leftmargini + \topsep 5\p@ \@plus2\p@ \@minus2\p@ + \parsep \z@ \itemsep \parsep}% + \belowdisplayskip \abovedisplayskip% +} +\newcommand\footnotesize{% + \@setfontsize\footnotesize\@viiipt\@xpt% + \abovedisplayskip 5.5\p@ \@plus3pt% + \abovedisplayshortskip 5.5\p@ \@plus1pt \@minus1pt% + \belowdisplayshortskip 5.5\p@ \@plus1pt \@minus1pt% + \def\@listi{\leftmargin\leftmargini + \topsep 4\p@ \@plus2\p@ \@minus2\p@ + \parsep \z@ \itemsep \parsep}% + \belowdisplayskip \abovedisplayskip% +} +\newcommand\scriptsize{\@setfontsize\scriptsize\@viiipt{9.5}} +\newcommand\tiny{\@setfontsize\tiny\@vipt\@viipt} +\newcommand\large{\@setfontsize\large\@xiipt{14}} +\newcommand\Large{\@setfontsize\Large\@xivpt{18}} +\newcommand\LARGE{\@setfontsize\LARGE\@xviipt{22}} +\newcommand\huge{\@setfontsize\huge\@xxpt{25}} +\newcommand\Huge{\@setfontsize\Huge\@xxvpt{30}} + +\normalsize + +% Customization of fonts +\renewcommand\sldefault{it} +\renewcommand\bfdefault{b} +\let\slshape\itshape +% + +% ********************* DIMENSIONS: +% TEXT DIMENSIONS +\setlength\parindent{18\p@} +\@settopoint\parindent +\setlength\textwidth{124mm} +\@settopoint\textwidth +\setlength\textheight{200mm} +\@settopoint\textheight +\setlength\columnsep{10mm} +\@settopoint\columnsep +\setlength\columnwidth{95mm} +\@settopoint\columnwidth +\setlength\columnseprule{0\p@} +\hoffset -0.5cm +\voffset -1cm + +% HEADS: +\setlength\headheight{12\p@} +\setlength\headsep {15\p@} +\setlength\topskip {10\p@} +\setlength\footskip {25\p@} +\setlength\maxdepth {.5\topskip} +% SIDE MARGINS +\setlength\oddsidemargin {0mm} +\setlength\evensidemargin {0mm} +\setlength\topmargin {10mm} +\@settopoint\topmargin +% TEXT PARAMETERS +\setlength\lineskip{1\p@} +\setlength\normallineskip{1\p@} +\renewcommand\baselinestretch{} +\setlength\parskip{0\p@} + +% Center on A4: + +\def\paper@width {210mm} +\def\paper@height{297mm} + +\hoffset=-1in +\voffset=-1in + +\@tempdima=\paper@width +\advance\@tempdima by-\textwidth +\divide\@tempdima by2 +\setlength\evensidemargin {\@tempdima}% +\setlength\oddsidemargin {\@tempdima}% + +\@tempdima=\paper@height +\advance\@tempdima by-\textheight +\advance\@tempdima by-\headsep +\advance\@tempdima by-\headheight +\divide\@tempdima by2 +\setlength\topmargin {\@tempdima}% + + + + +% BREAKS +\setlength\smallskipamount{6\p@ \@plus 1\p@ \@minus 1\p@} +\setlength\medskipamount{12\p@ \@plus 3\p@ \@minus 3\p@} +\setlength\bigskipamount{24pt \@plus 3\p@ \@minus 3\p@} +% PAGE-BREAKING PENALTIES +\clubpenalty=4000 +\widowpenalty=4000 +\displaywidowpenalty=50 +\predisplaypenalty=0 % Breaking before a math display. +% \postdisplaypenalty % Breaking after a math display. +% \interlinepenalty % Breaking at a line within a paragraph. +% \brokenpenalty % Breaking after a hyphenated line. +\pretolerance=100 % Badness tolerance for the first pass (before hyphenation) +\tolerance=800 % Badness tolerance after hyphenation +\hbadness=800 % Badness above which bad hboxes will be shown +\emergencystretch=3\p@ +\hfuzz=1\p@ % do not be to critical about boxes + +% +\doublehyphendemerits=0 +\adjdemerits=0 +\brokenpenalty=0 +\interlinepenalty=0 +% +\if@twocolumn + \setlength\marginparsep {10\p@} +\else + \setlength\marginparsep{7\p@} +\fi +\setlength\marginparpush{5\p@} + +% FOOTNOTES +\setlength\footnotesep{6.65\p@} +\setlength{\skip\footins}{12\p@ \@plus 6\p@} +% FLOATS +\setlength\floatsep {15\p@ \@plus 10\p@ \@minus 4\p@} +\setlength\textfloatsep{12\p@ \@plus 6\p@ \@minus 4\p@} +\setlength\intextsep {12\p@ \@plus 6\p@ \@minus 4\p@} +\setlength\dblfloatsep {15\p@ \@plus 10\p@ \@minus 4\p@} +\setlength\dbltextfloatsep{12\p@ \@plus 12\p@ \@minus 4\p@} +% For floats on a separate float page or column: +\setlength\@fptop{0\p@ \@plus 1fil} +\setlength\@fpsep{8\p@ \@plus 1000fil} +\setlength\@fpbot{0\p@ \@plus 1fil} +\setlength\@dblfptop{0\p@ \@plus 1fil} +\setlength\@dblfpsep{8\p@ \@plus 1000fil} +\setlength\@dblfpbot{0\p@ \@plus 1fil} +% +\setcounter{topnumber}{5} +\renewcommand\topfraction{.90} +\setcounter{bottomnumber}{5} +\renewcommand\bottomfraction{.90} +\setcounter{totalnumber}{10} +\renewcommand\textfraction{.10} +\renewcommand\floatpagefraction{.9} +\setcounter{dbltopnumber}{5} +\renewcommand\dbltopfraction{.99} +\renewcommand\dblfloatpagefraction{.8} +% +% PENALTIES +\@lowpenalty 51 +\@medpenalty 151 +\@highpenalty 301 +\@beginparpenalty -\@lowpenalty +\@endparpenalty -\@lowpenalty +\@itempenalty -\@lowpenalty +% LISTS +\setlength\partopsep{0\p@} +\def\@listI{\leftmargin\leftmargini + \parsep 0\p@ \@plus2\p@ \@minus\p@ + \topsep 9\p@ \@plus2\p@ \@minus2\p@ + \partopsep\p@ + \itemsep 1\p@ \@plus.5\p@ \@minus1\p@} +\let\@listi\@listI +\@listi +\def\@listii {\leftmargin\leftmarginii + \labelwidth\leftmarginii + \advance\labelwidth-\labelsep + \topsep 4\p@ \@plus2\p@ \@minus\p@ + \parsep 0\p@ \@plus1\p@ \@minus\p@ + \itemsep \parsep} +\def\@listiii{\leftmargin\leftmarginiii + \labelwidth\leftmarginiii + \advance\labelwidth-\labelsep + \topsep 2\p@ \@plus\p@\@minus\p@ + \parsep \z@ + \partopsep \p@ \@plus\z@ \@minus\p@ + \itemsep \topsep} +\def\@listiv {\leftmargin\leftmarginiv + \labelwidth\leftmarginiv + \advance\labelwidth-\labelsep} +\def\@listv {\leftmargin\leftmarginv + \labelwidth\leftmarginv + \advance\labelwidth-\labelsep} +\def\@listvi {\leftmargin\leftmarginvi + \labelwidth\leftmarginvi + \advance\labelwidth-\labelsep} +% +\DeclareMathSizes{\@xivpt}{\@xivpt}{\@xpt}{\@viiipt} +\DeclareMathSizes{12}{12}{\@viiipt}{\@viipt} +% +% ******************** HEADINGS +% +% normal heading +\def\ps@headings{% + \let\@oddfoot\@empty\let\@evenfoot\@empty + \def\@evenhead{\footnotesize\rlap{\thepage}\hfill\textit{\leftmark}\hfill}% + \def\@oddhead{\footnotesize\hfill\textit{\rightmark}\hfill\llap{\thepage}}% +}% +% empty RH +\def\ps@empty{\let\@mkboth\@gobbletwo + \def\@oddhead{\hfill}\def\@oddfoot{} +\let\@evenhead\@oddhead\let\@evenfoot\@oddfoot} +% +% RH with pagenumber at bottom +\def\ps@plain{\let\@mkboth\@gobbletwo + \def\@oddhead{\hfill}\def\@oddfoot{} +\let\@evenhead\@oddhead + \def\@oddfoot{\hfill\footnotesize\thepage\hfill} + \let\@evenfoot\@oddfoot +} +% First page RH +\def\ps@copyright{\let\@mkboth\@gobbletwo + \def\@evenhead{\parbox[t]{.75\textwidth}{\footnotesize\raggedright\itshape\titleheadline}\hfill\footnotesize\thepage}% + \def\@oddhead {\parbox[t]{.75\textwidth}{\footnotesize\raggedright\itshape\titleheadline}\hfill\footnotesize\thepage}% + \let\@oddfoot\relax% + \let\@evenfoot\@oddfoot% +} +% +% HEADLINE: Book Title +% Book Editors +% IOS Press, 0000 +% +\def\titleheadline{% + \book@title\\ + \book@editors\\ + \@publisher, \the\@pubyear} +% +\def\@copyright{\@issn/\the@copyear/\$\@price\ \copyright@sign\ +\the\@pubyear\@copyrightowner}% +% + +% ************************ FOOTNOTE +% +\newcommand\@makefntext[1]{% + \parindent1em\@makefnmark #1} +\def\@makefnmark{\@textsuperscript{\normalfont\@thefnmark}}% +% +% ************************ Counters +\setcounter{secnumdepth}{3} +\newcounter {section} +\newcounter {subsection}[section] +\newcounter {subsubsection}[subsection] +\newcounter {paragraph}[subsubsection] +\newcounter {subparagraph}[paragraph] +\renewcommand \thesection {\@arabic\c@section} +\renewcommand\thesubsection {\thesection.\@arabic\c@subsection} +\renewcommand\thesubsubsection{\thesubsection .\@arabic\c@subsubsection} +\renewcommand\theparagraph {\thesubsubsection.\@arabic\c@paragraph} +\renewcommand\thesubparagraph {\theparagraph.\@arabic\c@subparagraph} +% +% ******************** Sectioning commands +\def\no@harm{\let\thanks=\@gobble \let\\=\@empty} +%**************** Section commands +\def\nohyphen{\pretolerance=10000 \tolerance=10000 +\hyphenpenalty=10000 \exhyphenpenalty=10000} +\newcommand\section{\@startsection {section}{1}{\z@}% + {-\bigskipamount}% + {\medskipamount}% + {\normalsize\bfseries\nohyphen\raggedright}} +\newcommand\subsection{\@startsection {subsection}{2}{\z@}% + {-\medskipamount}% + {\medskipamount}% + {\normalsize\itshape\nohyphen\raggedright}} +\newcommand\subsubsection{\@startsection{subsubsection}{3}{\z@}% + {-\medskipamount}% + {\smallskipamount}% + {\normalsize\itshape\nohyphen\raggedright}} +\newcommand\paragraph{\@startsection{paragraph}{4}{\z@}% + {\smallskipamount}% + {-1em}% + {\normalsize\itshape}} +\newcommand\subparagraph{\@startsection{subparagraph}{5}{\z@}% + {0.1pt}% + {-1em}% + {\normalsize\itshape}} +% Format for the counter: +\def\@seccntformat#1{\csname the#1\endcsname.\enspace} +% +\def\appendix{\par + \setcounter{section}{0}% + \setcounter{subsection}{0}% + \gdef\thesection{\Alph{section}}} +% +\def\acknowledgements{\section*{\acknowledgementsname}% + \typeout{\acknowledgementsname}} +% +\def\notes{\section*{Notes}\footnotesize} +\def\endnotes{\par \vskip 6pt plus12pt minus2pt\relax} +%****************** LISTS +\if@twocolumn + \setlength\leftmargini {2em} +\else + \setlength\leftmargini {2.5em} +\fi +\leftmargin \leftmargini +\setlength\leftmarginii {2.2em} +\setlength\leftmarginiii {1.87em} +\setlength\leftmarginiv {1.7em} +\if@twocolumn + \setlength\leftmarginv {.5em} + \setlength\leftmarginvi {.5em} +\else + \setlength\leftmarginv {1em} + \setlength\leftmarginvi {1em} +\fi +\setlength \labelsep {.4em} +\setlength \labelwidth{\leftmargini} +\addtolength\labelwidth{-\labelsep} +% +\renewcommand\theenumi{\@arabic\c@enumi} +\renewcommand\theenumii{\@alph\c@enumii} +\renewcommand\theenumiii{\@roman\c@enumiii} +\renewcommand\theenumiv{\@Alph\c@enumiv} +\newcommand\labelenumi{\theenumi.} +\newcommand\labelenumii{(\theenumii)} +\newcommand\labelenumiii{\theenumiii.} +\newcommand\labelenumiv{\theenumiv.} +\renewcommand\p@enumii{\theenumi} +\renewcommand\p@enumiii{\theenumi(\theenumii)} +\renewcommand\p@enumiv{\p@enumiii\theenumiii} +% +\def\setenumlabel#1{\gdef\max@enumlabel{#1}} +\setenumlabel{1.} +% +\def\enumerate{\@ifnextchar[{\enumerate@}{\enumerate@[\max@enumlabel]}} +% +\def\enumerate@[#1]{\ifnum \@enumdepth >4 \@toodeep\else + \advance\@enumdepth \@ne + \edef\@enumctr{enum\romannumeral\the\@enumdepth}% + \list {\csname label\@enumctr\endcsname}% + {\usecounter{\@enumctr}\def\makelabel##1{{\hfill\rm ##1}} +\settowidth{\labelwidth}{#1} +\advance\labelwidth by\parindent \labelsep=0.5em + \leftmargin\z@ \rightmargin\z@ \itemindent=\labelwidth + \advance\itemindent\labelsep + \leftmargin=\the\itemindent\itemindent=\z@ + \partopsep\z@ \topsep\smallskipamount \parsep\z@ \itemsep\z@ %\@rightskip\z@ plus 1fil + \listparindent\z@}\fi\setenumlabel{1.}} + +%%%%%%%%%%%%%%%%%%%%%% ITEMIZE +\newcommand\labelitemi{\normalfont\bfseries \textbullet} +\newcommand\labelitemii{\textasteriskcentered} +\newcommand\labelitemiii{\textasteriskcentered} +\newcommand\labelitemiv{\textperiodcentered} + +\let\@itemize@indent\parindent +% +\def\itemize{\@ifnextchar[{\itemize@}{\itemize@[]}} +\def\itemize@[#1]{\ifnum \@itemdepth >4 \@toodeep\else + \advance\@itemdepth \@ne + \edef\@itemitem{labelitem\romannumeral\the\@itemdepth}% + \if.#1. \else\def\@@tempa{#1}\edef\@itemitem{@@tempa}\fi\list +{\csname\@itemitem\endcsname}{\settowidth{\labelwidth} + {\csname\@itemitem\endcsname} + \def\makelabel##1{##1}\labelsep=0.5em%ST + \itemindent=\labelwidth \advance\itemindent\labelsep + \advance\itemindent\@itemize@indent + \leftmargin\the\itemindent \itemindent=\z@ + \partopsep\z@ \topsep\smallskipamount \parsep\z@ %\@rightskip\z@ plus 1fil + \itemsep\z@ \listparindent\z@} \fi} +% +\newenvironment{description} + {\list{}{\labelwidth\z@ \itemindent-\leftmargin + \let\makelabel\descriptionlabel}} + {\endlist} +\newcommand*\descriptionlabel[1]{\hspace\labelsep + \normalfont\bfseries #1} +\newenvironment{verse} + {\let\\\@centercr + \list{}{\itemsep \z@ + \itemindent -1.5em% + \listparindent\itemindent + \rightmargin \leftmargin + \advance\leftmargin 1.5em}% + \item\relax} + {\endlist} + +\newenvironment{quotation} + {\list{}{\small\listparindent2mm% + \itemindent\z@ % + \rightmargin\z@ \leftmargin\parindent% + \partopsep\z@ \topsep\smallskipamount \parsep\z@% + }% + \item[\Q@strut]\relax} + {\endlist} +\def\Q@strut{\leavevmode\hbox{\vrule height9pt depth1pt width0pt}} + +\newenvironment{quote} + {\list{}{\listparindent\z@% + \itemindent \listparindent% + \rightmargin\z@ \leftmargin 1.5em% + \partopsep\z@ \topsep6pt \parsep\z@% + }% + \item[\Q@strut]\relax} + {\endlist} +% +%************************** TABULAR +\let\savehline\hline + \def\thline{\noalign{\vskip3pt}\savehline\noalign{\vskip3pt}}% + \def\fhline{\noalign{\vskip1pt}\savehline\noalign{\vskip7pt}}% + \def\bhline{\noalign{\vskip3pt}\noalign{\global\arrayrulewidth=1\p@}\savehline\noalign{\global\arrayrulewidth=.5\p@}\noalign{\vskip3pt}}% + \def\lhline{\noalign{\vskip3pt}\noalign{\global\arrayrulewidth=.3\p@}\savehline\noalign{\global\arrayrulewidth=.5\p@}\noalign{\vskip3pt}} +% +%************************** MATH SETTINGS +\setlength\mathindent{2em} +\setlength\arraycolsep{1.2\p@} +\setlength\tabcolsep{6\p@} +\setlength\arrayrulewidth{.4\p@} +\setlength\doublerulesep{2\p@} +\setlength\tabbingsep{\labelsep} +\setlength\jot{6\p@} +\skip\@mpfootins = \skip\footins +\setlength\fboxsep{3\p@} +\setlength\fboxrule{.4\p@} +\if@seceqn +\@addtoreset {equation}{section} +\renewcommand\theequation{\thesection.\@arabic\c@equation} +\else +\renewcommand\theequation{\@arabic\c@equation} +\fi +%******* TABLES, FIGURES, ALGORITHM +\newcounter{figure} +\if@secfloat + \@addtoreset{figure}{section} + \renewcommand \thefigure {\thesection.\@arabic\c@figure} +\else + \renewcommand \thefigure {\@arabic\c@figure} +\fi +\def\fps@figure{tbp} +\def\ftype@figure{1} +\def\ext@figure{lof} +\def\fnum@figure{\figurename~\thefigure.} +\newenvironment{figure} + {\let\@makecaption\@makefigurecaption\let\@floatboxreset\@figureboxreset\@float{figure}} + {\end@float} +\newenvironment{figure*} + {\let\@makecaption\@makefigurecaption\let\@floatboxreset\@figureboxreset\@dblfloat{figure}} + {\end@dblfloat} + +\def\@figureboxreset{% + \reset@font% + \centering% + \@setnobreak% + \@setminipage% +} + + +\long\def\@makefigurecaption#1#2{\footnotesize% + \vskip\abovecaptionskip +\setbox\@tempboxa\hbox{\textbf{#1}\enspace #2}% + \ifdim \wd\@tempboxa >\hsize + \unhbox\@tempboxa\par + \else + \hbox to\hsize{\hfil\box\@tempboxa\hfil}% + \fi} +% +% TABLE +\newcounter{table} +\if@secfloat + \@addtoreset{table}{section} +\renewcommand \thetable{\thesection.\@arabic\c@table} +\else + \renewcommand \thetable{\@arabic\c@table} +\fi +\def\fps@table{tbp} +\def\ftype@table{2} +\def\ext@table{lot} +\def\fnum@table{\tablename~\thetable.} +% +\newenvironment{table} + {\let\@makecaption\@maketablecaption% + \let\@floatboxreset\@tableboxreset\@float{table}} + {\end@float} +\newenvironment{table*} + {\let\@makecaption\@maketablecaption% + \let\@floatboxreset\@tableboxreset\@dblfloat{table}} + {\end@dblfloat} +% +\def\@tableboxreset{% + \reset@font% + \centering\footnotesize% + \def\arraystretch{1.2} + \@setnobreak% + \@setminipage% +} + +\newlength\abovecaptionskip +\newlength\belowcaptionskip +\setlength\abovecaptionskip{8\p@} +\setlength\belowcaptionskip{3\p@} +% +\newdimen\tablewidth \tablewidth\textwidth +\newdimen\saved@tablewidth \saved@tablewidth\textwidth +% +\long\def\@maketablecaption#1#2{% + \begingroup% + \footnotesize% + \global\setbox\@tempboxa\hbox{\textbf{#1}\enspace #2}% + \endgroup% + \centering% + \ifdim \wd\@tempboxa>\tablewidth % + \parbox[t]{\tablewidth}{\footnotesize\textbf{#1}\enspace #2\vphantom{Ay}\par}% + \else + \hbox to\hsize{\hfill\box\@tempboxa\vphantom{Ay}\hfill}% + \fi% + \global\saved@tablewidth\tablewidth% + \global\tablewidth\hsize\vskip\belowcaptionskip} +% +% +%%****************** Algorithm +\newcounter{algorithm} +\if@secfloat + \@addtoreset{algorithm}{section} +\renewcommand \thealgorithm{\thesection.\@arabic\c@algorithm} +\else + \renewcommand \thealgorithm{\@arabic\c@algorithm} +\fi +\def\fps@algorithm{tbp} +\def\ftype@algorithm{4} +\def\ext@algorithm{loa} +\def\fnum@algorithm{\algorithmname~\thealgorithm.} +% +\newenvironment{algorithm} + {\let\@makecaption\@makealgorithmcaption% + \let\@floatboxreset\@algorithmboxreset\@float{algorithm}} + {\end@float} +\newenvironment{algorithm*} + {\let\@makecaption\@makealgorithmcaption% + \let\@floatboxreset\@algorithmboxreset\@dblfloat{algorithm}} + {\end@dblfloat} + +\def\@algorithmboxreset{% + \reset@font% + \centering + \@setnobreak% + \@setminipage% +} +\long\def\@makealgorithmcaption#1#2{\vskip 2ex \small + \hbox to \hsize{\parbox[t]{\hsize}{{\bf #1} #2}}} +% +%%%% Program Code: +\def\programcode{% +\let\@makealgorithmcaption\@makefigurecaption +\def\algorithmname{Program Code}} + + +%********************* COMPATIBILITY WITH OLD LATEX: +\DeclareOldFontCommand{\rm}{\normalfont\rmfamily}{\mathrm} +\DeclareOldFontCommand{\sf}{\normalfont\sffamily}{\mathsf} +\DeclareOldFontCommand{\tt}{\normalfont\ttfamily}{\mathtt} +\DeclareOldFontCommand{\bf}{\normalfont\bfseries}{\mathbf} +\DeclareOldFontCommand{\it}{\normalfont\itshape}{\mathit} +\let\sl\it +\DeclareOldFontCommand{\sc}{\normalfont\scshape}{\@nomath\sc} +\DeclareRobustCommand*\cal{\@fontswitch\relax\mathcal} +\DeclareRobustCommand*\mit{\@fontswitch\relax\mathnormal} +% +% *********** MATH +% +\if@secthm + \@addtoreset{thm}{section} + \def\thethm{\thesection.\arabic{thm}} +\else + \def\thethm{\arabic{thm}} +\fi +% +%***************************** BIBLIOGRAPHY + +\newenvironment{thebibliography}[1] + {\section*{\refname}\footnotesize\rmfamily\upshape% + \list{\@biblabel{\@arabic\c@enumiv}}% + {\settowidth\labelwidth{\@biblabel{#1}}% + \leftmargin\labelwidth + \setlength\labelsep{8\p@} + \advance\leftmargin\labelsep + \usecounter{enumiv}% + \let\p@enumiv\@empty + \renewcommand\theenumiv{\@arabic\c@enumiv}}% + \sloppy + \clubpenalty4000 + \@clubpenalty \clubpenalty + \widowpenalty4000% + \sfcode`\.\@m} + {\def\@noitemerr + {\@latex@warning{Empty `thebibliography' environment}}% + \endlist} +% +\newcommand\newblock{\hskip .11em\@plus.33em\@minus.07em} +% +\def\@citex[#1]#2{% + \let\@citea\@empty + \@cite{\@for\@citeb:=#2\do + {\@citea\def\@citea{,\penalty\@m\hskip.1pt}% + \edef\@citeb{\expandafter\@firstofone\@citeb}% + \if@filesw\immediate\write\@auxout{\string\citation{\@citeb}}\fi + \@ifundefined{b@\@citeb}{\mbox{\reset@font\bfseries ?}% + \G@refundefinedtrue + \@latex@warning + {Citation `\@citeb' on page \thepage \space undefined}}% + {\hbox{\csname b@\@citeb\endcsname}}}}{#1}} + +%****************************** FRONTMATTER * +% +\newtoks\t@glob@notes +\newtoks\t@loc@notes +\newcount\note@cnt +\newcounter{author} +\newcount\n@author +\def\n@author@{} +\newcounter{address} +% +\newcount\sv@hyphenpenalty +% +\newcount\prev@elem \prev@elem=0 +\newcount\cur@elem \cur@elem=0 +\chardef\e@pretitle=1 +\chardef\e@title=1 +\chardef\e@subtitle=1 +\chardef\e@author=2 +\chardef\e@address=3 +% +\newif\if@newelem +\newif\if@firstauthor +\newif\if@preface +\newif\if@hasabstract +\newif\if@haskeywords +% +\newbox\fm@box +\newdimen\fm@size +\newbox\t@abstract +\newbox\t@keywords +% +\def\add@tok#1#2{\global#1\expandafter{\the#1#2}} +\def\add@xtok#1#2{\begingroup + \no@harm + \xdef\@act{\global\noexpand#1{\the#1#2}}\@act +\endgroup} +% +\def\tailthanksref[#1]#2{\noexpand\pthanksref{#1}} +\def\pthanksref#1{\global\advance\note@cnt\@ne\ifnum\note@cnt>\@ne +\global\t@loc@notes\expandafter{\the\t@loc@notes\note@sep}\fi +\global\t@loc@notes\expandafter{\the\t@loc@notes#1}} +% +\def\beg@elem{\global\t@loc@notes={}\global\note@cnt\z@} +\def\@xnamedef#1{\expandafter\xdef\csname #1\endcsname} +\def\no@harm{% + \let\\=\relax \let\rm\relax + \let\ss=\relax \let\ae=\relax \let\oe=\relax + \let\AE=\relax \let\OE=\relax + \let\o=\relax \let\O=\relax + \let\i=\relax \let\j=\relax + \let\aa=\relax \let\AA=\relax + \let\l=\relax \let\L=\relax + \let\d=\relax \let\b=\relax \let\c=\relax + \let\bar=\relax + \def\protect{\noexpand\protect\noexpand}} +% +\def\proc@elem#1#2{\begingroup + \no@harm + \def\thanks##1##{\@gobble}% + \def\thanksref##1##{\@gobble}% + \@xnamedef{@#1}{#2}% + \endgroup + \prev@elem=\cur@elem + \cur@elem=\csname e@#1\endcsname + \expandafter\elem@nothanksref#2\thanksref\relax% + \expandafter\elem@nothanks#2\thanks\relax} +% +\def\elem@nothanksref#1\thanksref{\futurelet\@peektok\elem@thanksref} +\def\elem@thanksref{\ifx\@peektok\relax + \else \expandafter\elem@morethanksref \fi} +\def\elem@morethanksref[#1]#2{\add@thanks{#1}\elem@nothanksref} +% +\def\elem@nothanks#1\thanks{\futurelet\@peektok\elem@thanks} +\def\elem@thanks{\ifx\@peektok\relax + \else \ifx\@peektok[ \expandafter\expandafter\expandafter\elem@morethankse + \else \expandafter\expandafter\expandafter\elem@morethanks \fi\fi} +% +\def\elem@morethankse[#1]#2{\thanks@optarg[#1]{#2}\add@thanks{#1}\elem@nothanks} +\def\elem@morethanks#1{\thanks@optarg[]{#1}\add@thanks{}\elem@nothanks} +% +\def\add@thanks#1{% + \global\advance\note@cnt\@ne + \ifnum\note@cnt>\@ne \add@xtok\t@loc@notes{\note@sep}\fi + \ifx.#1.\add@xtok\t@loc@notes{\thefootnote}\else + \add@xtok\t@loc@notes{#1}\fi% +} +\def\add@addressref#1{% + \global\advance\note@cnt\@ne + \ifnum\note@cnt>\@ne \add@xtok\t@loc@notes{\note@sep}\fi + \add@tok\t@loc@notes{\ref{#1}}% +} +\def\note@sep{,} +% +\def\thanks@optarg[#1]#2{% + \ifx.#1.\add@tok\t@glob@notes{\footnotetext}% + \else\add@tok\t@glob@notes{\freefootnotetext}\fi% + \refstepcounter{footnote}% + \ifx.#1.\add@xtok\t@glob@notes{[\the\c@footnote]}% + \else\add@xtok\t@glob@notes{[#1]}\fi% + \add@tok\t@glob@notes{{#2}}% + \ignorespaces}% +% +% FRONTMATTER +% +\def\artty#1{} +% +\newdimen\a@title@skip \a@title@skip=12\p@ +\newskip\b@section@skip \b@section@skip=12\p@ plus6\p@ minus6\p@% +\newskip\b@pretitle@skip \b@pretitle@skip=6\p@ +% +\def\frontmatter{% + \let\@corresp@note\relax + \global\t@glob@notes={}\global\c@author\z@ + \global\c@address\z@ + \global\n@author=0\n@author@\relax + \global\advance\n@author\m@ne + \global\@firstauthortrue + \global\@hasabstractfalse + \global\@prefacefalse + \parindent\z@ + \open@fm \ignorespaces} +% +\def\preface{\@prefacetrue} +% +% ENDFRONTMATTER +% +\def\endfrontmatter{% + \global\n@author=\c@author \@writecount + \global\@topnum\z@ + \ifx\@firstpage\@lastpage + \gdef\@pagerange{\@firstpage} + \else + \gdef\@pagerange{\@firstpage--\@lastpage} + \fi +% \thispagestyle{copyright}% + \if@twocolumn\else\output@glob@notes\fi + \if@preface + \@hasabstractfalse + \fi + \if@hasabstract + \normal@text + \vskip 18\p@ + \centering + \leavevmode\box\t@abstract\par + \fi + \if@haskeywords + \normal@text + \if@hasabstract \vskip6pt\else\vskip18pt\fi + \centering + \leavevmode\box\t@keywords\par + \fi + \close@fm + \if@twocolumn\output@glob@notes\fi + \markboth{\@runauthor\@runtitle}{\@runauthor\@runtitle}% + \global\@prefacefalse + \global\leftskip\z@ + \global\@rightskip\z@ + \global\rightskip\@rightskip +% \global\c@footnote=0 + \let\title\relax \let\author\relax + \let\address\relax + \let\frontmatter\relax \let\endfrontmatter\relax + \let\@maketitle\relax \let\@@maketitle\relax + \normal@text} +% +% Dvieju koloneliu zurnale per visa lapo ploti eina +% tik pretitle, title ir subtitle. Tam ivedame komanda +% \maketitle, kuri uzdaro box'a + + \def\two@c@maketitle{% + \global\let\close@fm\relax% + \vskip\b@section@skip% + \par \egroup + \emergencystretch=1pc \twocolumn[\unvbox\fm@box]} +% +\if@restonecol + \let\maketitle\relax +\else + \let\maketitle\two@c@maketitle +\fi +% + +% +\newdimen\t@xtheight +\def\init@settings{ +\splittopskip=\topskip \splitmaxdepth=\maxdepth +\t@xtheight\textheight \advance\t@xtheight-\splittopskip} +% +\def\open@fm{ + \global\setbox\fm@box=\vbox\bgroup + \hsize=\textwidth + \centering + \sv@hyphenpenalty\hyphenpenalty + \hyphenpenalty\@M} +% + +\def\close@fm{% + \vskip\b@section@skip% + \par \egroup + \if@twocolumn\else% + \fm@size=\dp\fm@box \advance\fm@size by \ht\fm@box + \@whiledim\fm@size>\t@xtheight \do{% + \global\setbox\@tempboxa=\vsplit\fm@box to \t@xtheight + \unvbox\@tempboxa \newpage + \fm@size=\dp\fm@box \advance\fm@size by \ht\fm@box} + \fi% + \if@twocolumn + \emergencystretch=1pc \twocolumn[\unvbox\fm@box] + \else + \unvbox\fm@box + \fi} +% +\def\output@glob@notes{\bgroup + \the\t@glob@notes + \egroup} +% +\def\justify@off{\let\\=\@normalcr + \leftskip\z@ \@rightskip\@flushglue \rightskip\@rightskip} +\def\justify@on{\let\\=\@normalcr + \parfillskip\@flushglue% + \leftskip\z@ \@rightskip\z@ \rightskip\@rightskip} +% +\def\normal@text{\global\let\\=\@normalcr + \global\leftskip\z@ \global\@rightskip\z@ \global\rightskip\@rightskip + \global\parfillskip\@flushglue} +% +\def\@writecount{\write\@mainaux{\string\global + \string\@namedef{n@author@}{\the\n@author}}% +} +% +% TITLE +\def\pretitle#1{% +\vspace*{\b@pretitle@skip}\pretitle@size#1\par\vskip6\p@\hrule +\vskip12\p@} +% +\def\title#1{% + \beg@elem + \title@note@fmt + \add@tok\t@glob@notes + {\title@note@fmt}% + \proc@elem{title}{#1}% + \def\title@notes{\the\t@loc@notes}% + \title@fmt{\@title}{\title@notes}% + \ignorespaces} +% +\newdimen\@@topskip \@@topskip=24\p@ +% +\def\title@fmt#1#2{% + \vspace*{\@@topskip} + {\title@size #1\hbox{$^{#2}$}\par}% + \vskip\a@title@skip% + } + +% +\def\subtitle#1{% + \beg@elem + \proc@elem{subtitle}{#1}% + \def\title@notes{\the\t@loc@notes}% + \subtitle@fmt{\@subtitle}{\title@notes}% + \ignorespaces} +% +% +\def\subtitle@fmt#1#2{% + {\subtitle@size #1\,\hbox{$^{\mathrm{#2}}$}\par}% + \vskip\a@title@skip% + } +% +\def\title@note@fmt{\def\thefootnote{\arabic{footnote}}} +% +% AUTHOR +% +\newdimen\b@author@skip +\b@author@skip 12\p@ +% +\def\author{\@ifnextchar[{\author@optarg}{\author@optarg[]}} +% +\def\author@optarg[#1]#2{\stepcounter{author}% + \beg@elem\def\degs##1{##1}\def\fnms##1{##1}\def\inits##1{##1}% + \def\snm##1{\MakeUppercase{##1}}\def\roles##1{##1}% + \if@firstauthor% + \first@author \global\@firstauthorfalse \fi% + \@for\@tempa:=#1\do{\expandafter\add@addressref\expandafter{\@tempa}}% + \proc@elem{author}{#2}% + \author@fmt{\the\c@author}{\the\t@loc@notes}{\@author}}% +% +%\newbox\author@box + +% +\def\author@fmt#1#2#3{\@newelemtrue + \ifnum\prev@elem=\e@author \global\@newelemfalse \fi + \if@newelem \author@fmt@init \fi + \edef\@tempb{#2}\ifx\@tempb\@empty + \hbox{#3}\else + \hbox{#3\,$^{\mathrm{#2}}$}% + \fi} +% +\def\first@author{\author@note@fmt% + \add@tok\t@glob@notes% + {\author@note@fmt}}% +% +\def\author@fmt@init{% + \par + \vskip \b@author@skip + \authors@size\centering + \leavevmode} +% +\def\and{\unskip~and~} +% +\def\author@note@fmt{% + \def\thefootnote{\arabic{footnote}}} +% +\def\sxarabic#1{% + \expandafter\ifcase\value{#1} \or *\or **\or *** \or **** \or *****\fi +} +% +% ADDRESS +% +\def\email#1{{e-mail:\ #1}} +% +\def\address{\@ifstar{\address@star}% + {\@ifnextchar[{\address@optarg}{\address@noptarg}}} +% +\def\address@optarg[#1]#2{\refstepcounter{address}% + \beg@elem + \proc@elem{address}{#2}% + \address@fmt{\the\c@address}{\the\t@loc@notes}{\@address}\label{#1}% + \ignorespaces} +% +\def\address@noptarg#1{\refstepcounter{address}% + \beg@elem + \proc@elem{address}{#1}% + \address@fmt{\z@}{\the\t@loc@notes}{\@address}% + \ignorespaces} +% +\def\address@star#1{% + \beg@elem + \proc@elem{address}{#1}% + \address@fmt{\m@ne}{\the\t@loc@notes}{\@address}% + \ignorespaces} +% +\def\theaddress{\alph{address}} +% +\def\address@fmt#1#2#3{\@newelemtrue + \ifnum\prev@elem=\e@address \@newelemfalse \fi + \if@newelem \address@fmt@init \fi + \bgroup\parskip\z@\noindent\centering \address@size + \ifnum#1=\z@ + #3\,$^{\mathrm{#2}}$\space% + \else + \ifnum#1=\m@ne + $^{\phantom{\mathrm{\theaddress}}\,}$#3\,$^{\mathrm{#2}}$% + \else + $^{\mathrm{\theaddress}\,}$#3\,$^{\mathrm{#2}}$% + \fi + \fi + \par\egroup} +% +\def\address@fmt@init{% + \def\@currentlabel{\theaddress} + \par + \vskip 2\p@ plus 1\p@ minus 1\p@} +% +% ABSTRACT +% +\def\abstract{\@ifnextchar[{\@abstract}{\@abstract[]}} +\def\@abstract[#1]{% + \global\@hasabstracttrue + \hyphenpenalty\sv@hyphenpenalty + \global\setbox\t@abstract=\vbox\bgroup + \linewidth\abstract@width + \hsize\abstract@width + \justify@on\abstract@size\parindent 1em + \abstract@indent\textbf{\abstractname}\ignorespaces} +\def\endabstract{\par\egroup} +% +% KEYWORDS +\def\sep{\unskip, } +\global\@haskeywordsfalse +\newdimen\dp@t@keywords +\def\keyword{\global\@haskeywordstrue% + \global\setbox\t@keywords=\vbox\bgroup% + \hsize\abstract@width% + \justify@on\abstract@size\parindent 0\p@ + \textbf{\keywordsname}\ignorespaces + } +\def\endkeyword{\par\egroup\global\dp@t@keywords=\dp\t@keywords} +\def\keywords#1{\begin{keyword}#1\end{keyword}} +% +% +% +% Running title +\def\runningtitle#1{\gdef\@runtitle{#1}} \def\@runtitle{} +\def\runningauthor#1{{\def\etal{et al.}\gdef\@runauthor{#1\@runsep}}} \def\@runauthor{} +\def\runningsep#1{\gdef\@runsep{#1}} +\def\@runsep{\ /\ } +% +\def\journal#1{\gdef\@journal{#1}} \@ifundefined{@journal}{\gdef\@journal{Journal not defined}}{} +\def\volume#1{\gdef\@volume{#1}} \def\@volume{0} +\def\issue#1{\gdef\@issue{#1}} \def\@issue{0} +% +% +\newcount\@pubyear +\newcount\@copyear +\@pubyear=\number\year +\@copyear\@pubyear +\advance\@copyear-2000 + +\def\pubyear#1{\global\@pubyear#1 + \global\@copyear\@pubyear + \global\advance\@copyear-2000% + \ignorespaces} +% +\def\the@copyear{\ifnum\@copyear<10 0\fi\the\@copyear} + +% +\pubyear{2003} +% +\def\firstpage#1{\def\@tempa{#1}\ifx\@tempa\@empty\else + \gdef\@firstpage{#1}\gdef\@lastpage{#1}% + \global\c@page=#1 \ignorespaces\fi + } +\def\@firstpage{1} +\def\lastpage#1{\def\@tempa{#1}\ifx\@tempa\@empty\else + \gdef\@lastpage{#1}\ignorespaces\fi} +\def\@lastpage{0} +\def\@pagerange{1--0} + +% Write the last page: +\def\write@last@page{% +\write\@mainaux{\string\global\string\@namedef{@lastpage}{\the\c@page}}} + +\AtEndDocument{\write@last@page} +% SGML +\long\def\convertas#1#2{#2} +\def\sday#1{#1}\def\smonth#1{#1}\def\syear#1{#1} +\def\aid#1{\gdef\@aid{#1}} +% +\def\SSDI#1{\gdef\@ssdi{#1}} \def\@ssdi{000000-00} +\def\issn#1{\gdef\@issn{#1}} +\def\price#1{\gdef\@price{#1}} +% +\def\date#1{\gdef\@date{#1}} \def\@date{\today} +% + +\def\empty@data{\@nil} +% + +%***************** BACKMATTER +\newcommand\backmatter{\goodbreak} + +%**************** INICIALIZATION +\newcommand\refname{References} +\newcommand\figurename{Figure} +\newcommand\tablename{Table} +\newcommand\algorithmname{Algorithm} +\newcommand\appendixname{Appendix} +\newcommand\abstractname{Abstract. } +\newcommand\keywordsname{Keywords. } +\def\acknowledgementsname{Acknowledgements} +% +\def\copyright@sign{\copyright} +% +% DIMENSIONS +\def\@articletypesize{\large} +\def\pretitle@size{\LARGE} +\def\title@size{\huge} +\def\subtitle@size{\large\itshape} +\def\authors@size{\normalsize} +\def\abstract@size{\footnotesize} +\def\abstract@width{22pc} +\def\abstract@indent{\noindent} +\def\address@size{\normalsize\itshape} +% Block preparation of contents: +\def\addcontentsline#1#2#3{} +\long\def\addtocontents#1#2{} +% +\newcommand\today{} +\edef\today{\ifcase\month\or + January\or February\or March\or April\or May\or June\or + July\or August\or September\or October\or November\or December\fi + \space\number\day, \number\year} +% +\@twosidetrue +\pagenumbering{arabic} +\frenchspacing +\init@settings + +\if@twocolumn\setlength\tablewidth{\columnwidth} +\else\setlength\tablewidth{\textwidth}\fi +%\pagestyle{headings} +\pagestyle{empty} + +\endinput +%% +%% End of file `IOS-Book-Article.cls'. diff --git a/doc/MMVR2014_obsolete/IOSProceedings/conclusion.tex b/doc/MMVR2014_obsolete/IOSProceedings/conclusion.tex new file mode 100644 index 0000000..771cca4 --- /dev/null +++ b/doc/MMVR2014_obsolete/IOSProceedings/conclusion.tex @@ -0,0 +1,10 @@ +\section{Conclusion} +In this paper we presented a composite liver model based on volume and membrane elements. +When compared to experimental data provided in the literature we found similar results, but with faster computation times than standard computationally expensive model based entirely on volume elements. + +%Presently we are focusing on the validation of the model also in context of global deformations of the organ where we believe the capsule plays an essential role as well. +%This task is however complicated due to the limited number of experimental studies dealing with both the parenchyma and the capsule. + + +%\section*{Acknowledgments} +%The authors would like to thank the French Research Agency (ANR) for funding this study through the ACouStiC project. diff --git a/doc/MMVR2014_obsolete/IOSProceedings/figures/aspirationScreenshot.jpg b/doc/MMVR2014_obsolete/IOSProceedings/figures/aspirationScreenshot.jpg new file mode 100644 index 0000000..2127d07 Binary files /dev/null and b/doc/MMVR2014_obsolete/IOSProceedings/figures/aspirationScreenshot.jpg differ diff --git a/doc/MMVR2014_obsolete/IOSProceedings/figures/displacementEvolution.pdf b/doc/MMVR2014_obsolete/IOSProceedings/figures/displacementEvolution.pdf new file mode 100644 index 0000000..4ce2fb0 Binary files /dev/null and b/doc/MMVR2014_obsolete/IOSProceedings/figures/displacementEvolution.pdf differ diff --git a/doc/MMVR2014_obsolete/IOSProceedings/figures/displacementProfile.pdf b/doc/MMVR2014_obsolete/IOSProceedings/figures/displacementProfile.pdf new file mode 100644 index 0000000..25823d8 Binary files /dev/null and b/doc/MMVR2014_obsolete/IOSProceedings/figures/displacementProfile.pdf differ diff --git a/doc/MMVR2014_obsolete/IOSProceedings/figures/modelUnderGravity.png b/doc/MMVR2014_obsolete/IOSProceedings/figures/modelUnderGravity.png new file mode 100644 index 0000000..2354f4f Binary files /dev/null and b/doc/MMVR2014_obsolete/IOSProceedings/figures/modelUnderGravity.png differ diff --git a/doc/MMVR2014_obsolete/IOSProceedings/intro.tex b/doc/MMVR2014_obsolete/IOSProceedings/intro.tex new file mode 100644 index 0000000..af2bc32 --- /dev/null +++ b/doc/MMVR2014_obsolete/IOSProceedings/intro.tex @@ -0,0 +1,59 @@ +\section*{Introduction}% +According to the statistics, nearly 100,000 European citizens die of cirrhosis or liver cancer each year. +Although new methods +%such as radio-frequency- and cryo-ablation known +in the interventional radiology +seem to be promising, surgery remains the option that offers the foremost success rate against these pathologies. +Nevertheless, surgery is not always performed due to several limitations, in particular the determination +of accurate eligibility criteria for the patient. +%In this context, the pre-operational planning becomes a crucial task having a significant impact on the treatment. + +Computer-aided physics-based medical simulation has proven to be an extremely useful technique in the area of medical training. +Whereas generic models are usually required in training simulators, accurate patient-specific modeling +becomes necessary as soon as computer simulation is to be employed in the pre-operative planning. +%At the same time, +%interactivity of such models remains an important aspect, requiring real-time simulation which is often difficult to +%achieve given the complexity of soft tissues. +When simulating the behavior of human liver, the task of real-time accurate modeling is challenging, mainly because of the complex structure +of this organ composed of three main constituents: \emph{parenchyma}, \emph{vascular networks} and \emph{Glisson's capsule}. +The parenchyma has certainly been the most studied component of the liver; actually researchers agree on hyperelastic +properties of the tissue, for which the mechanical parameters have been reported for example in~\cite{Kerdok2006}.%,Gao2009}. +Moreover, several methods have been proposed to model the hyperelastic behaviour at real-time rates, such as multiplicative Jacobian decomposition +introduced in~\cite{Marchesseau2010}. +% +%\TG{The following paragraph is optional. Unnecessary but adds to the global context} +The mechanical importance of the vascular structures in liver is studied in~\cite{Peterlik2012}. It shows that the +influence of vessels on the mechanical behaviour of the organ is significant. %, mainly if large deformations occur. +%Since a detailed modeling of the vessels would be extremely costly (mainly because of the small thickness of the vessel wall, +%the authors propose a composite model allowing for real-time simulation of entire liver with vascularization. +Since a detailed modeling of the vessels would be extremely costly (mainly because of the small thickness of the vessel wall), +the authors propose a composite model allowing for real-time simulation. + +Rather a small number of studies have been conducted dealing with the third liver constituent, the Glisson's capsule. +Quantitative results of experiments on a porcine liver have been published in~\cite{Umale2011}; the measurements indicate that although being very +thin (10--20$\mu m$), the capsule shows to be stiff in tensile tests: the Young's modulus of the capsule reported to be $8.22\pm3.42$\,MPa +exceeds the values for the parenchyma by three orders of magnitude. +This suggests that the mechanical influence of the membrane on the liver behavior is not negligible. +% +In~\cite{Hollenstein2006}, a local influence of the capsule has been measured using a special aspiration device. The study was then repeated +in vivo on human patients during the operation, confirming the mechanical importance of the membrane~\cite{Ahn2010,Nava2008}. +%To our best knowledge, no attempt has been made to demonstrate the role of the Glisson's capsule on the global behaviour of +%the liver, mainly if the organ undergoes large deformations which is often the case during the surgery. + +In this paper we present preliminary results of our work on the complete liver model. +We present a real-time composite model accounting for parenchyma and Glisson's capsule, compatible with previously proposed vascularized model~\cite{Peterlik2012}. +We also show that the capsule has a significant impact on the mechanical response of the organ. +%The model is based on two different finite element representations for each constituent coupled together. +%The main contribution of the paper is twofold: first, we present a real-time model of the liver, including +%the parenchyma, vascularization and Glisson's capsule. The model is based on three different finite element representations for each constituent, +%linked together via mechanical coupling. +%We show that the model mimics the \emph{local} experiments described in~\cite{Hollenstein2006}. + +%Second, we use the complete model of the liver to demonstrate the \emph{global} influence of the Glisson's +%capsule via simulation: using a specific model of a porcine liver built from CT contrast-enhanced data, we show that there is a significant +%difference in the response of the model with and without the capsule in the case when the liver undergoes large deformations. + +%The paper is organized as follows: first we describe the proposed model of liver with capsule. +%Second, we validate our model in context of local deformations by reproducing the aspiration test described in~\cite{Hollenstein2006}. We conclude by summarizing future steps towards the complete liver model. +%Finally, we demonstrate that in spite of its small thickness, the Glisson's +%capsule has a global influence on the liver undergoing large deformations. diff --git a/doc/MMVR2014_obsolete/IOSProceedings/method.tex b/doc/MMVR2014_obsolete/IOSProceedings/method.tex new file mode 100644 index 0000000..8bb1c4b --- /dev/null +++ b/doc/MMVR2014_obsolete/IOSProceedings/method.tex @@ -0,0 +1,227 @@ +\section{Methods \& Materials} +\label{sec:methodology} + +% In this section we describe the construction of a composite model based on two components: +% tetrahedral FE model of the parenchyma and triangular membrane elements used for the capsule. + +% \subsection{Biomechanical Models and Coupling} +%It is known that the parenchyma exhibits non-linear viscoelastic behavior \cite{Marchesseau2010}. +While time-dependent phenomena related to viscosity are not considered in this work, we employ corotational finite elements to model the parenchyma +relying on the geometrical method proposed in~\cite{Nesme2005}. +%although it relies on linear stress-strain relationship, large displacements including rotations are modeled correctly. +Denoting $p$ a generic P1 tetrahedral element of the parenchyma, the 12$\times$12 element stiffness matrix is then computed as +\begin{equation} +\Mat{K}_p = \int_{V_p} \Mat{B}_p^\top \Mat{D}_p \Mat{B}_p dV +\end{equation} +where $\Mat{B}_p$ is the strain-displacement matrix and $\Mat{D}_p$ is the stress-strain matrix. + +While the thickness of a vessel wall does not exceed 250$\mu$m,%~\cite{Forauer2003}, +stiffness of 0.62$\pm$0.41\,MPa has been reported +in~\cite{Umale2011}, being quite important when compared to the parenchyma. Due to this property, vessels influence +the mechanical response of the tissue as illustrated in~\cite{Peterlik2012}. Since the vessel wall cannot be modeled +with tetrahedral elements if the real-time aspect of the simulation is to be preserved, +serially-linked beam elements based on Tymoshenko formulation are employed, taking into account the hollow +structure of the vessels via moments of inertia. +%to model the vessels which allows for correct simulation of large deformations as it is based on the corotational framework +%similar to the one used for the parenchyma. +For an arbitrary beam element $v$ representing a segment of a vessel, the corresponding local stiffness matrix $\Mat{K}_v$ is computed as shown in~\cite{Duriez2006}. + +% Briefly, the motion of each element $e$ is decomposed into rigid rotation $\Mat{R}^e$ and local deformation in each step of the simulation. +% The rotations are then used to update each local element stiffness matrix as $\Mat{R}^e\Mat{K}_0{\Mat{R}^e}^{\top}$ +% whereas the deformations are used to compute the linear strain in the local corotational frame. +% There are several ways of computing the corotational frame for elements; we rely on +% the geometrical method proposed in \cite{Nesme2005}. + +% \subsection{Parenchyma} %{{{ + +% It is known that the parenchyma exhibits non-linear viscoelastic behaviour \cite{Marchesseau2010}. +% However, as we are mainly interested in the static equilibrium, we do not model the time-dependent +% phenomena related to viscosity. +% +% % %However, we employ simpler corotational model as we are not so much +% % %interested in time-dependent behaviour but rather in static equilibrium +% % %under certain conditions. +% % %We also rely on the vascularized model of the parenchyma proposed by +% % %Peterl\'{i}k et al. \cite{Peterlik2012}. +% +% The parenchyma is modeled using corotational finite elements~\cite{Felippa2005}. +% Although it relies on linear stress-strain relationship, large displacements including rotations are modeled correctly. +% While in the full non-linear formulation the stiffness matrix relates the forces $\Vec{f}$ and +% displacements $\Vec{u}$ as $\Vec{f} = K(\Vec{u})$, the corotational model +% requires the stiffness matrix $\Mat{K}_0$ of the system to be computed only once before the simulation begins. +% Then, in each step, the motion of each element $e$ is decomposed into rigid rotation $\Mat{R}^e$ and local deformation. +% The rotations are then used to update each local element stiffness matrix as $\Mat{R}^e\Mat{K}_0{\Mat{R}^e}^{\top}$ +% whereas the deformations are used to compute the linear strain in the local corotational frame. +% There are several ways of computing the corotational frame for elements; we rely on +% the geometrical method proposed in \cite{Nesme2005}. +% % % NOTE: This description of corotational method is very simplified and could be extended. +% % +% % %The model of the vascularization is based on linear beams +% % %with local frames of reference~\cite{Duriez2006}; in many aspects it's similar to the +% % %corotational formulation described above. As such the model also handles geometric +% % %non-linearities in the deformation. Through a specification of cross section and moments of inertia, +% % %the model can account for the specific properties of the blood vessels. +% % +% % %The beam-based model of vessels is mechanically coupled to the parenchyma as described in~\cite{Peterlik2012}. +% % %The coupling assumes that there is no relative motion between the vessels and the surrounding parenchyma. +% % %During the simulation, the nodes of linked beams are first displaced and rotated according to the actual motion of associated tetrahedra. +% % %As the deformation of beams results in mechanical response represented by forces and torques, these are propagated back to +% % %the tetrahedral FE model. +% % +% % %}}} + +% \subsection{Glisson's Capsule} %{{{ +% \label{ss:capsuleModel} +The thickness of the Glisson's capsule is also very small: the values in range of 10-20 $\mu$m have been reported in~\cite{Umale2011}. +It is not possible to model such thin structure with classical tetrahedral elements: +%if the real-time aspect of the simulation is to be preserved. +%Furthermore, modeling both the tissue and the capsule +the model would require an extremely +dense mesh and thus would significantly violate the speed requirements imposed for medical simulators. +Instead, modeling the capsule with two-dimensional elements that abstract from the +thickness in the third dimension seems +to be a natural choice. In the elasticity theory, this functionality is usually provided by membrane elements. +%Based on the observation of its behaviour, we also +%assume negligible bending forces and propose a model based on membrane +%elements. +To maintain simplicity of the composite model we choose simple triangular elements with constant strain (CST). + +For a triangular capsule element $c$, the 9$\times$9 stiffness matrix $\Mat{K}_m$ is given as +\begin{equation} + \Mat{K}_c = \int_{S_c} \Mat{B}_c^\top \Mat{D}_c \Mat{B}_c dS +\end{equation} +where $\Mat{B}_c$ and $\Mat{D}_c$ are strain-displacement and strain-stress matrices, respectively. + +The complete model of the liver takes into account all three components described above by combining the contributions +of parenchyma, vessels and capsule. The coupling between the vessel elements (beams) and parenchyma elements (tetrahedra) +is described in detail in~\cite{Peterlik2012}. Briefly, each vessel node (having 6 degrees of freedom to account for torques in vessels) +is coupled with a tetrahedra in which it is located via barycentric coordinates. This coupling remains constant during +the simulation and can be described via matrix $\Mat{J}_{v\rightarrow p}$ which is the Jacobian matrix of the coupling. + +The coupling between the parenchyma and capsule is straightforward, since the triangles used as the +domain for the CST formulations are the surface faces of the volume mesh. Therefore, for given triangle +with vertices $v_1$, $v_2$ and $v_3$, the corresponding tetrahedron (sharing the same three vertices) is found and +a 9$\times$12 permutation matrix $\Mat{P}_{c\rightarrow p}$ mapping the triangle vertices to tetrahedra vertices is computed. + +Without loss of generality, let us suppose a tetrahedral element $e$ +which receives a mechanical contribution from both the capsule and vessels. The composite element stiffness matrix $\Mat{K}_e$ +is then computed as: +\begin{equation} +\Mat{K}_e = \Mat{K}_p + \Mat{J}_{v\rightarrow p}^\top \Mat{K}_v \Mat{J}_{v\rightarrow p} + \Mat{P}_{c\rightarrow p}^\top \Mat{K}_c \Mat{P}_{c\rightarrow p}. +\end{equation} + + +% +% \begin{eqnarray} +% \Mat{K}^m & = & \int_V \Mat{B}^T \Mat{E} \Mat{B} dV \label{mem1} \\ +% & = & h \int_A \Mat{B}^T \Mat{E} \Mat{B} dA \label{mem2} \\ +% & = & h A \Mat{B}^T \Mat{E} \Mat{B} \label{mem3} +% \end{eqnarray} +% % +% where $\Mat{B}$ is the strain-displacement matrix, $\Mat{E}$ the material +% matrix, $h$ is the thickness and $A$ area of the element. In the previous +% \eqref{mem2} follows from the fact that we assume constant thickness of the +% element and \eqref{mem3} follows from the fact that the strain-displacement +% matrix is constant in our case. The strain-displacement matrix for the CST +% element can be expressed as: +% % +% \begin{equation} +% \Mat{B} = \frac{1}{2A} \begin{bmatrix} +% y_{23} & 0 & y_{31} & 0 & y_{12} & 0 \\ +% 0 & x_{32} & 0 & x_{13} & 0 & x_{21} \\ +% x_{32} & y_{23} & x_{13} & y_{31} & x_{21} & y_{12} +% \end{bmatrix} +% \end{equation} +% % +% The values $x_{ij} = x_i - x_j$ and $y_{ij} = y_i - y_j$ are computed from +% the $x$ or $y$ coordinates of the nodes $i,j$ of the triangular element. +% The reader can refer to the respective literature~\cite{Felippa2003} for more thorough +% description. +% +% Similarly as with model of parenchyma we use linear elastic material and employ +% the corotational formulation for the CST elements. + +%}}} + +%\subsection{Mechanical Coupling between Parenchyma and Capsule} %{{{ +% The literature reports high cohesion between capsule and parenchyma. +% Based on this property we assume there is no relative motion of the capsule \wrt\ the parenchyma. +% Although an arbitrary surface mesh could be used to model the capsule, we exploit +% the fact that the parenchyma is modeled by tetrahedral elements having +% triangular faces. Thus, as the boundary of the volumetric mesh is already +% triangulated, we simply employ the triangles on the mesh surface to model the capsule. +% +% Using directly the boundary of the tetrahedral mesh does not only solve the +% problem of building the surface mesh, but has one more advantage: the nodes +% of the triangular mesh coincide with the nodes of the tetrahedral mesh, so no projection of one mesh onto the other is needed. +% and the stiffness matrices for capsule and parenchyma are then easily assembled together by adding the mechanical contribution +% of a triangle to the corresponding tetrahedron. +% % and solved as one system. +% % +% %\CD{The following may appear as "trivial"... maybe we can remove this part at the end if we need space} +% Without the loss of generality we can assume the tetrahedron consists of +% nodes $p_1, p_2, p_3$ and $p_4$ and the boundary triangle has nodes $p_1, p_2$ +% and $p_3$. We can reorder the degrees of freedom so that the stiffness +% matrix $\Mat{K}^t$ for the tetrahedron can be written as: +% % +% \begin{equation} +% \Mat{K}^t = \left[\begin{array}{c|c} +% \Mat{K}^t_{1-3,1-3} & \Mat{K}^t_{1-3,4} \\ +% \hline +% \Mat{K}^t_{4,1-3} & \Mat{K}^t_{4,4} \\. +% \end{array}\right] +% \end{equation} +% % +% Hence, the assembled stiffness matrix for the element is +% % +% \begin{equation} +% \Mat{K} = \left[\begin{array}{c|c} +% \Mat{K}^t_{1-3,1-3} & \Mat{K}^t_{1-3,4} \\ +% \hline +% \Mat{K}^t_{4,1-3} & \Mat{K}^t_{4,4} \\ +% \end{array}\right] +% + +% \left[\begin{array}{c|c} +% \Mat{K}^m & 0 \\ +% \hline +% 0 & 0 \\ +% \end{array}\right] +% \end{equation} +% % +% where $\Mat{K}^m$ is the stiffness matrix of the triangular membrane. +% +% The resulting system of linear equations is solved by direct solver based on Cholesky decomposition. + +%Alternatively, one can use a mechanical coupling similar to the one used in +%\cite{Peterlik2012} to be able to use an arbitrary surface mesh. Nevertheless, +%for conforming triangular mesh both methods lead to the same solution. + +%}}} + +%}}} + +% \subsection{Simulation} %{{{ +% The model has been implemented SOFA\footnote{www.sofa-framework.org} and a set of +% numerical simulations was performed. +%In this section we provide comparison of local deformations with the +%results reported in literature to validate the method. +%Second, to show that in spite of its very small thickness the membrane cannot be +%neglected even in the context of global deformations and its overall +%stiffness plays an important role, the model of +%the complete liver was subjected to global deformations. + +% During the contact with an instrument such as probe, needle, scalpel and others, +% specific deformations take place in the vicinity of +% the instrument. This type of deformation may not necessarily induce the +% deformation of the object as a whole and therefore can be considered as +% local. Correct material properties are not only important to quantify the +% displacement, but also play an important role in capturing the correct area of +% the deformation or its profile near the instrument. + +% Since the tube is in direct contact with the tissue, uni-lateral constraints with friction were chosen +% to model this interaction properly. We opted for a method based on \emph{non-linear complementarity problem} (NLCP) +% where the non-linearity is introduced due to the friction. The NLCP +% allows for solution of the Signorini's problem to avoid any interpenetration between the colliding +% objects (see~\cite{Duriez2006b} for details). Since NLCP requires explicitly the computation of compliance matrix which +% is homogeneous to the inverse of the stiffness matrix, we employed a direct solver based on LDL decomposition to +% solve the system and compute the inverse matrices. diff --git a/doc/MMVR2014_obsolete/IOSProceedings/mmvr14_peterlik.tex b/doc/MMVR2014_obsolete/IOSProceedings/mmvr14_peterlik.tex new file mode 100644 index 0000000..6314934 --- /dev/null +++ b/doc/MMVR2014_obsolete/IOSProceedings/mmvr14_peterlik.tex @@ -0,0 +1,103 @@ +\documentclass{IOS-Book-Article} + +\usepackage{mathptmx} + +%\usepackage{times} +%\normalfont +%\usepackage[T1]{fontenc} +%\usepackage[mtplusscr,mtbold]{mathtime} +% + +%\usepackage{amsmath} +%\usepackage{amssymb} +\usepackage{graphicx} +%\usepackage{subfigure} +%\usepackage{rotating} +%\usepackage{array} +%\usepackage[lined,linesnumbered]{algorithm2e}% +%\usepackage{algorithmic}% +%\usepackage{multirow} +%\usepackage{amsmath} +%\usepackage[utf8x]{inputenc} +%\usepackage[T1]{fontenc} % pour les caracteres francais dans les remarques +%\usepackage{textcomp} +%\usepackage[usenames]{color} +% +\newcommand{\Vec}[1]{\mathbf{#1}} +\newcommand{\Mat}[1]{\mathbf{#1}} + + +\begin{document} +\begin{frontmatter} % The preamble begins here. + +%\pretitle{Pretitle} +\title{Complete Real-Time Liver Model Including Glisson's Capsule,\\ + Vascularization and Parenchyma} +\runningtitle{Complete Real-Time Liver Model} +%\subtitle{Subtitle} + +\author[A]{\fnms{Igor} \snm{Peterl\'ik}}% +%\thanks{Corresponding Author: Book Production Manager, IOS Press, Nieuwe Hemweg 6B, +%1013 BG Amsterdam, The Netherlands; E-mail: +%bookproduction@iospress.nl.}}, +\author[B]{\fnms{Tom\'a\v{s}} \snm{Golembiovsk\'y}} +\author[C]{\fnms{Christian} \snm{Duriez}} +and +\author[C]{\fnms{St\'{e}phane} \snm{Cotin}} + +\runningauthor{I. Peterlik et al.} +\address[A]{Institut Hospitalo-Universitaire, Strasbourg, France} +\address[B]{Masaryk University, Czech Republic} +\address[C]{SHACRA Team, Inria, France} + +\begin{abstract} +Accurate biomechanical modeling of liver is of a paramount interest for pre-operative planning or computer-aided per-operative guidance. +However, such simulations remain a challenging task, since the organ is composed of three constituents: parenchyma, vascularization and Glisson's capsule, +each having different mechanical properties. + +In this paper we propose a complete liver model, where the parenchyma is modeled as a finite element volume, the vessels are modeled as series of beam elements, +and the corotational membrane elements based on constant-strain formulation are used for capsule. These components are coupled mechanically as shown in the paper. +We show that using this model we are able to reproduce accurately biomechanical tests, while maintaining the real-time aspect of the simulation. +\end{abstract} + +\begin{keyword} +Simulation , modeling, liver, biomechanics +\end{keyword} +\end{frontmatter} + +\thispagestyle{empty} +\pagestyle{empty} + +\input{intro}% +% +\input{method}% +% +%\addtolength{\textheight}{-1cm} +\input{results}% +% +\input{conclusion}% + +% +\bibliographystyle{plain} +\bibliography{../bibdata}% + +%\begin{thebibliography}{99} +% +%\bibitem{r1} +%\textit{Scientific Style and Format: The CBE manual for authors, +%editors and publishers}. Style Manual Committee, Council of Biology Editors. +%Sixth ed. Cambridge University Press, 1994. +% +%\bibitem{r2} +%L.U. Ante, Cem surgere: Surgite postquam sederitis, qui manducatis panem doloris, +%\textit{Omnes} \textbf{13} (1916), 114--119. +% +%\bibitem{r3} +%T.X. Confortavit, \textit{Seras}, Portarum, New York, 1995. +% +%\bibitem{r4} +%P.A. Deus, Ater hoc et filius et mater praestet nobis, +%\textit{Paterhoc} \textbf{66} (1993), 856--890. +% +%\end{thebibliography} +\end{document} diff --git a/doc/MMVR2014_obsolete/IOSProceedings/results.tex b/doc/MMVR2014_obsolete/IOSProceedings/results.tex new file mode 100644 index 0000000..b4b9b7a --- /dev/null +++ b/doc/MMVR2014_obsolete/IOSProceedings/results.tex @@ -0,0 +1,130 @@ +\section{Results} %{{{ +\begin{figure}[t] + \centering + \includegraphics[height=3.5cm]{figures/aspirationScreenshot.jpg} + \caption{\label{fig-aspiration1} The SOFA simulation scene of the aspiration test.} +\end{figure} +\subsection{Aspiration Test} +% As the first step, we evaluate the influence of the Glisson's capsule on the mechanical response of the tissue during +% the aspiration test. +In~\cite{Hollenstein2006} an \emph{aspiration test} is presented to quantify the local influence of the Glisson's on tissue behaviour. +The aspiration device consists of a tube having 1\,cm in diameter and allows to +control the pressure inside the tube. The test is performed by +attaching the tube to the tissue and measuring the tissue response. We +set up a simulation in SOFA to reproduce the experiment (see +Fig.~\ref{fig-aspiration1}): we meshed a 15$\times$15$\times$15\,mm$^3$ +cube representing the tissue resulting in 2648 tetrahedra. Then we attached a 1\,cm tube +and applied a pressure of 3\,kPa inside the tube. The contacts between the tube and tissue sample were modeled using +an approach based on non-linear complementarity problem presented in~\cite{Duriez2006b} which provides a solution for +the Signorini's problem while taking into account friction between the objects. +% objects + +According to~\cite{Hollenstein2006} the influence of the capsule is significant: modeling +only the parenchyma without considering the membrane results in overestimation of the deformation by a factor of 2 to 3. +In order to verify this observation, we performed a simulation using capsule parameters measured experimentally on +ex-vivo pig liver~\cite{Umale2011}: Young's modulus of the membrane was set to $E_c$=8.22\,MPa and thickness was +$t_c$=20\,$\mu$m. +Since the values for parenchyma elasticity reported in the literature vary significantly being usually reported between 2\,kPa to 5\,kPa, +we employed a value $E_p$=3.5\,kPa for the Young's modulus of the parenchyma. + +\begin{figure}[t] + \centering + \includegraphics[width=7cm]{figures/displacementProfile.pdf} + \caption{\label{fig-aspiration2} Displacement profile of the cube in the + aspiration test with (blue) and without (black) the capsule.} +\end{figure} + +\begin{figure} + \centering + \includegraphics[height=3.5cm]{figures/displacementEvolution.pdf} + \caption{\label{fig-aspiration3} Evolution of the displacement at the center + in time for test with (blue) and without (black) the capsule.} +\end{figure} + +In Fig.~\ref{fig-aspiration2} the profiles of cuts in the middle of the +test cube are presented showing significantly larger deformation in the model without capsule assuming that the same negative pressure was applied +on the tissue surface inside the tube. Moreover, it can be observed that the deformation without capsule is overestimated by a factor +close to 2, which is in perfect agreement with the results reported in~\cite{Hollenstein2006}. +Fig.~\ref{fig-aspiration3} presents the evolution of displacement in time at central node on the cube surface showing clear the effect of increased combined stiffness. + +Further, we employed the simulation to reproduce the displacements values obtained via simulation in~\cite{Hollenstein2006,Nava2008}. +Whereas the simulation in the referenced work was done on a mesh composed of tetrahedral elements for both the parenchyma +and the capsule, we employ the membrane CST elements. + +Since the Young's moduli of neither parenchyma ($E_p$) nor capsule ($E_c$) were specified exactly, we obtained both as follows: first, +we performed a set of simulations without the capsule for different values of $E_p$: the value that provided a good match +with reported displacements was $E_p$=30\,kPa. +Then, we fixed the thickness of the capsule to be $t$=93\,$\mu$m (reported as the average value in the paper) and +using $E_p$=30\,kPa, we ran the simulation repeatedly using the model with the capsule. In each simulation we +used different value $E_c$ of the Young's modulus for the capsule in order to minimize the displacement error w.r.t. the +reported values. The minimal value of error (not exceeding 1\%) was obtained for $E_c$=3\,MPa. This +value lies in the range of capsule elasticity coefficients reported by experimental measurements. + +% % % %Moreover, we are able to reproduce +% % % %the measurements presented in~\cite{Hollenstein2006,Nava2008} with less than 1\% error. +% % % %We do not model the time-dependent behaviour though. +% % % %In this simulation we prescribe the the internal pressure of 30\,kPa. The other +% % % %parameters of the model were obtained like this: First we fix the stiffness of +% % % %parenchyma to $E_p$=30\,kPa to match the scenerio without capsule. Then, +% % % %assuming the thickness $t$=93\,$\mu$m of the capsule (reported as average in +% % % %the paper) we run several simulations with different capsule stiffness $E_c$. +% % % %We have found the lowest error is when $E_c$=3\,MPa. All the stiffness +% % % %parameters lie within the ranges measured in the paper. +% % % +% % % %In this case the simulation was performed with the pressure of 30\,kPa and with +% % % %the following elastic parameters: $E_p$=30\,kPa for parenchyma and $E_c$=3\,MPa +% % % %and $t$=93\,$\mu$m for capsule. +% % % %All the values lie within the measurements +% % % %specified in the paper. \TG{add figure like Fig. 2?} +% % % +% % % %The influence of the capsule on local level has been published in literature +% % % %before. However, to our knowledge it's influence on global scale deformation +% % % %has not been studied yet. We believe that the capsule has non-negligible impact +% % % %also on global level. + +% In the scenario presented in this paper, we focus on local influence of the capsule. +% Nevertheless, it is possible to employ the actual model to demonstrate the global +% impact of the capsule and to further validate the accuracy of such a complete model w.r.t. experimental measures. +% Detailed description of such validation is however beyond the scope of this paper. +% In spite of this we would like to emphasize that we have already integrated the +% capsule model with vascularized liver model described in~\cite{Peterlik2012}. +% Adding the capsule did not affect the +% performance significantly: a visual refresh rate exceeding 25\,FPS was achieved on a +% PC with CPU Intel i7 running at 3.00 GHz. +% This suggests that the proposed technique is compatible with real-time simulation of whole +% organ while modeling the local properties accurately. + +%In our future work we need to validate the model in the +%context of global and local deformations. This task is challenging because +%comparing in vivo measurements with the simulation is difficult due to complex +%boundary conditions. +%\TG{ex-vivo: no information abou vessels; phantoms: cannot model capsule} + +%}}} + +\begin{figure}[b] + \centering + \includegraphics[height=7cm]{figures/modelUnderGravity.png} + \caption{Liver under gravity with (red) and without (yellow) capsule} + \label{f:gravity} +\end{figure} + + +\subsection{Global Deformation of Complete Model} +The complete model was constructed using contrast-enhanced CT data acquired on a female pig. +The liver and hepatic vein were segmented using semi-automatic methods available in ITKSnap~\footnote{www.itksnap.org}. +A tetrahedral mesh was obtained from the segmented maps using CGAL~\footnote{www.cgal.org}. +The semi-automatic method presented in~\cite{Peterlik2012} was +then applied to the segmented map of the hepatic vein, resulting in linked-beam model. +Finally, the model of the Glisson's capsule was constructed using the surface elements extracted from the volume mesh. +%described in section~\ref{ss:capsuleModel} over the surface triangles extracted from the tetrahedral mesh. +The complete model composed of 4266 tetrahedra, 188 beams and 1284 triangles was +used in simulation where external force representing the gravity was applied to the model, +resulting in large deformations mainly in the area of lobes. The refresh rate of 22\,FPS +was achieved on a desktop computer with Intel i7 CPU running at 3.4\,GHz and 8\,GB of memory. +The simulation with gravity was also used as a first demonstration of the global influence of the capsule. +In Fig.~\ref{f:gravity}a, the models with capsule (red) and without (yellow) are depicted after being +deformed due to the gravity, showing a significant difference between the two models. + + + diff --git a/doc/MMVR2014_obsolete/IOSProceedings/template/IOS-Book-Article.tmpl b/doc/MMVR2014_obsolete/IOSProceedings/template/IOS-Book-Article.tmpl new file mode 100644 index 0000000..15cb986 --- /dev/null +++ b/doc/MMVR2014_obsolete/IOSProceedings/template/IOS-Book-Article.tmpl @@ -0,0 +1,55 @@ +% PLEASE USE THIS FILE AS A TEMPLATE FOR THE PUBLICATION +% Check file IOS-Book-Article.tex +% + +\documentclass{IOS-Book-Article} %[seceqn,secfloat,secthm] +%\usepackage{mathptmx} +%\usepackage[T1]{fontenc} +%\usepackage{times}% +% +%%%%%%%%%%% Put your definitions here + + +%%%%%%%%%%% End of definitions +\begin{document} +\begin{frontmatter} % The preamble begins here. +% +%\pretitle{} +\title{} +\runningtitle{} +%\subtitle{} + +% For one author: +\author{\fnms{} \snm{}} +\address{} +\runningauthor{} +% +% Two or more authors: +%\author[A]{\fnms{} \snm{}}, +%\author[B]{\fnms{} \snm{}} +%\runningauthor{} +%\address[A]{} +%\address[B]{} +% +\begin{abstract} + +\end{abstract} + +\begin{keyword} + +\end{keyword} + +\end{frontmatter} + +%%%%%%%%%%% The article body starts: + +\section*{Introduction} + + +%%%%%%%%%%% The bibliography starts: +\begin{thebibliography}{99} + +\bibitem{r1} + +\end{thebibliography} +\end{document} diff --git a/doc/MMVR2014_obsolete/IOSProceedings/template/ios-book-article.aux b/doc/MMVR2014_obsolete/IOSProceedings/template/ios-book-article.aux new file mode 100644 index 0000000..97455dd --- /dev/null +++ b/doc/MMVR2014_obsolete/IOSProceedings/template/ios-book-article.aux @@ -0,0 +1,10 @@ +\relax +\newlabel{A}{{a}{1}} +\newlabel{B}{{b}{1}} +\global\@namedef{n@author@}{3} +\citation{r1} +\bibcite{r1}{1} +\bibcite{r2}{2} +\bibcite{r3}{3} +\bibcite{r4}{4} +\global\@namedef{@lastpage}{4} diff --git a/doc/MMVR2014_obsolete/IOSProceedings/template/ios-book-article.log b/doc/MMVR2014_obsolete/IOSProceedings/template/ios-book-article.log new file mode 100644 index 0000000..e9e8e85 --- /dev/null +++ b/doc/MMVR2014_obsolete/IOSProceedings/template/ios-book-article.log @@ -0,0 +1,180 @@ +This is pdfTeX, Version 3.1415926-1.40.10 (TeX Live 2009/Debian) (format=pdflatex 2012.11.30) 28 OCT 2013 14:23 +entering extended mode + %&-line parsing enabled. +**ios-book-article.tex +(./ios-book-article.tex +LaTeX2e <2009/09/24> +Babel and hyphenation patterns for english, usenglishmax, dumylang, noh +yphenation, loaded. +(./IOS-Book-Article.cls +Document Class: IOS-Book-Article 2006/04/20 v1.0, IOS Press +(/usr/share/texmf-texlive/tex/latex/base/fleqn.clo +File: fleqn.clo 1998/08/17 v1.1c Standard LaTeX option (flush left equations) +\mathindent=\dimen102 +) +Ten point +\c@section=\count79 +\c@subsection=\count80 +\c@subsubsection=\count81 +\c@paragraph=\count82 +\c@subparagraph=\count83 +\c@figure=\count84 +\c@table=\count85 +\abovecaptionskip=\skip41 +\belowcaptionskip=\skip42 +\tablewidth=\dimen103 +\saved@tablewidth=\dimen104 +\c@algorithm=\count86 +\t@glob@notes=\toks14 +\t@loc@notes=\toks15 +\note@cnt=\count87 +\c@author=\count88 +\n@author=\count89 +\c@address=\count90 +\sv@hyphenpenalty=\count91 +\prev@elem=\count92 +\cur@elem=\count93 +\fm@box=\box26 +\fm@size=\dimen105 +\t@abstract=\box27 +\t@keywords=\box28 +\a@title@skip=\dimen106 +\b@section@skip=\skip43 +\b@pretitle@skip=\skip44 +\t@xtheight=\dimen107 +\@@topskip=\dimen108 +\b@author@skip=\dimen109 +\dp@t@keywords=\dimen110 +\@pubyear=\count94 +\@copyear=\count95 +) (/usr/share/texmf-texlive/tex/latex/psnfss/mathptmx.sty +Package: mathptmx 2005/04/12 PSNFSS-v9.2a Times w/ Math, improved (SPQR, WaS) +LaTeX Font Info: Redeclaring symbol font `operators' on input line 28. +LaTeX Font Info: Overwriting symbol font `operators' in version `normal' +(Font) OT1/cmr/m/n --> OT1/ztmcm/m/n on input line 28. +LaTeX Font Info: Overwriting symbol font `operators' in version `bold' +(Font) OT1/cmr/bx/n --> OT1/ztmcm/m/n on input line 28. +LaTeX Font Info: Redeclaring symbol font `letters' on input line 29. +LaTeX Font Info: Overwriting symbol font `letters' in version `normal' +(Font) OML/cmm/m/it --> OML/ztmcm/m/it on input line 29. +LaTeX Font Info: Overwriting symbol font `letters' in version `bold' +(Font) OML/cmm/b/it --> OML/ztmcm/m/it on input line 29. +LaTeX Font Info: Redeclaring symbol font `symbols' on input line 30. +LaTeX Font Info: Overwriting symbol font `symbols' in version `normal' +(Font) OMS/cmsy/m/n --> OMS/ztmcm/m/n on input line 30. +LaTeX Font Info: Overwriting symbol font `symbols' in version `bold' +(Font) OMS/cmsy/b/n --> OMS/ztmcm/m/n on input line 30. +LaTeX Font Info: Redeclaring symbol font `largesymbols' on input line 31. +LaTeX Font Info: Overwriting symbol font `largesymbols' in version `normal' +(Font) OMX/cmex/m/n --> OMX/ztmcm/m/n on input line 31. +LaTeX Font Info: Overwriting symbol font `largesymbols' in version `bold' +(Font) OMX/cmex/m/n --> OMX/ztmcm/m/n on input line 31. +\symbold=\mathgroup4 +\symitalic=\mathgroup5 +LaTeX Font Info: Redeclaring math alphabet \mathbf on input line 34. +LaTeX Font Info: Overwriting math alphabet `\mathbf' in version `normal' +(Font) OT1/cmr/bx/n --> OT1/ptm/bx/n on input line 34. +LaTeX Font Info: Overwriting math alphabet `\mathbf' in version `bold' +(Font) OT1/cmr/bx/n --> OT1/ptm/bx/n on input line 34. +LaTeX Font Info: Redeclaring math alphabet \mathit on input line 35. +LaTeX Font Info: Overwriting math alphabet `\mathit' in version `normal' +(Font) OT1/cmr/m/it --> OT1/ptm/m/it on input line 35. +LaTeX Font Info: Overwriting math alphabet `\mathit' in version `bold' +(Font) OT1/cmr/bx/it --> OT1/ptm/m/it on input line 35. +LaTeX Info: Redefining \hbar on input line 50. +) +(./ios-book-article.aux) +\openout1 = `ios-book-article.aux'. + +LaTeX Font Info: Checking defaults for OML/cmm/m/it on input line 11. +LaTeX Font Info: ... okay on input line 11. +LaTeX Font Info: Checking defaults for T1/cmr/m/n on input line 11. +LaTeX Font Info: ... okay on input line 11. +LaTeX Font Info: Checking defaults for OT1/cmr/m/n on input line 11. +LaTeX Font Info: ... okay on input line 11. +LaTeX Font Info: Checking defaults for OMS/cmsy/m/n on input line 11. +LaTeX Font Info: ... okay on input line 11. +LaTeX Font Info: Checking defaults for OMX/cmex/m/n on input line 11. +LaTeX Font Info: ... okay on input line 11. +LaTeX Font Info: Checking defaults for U/cmr/m/n on input line 11. +LaTeX Font Info: ... okay on input line 11. +LaTeX Font Info: Try loading font information for OT1+ptm on input line 11. + (/usr/share/texmf-texlive/tex/latex/psnfss/ot1ptm.fd +File: ot1ptm.fd 2001/06/04 font definitions for OT1/ptm. +) +\big@size=\dimen111 +LaTeX Font Info: Try loading font information for OT1+ztmcm on input line 16 +. + +(/usr/share/texmf-texlive/tex/latex/psnfss/ot1ztmcm.fd +File: ot1ztmcm.fd 2000/01/03 Fontinst v1.801 font definitions for OT1/ztmcm. +) +LaTeX Font Info: Try loading font information for OML+ztmcm on input line 16 +. + +(/usr/share/texmf-texlive/tex/latex/psnfss/omlztmcm.fd +File: omlztmcm.fd 2000/01/03 Fontinst v1.801 font definitions for OML/ztmcm. +) +LaTeX Font Info: Try loading font information for OMS+ztmcm on input line 16 +. + +(/usr/share/texmf-texlive/tex/latex/psnfss/omsztmcm.fd +File: omsztmcm.fd 2000/01/03 Fontinst v1.801 font definitions for OMS/ztmcm. +) +LaTeX Font Info: Try loading font information for OMX+ztmcm on input line 16 +. + +(/usr/share/texmf-texlive/tex/latex/psnfss/omxztmcm.fd +File: omxztmcm.fd 2000/01/03 Fontinst v1.801 font definitions for OMX/ztmcm. +) +LaTeX Font Info: Font shape `OT1/ptm/bx/n' in size <20.74> not available +(Font) Font shape `OT1/ptm/b/n' tried instead on input line 16. +LaTeX Font Info: Font shape `OT1/ptm/bx/n' in size <14.4> not available +(Font) Font shape `OT1/ptm/b/n' tried instead on input line 16. +LaTeX Font Info: Font shape `OT1/ptm/bx/n' in size <12> not available +(Font) Font shape `OT1/ptm/b/n' tried instead on input line 16. +LaTeX Font Info: Font shape `OT1/ptm/bx/n' in size <10> not available +(Font) Font shape `OT1/ptm/b/n' tried instead on input line 23. +LaTeX Font Info: Font shape `OT1/ptm/bx/n' in size <7.4> not available +(Font) Font shape `OT1/ptm/b/n' tried instead on input line 23. +LaTeX Font Info: Font shape `OT1/ptm/bx/n' in size <6> not available +(Font) Font shape `OT1/ptm/b/n' tried instead on input line 23. +LaTeX Font Info: Font shape `OT1/ptm/bx/n' in size <8> not available +(Font) Font shape `OT1/ptm/b/n' tried instead on input line 34. +LaTeX Font Info: Font shape `OT1/ptm/bx/n' in size <5> not available +(Font) Font shape `OT1/ptm/b/n' tried instead on input line 34. + +Overfull \hbox (2.47221pt too wide) in paragraph at lines 59--64 +[]\OT1/ptm/m/n/10 A tem-plate file for L[]T[]X2e is avail-able from the Au-thor +'s Cor-ner on www.iospress.nl. + [] + +[1{/var/lib/texmf/fonts/map/pdftex/updmap/pdftex.map}] +Overfull \hbox (5.23743pt too wide) in paragraph at lines 95--97 +\OT1/ptm/m/n/10 Use the stan-dard L[]T[]X com-mands for head-ings: []\OT1/cmtt/ +m/n/9 \section\OT1/ptm/m/n/9 , []\OT1/cmtt/m/n/9 \subsection\OT1/ptm/m/n/9 , [] +\OT1/cmtt/m/n/9 \subsubsection\OT1/ptm/m/n/9 , + [] + +[2] [3] [4] (./ios-book-article.aux) ) +Here is how much of TeX's memory you used: + 594 strings out of 495061 + 7110 string characters out of 1182620 + 52896 words of memory out of 3000000 + 3810 multiletter control sequences out of 15000+50000 + 44404 words of font info for 89 fonts, out of 3000000 for 9000 + 28 hyphenation exceptions out of 8191 + 22i,7n,25p,183b,251s stack positions out of 5000i,500n,10000p,200000b,50000s +{/usr/share/texmf-texlive/fonts/enc/dvips +/base/8r.enc} +Output written on ios-book-article.pdf (4 pages, 101451 bytes). +PDF statistics: + 44 PDF objects out of 1000 (max. 8388607) + 0 named destinations out of 1000 (max. 500000) + 1 words of extra memory for PDF output out of 10000 (max. 10000000) + diff --git a/doc/MMVR2014_obsolete/IOSProceedings/template/ios-book-article.pdf b/doc/MMVR2014_obsolete/IOSProceedings/template/ios-book-article.pdf new file mode 100644 index 0000000..2d08922 Binary files /dev/null and b/doc/MMVR2014_obsolete/IOSProceedings/template/ios-book-article.pdf differ diff --git a/doc/MMVR2014_obsolete/IOSProceedings/template/ios-book-article.tex b/doc/MMVR2014_obsolete/IOSProceedings/template/ios-book-article.tex new file mode 100644 index 0000000..d4dccda --- /dev/null +++ b/doc/MMVR2014_obsolete/IOSProceedings/template/ios-book-article.tex @@ -0,0 +1,221 @@ + +\documentclass{IOS-Book-Article} + +\usepackage{mathptmx} + +%\usepackage{times} +%\normalfont +%\usepackage[T1]{fontenc} +%\usepackage[mtplusscr,mtbold]{mathtime} +% +\begin{document} +\begin{frontmatter} % The preamble begins here. + +%\pretitle{Pretitle} +\title{Instructions for the Preparation of an\\ +Electronic Camera-Ready Manuscript in\\ \LaTeX} +\runningtitle{IOS Press Style Sample} +%\subtitle{Subtitle} + +\author[A]{\fnms{Book Production} \snm{Manager}% +\thanks{Corresponding Author: Book Production Manager, IOS Press, Nieuwe Hemweg 6B, +1013 BG Amsterdam, The Netherlands; E-mail: +bookproduction@iospress.nl.}}, +\author[B]{\fnms{Second} \snm{Author}} +and +\author[B]{\fnms{Third} \snm{Author}} + +\runningauthor{B.P. Manager et al.} +\address[A]{Book Production Department, IOS Press, The Netherlands} +\address[B]{Short Affiliation of Second Author and Third Author} + +\begin{abstract} +These instructions are designed for the Preparation of an Electronic +Camera-Ready Manuscript in \LaTeX{} and should be read carefully. If you +have any questions regarding the instructions, please contact the Book +Production Department, by e-mail: \textit{bookproduction@iospress.nl} +or fax: +31-20-6870039. +\end{abstract} + +\begin{keyword} +electronic camera-ready manuscript\sep IOS Press\sep +\LaTeX\sep book\sep layout +\end{keyword} +\end{frontmatter} + +\thispagestyle{empty} +\pagestyle{empty} + +\section*{Introduction} +This document provides instructions for style and layout and how to submit the final +version. Although it was written for individual authors contributing to IOS Press books, +it can also be used by the author/editor preparing a monograph or an edited volume. + +Authors should realize that the manuscript submitted by the volume editor to IOS +Press will be almost identical to the final, printed version that appears in the book, +except for the pagination and the insertion of running headlines. Proofreading as +regards technical content and English usage is the responsibility of the author. + +A template file for \LaTeX2e is available from the Author's Corner on +www.iospress.nl. \LaTeX{} styles required for the \LaTeX{} template are also +available.\footnote{For authors using MS Word separate Instructions as well +as a Word template are available from the Author's Corner on +www.iospress.nl.} + +\section{Typographical Style and Layout} + +\subsection{Type Area} +The text output area is automatically set within an area 12.4 cm +horizontally and 20 cm vertically. Please do not use any +\LaTeX{} or \TeX{} commands that affect the layout or formatting of +your document (i.e. commands like \verb|\textheight|, +\verb|\textwidth|, etc.). + + + +\subsection{Font} + +The font type for running text (body text) is 10~point Times New Roman. +There is no need to code normal type (roman text). For literal text, please use +\texttt{type\-writer} (\verb|\texttt{}|) +or \textsf{sans serif} (\verb|\textsf{}|). \emph{Italic} (\verb|\emph{}|) +or \textbf{boldface} (\verb|\textbf{}|) should be used for emphasis. + +\subsection{General Layout} +Use single (1.0) line spacing throughout the document. For the main +body of the paper use the commands of the standard \LaTeX{} +``article'' class. You can add packages or declare new \LaTeX{} +functions if and only if there is no conflict between your packages +and the \texttt{IOS-Book-Article}. + +Always give a \verb|\label| where possible and use \verb|\ref| for cross-referencing. + + +\subsection{(Sub-)Section Headings} +Use the standard \LaTeX{} commands for headings: {\small \verb|\section|, \verb|\subsection|, \verb|\subsubsection|, \verb|\paragraph|}. +Headings will be automatically numbered. + +Use initial capitals in the headings, except for articles (a, an, the), coordinate +conjunctions (and, or, nor), and prepositions, unless they appear at the beginning +of the heading. + +\subsection{Footnotes and Endnotes} +Please keep footnotes to a minimum. If they take up more space than roughly 10\% of +the type area, list them as endnotes, before the References. Footnotes and endnotes +should both be numbered in arabic numerals and, in the case of endnotes, preceded by +the heading ``Endnotes''. + +\subsection{References} + +References to the literature should be mentioned in the main text by arabic numerals in +square brackets. Use the Citation-Sequence System, which means they are ``listed and +numbered in the sequence in which they are 1st cited. ($\ldots$) Subsequent citations of the +same document use the same numbers as that of its initial citation'' \cite{r1}. + +As regards the content, form and punctuation of the References, if the volume +editor has not expressed a preference in this matter, authors should select the format +most appropriate to their article, and use it \textit{consistently}. + +\section{Illustrations} + +\subsection{General Remarks on Illustrations} +The text should include references to all illustrations. Refer to illustrations in the +text as Table~1, Table~2, Figure~1, Figure~2, etc., not with the section or chapter number +included, e.g. Table 3.2, Figure 4.3, etc. Do not use the words ``below'' or ``above'' +referring to the tables, figures, etc. + +Do not collect illustrations at the back of your article, but incorporate them in the +text. Position tables and figures at the top or bottom of a page, with at least 2 lines +extra space between tables or figures and the running text. + +Illustrations should be centered on the page, except for small figures that can fit +side by side inside the type area. Tables and figures should not have text wrapped +alongside. + +Place figure captions \textit{below} the figure, table captions \textit{above} the table. +Use bold for table/figure labels and numbers, e.g.: \textbf{Table 1.}, \textbf{Figure 2.}, +and roman for the text of the caption. Keep table and figure captions justified. Center +short figure captions only. + +The minimum \textit{font size} for characters in tables is 8 points, and for lettering in other +illustrations, 6 points. + +On maps and other figures where a \textit{scale} is needed, use bar scales rather than +numerical ones of the type 1:10,000. + +\subsection{Quality of Illustrations} +Use only Type I fonts for lettering in illustrations. + +Include graphics in Encapsulated postscript (EPS) format. Do \textit{not} use illustrations +taken from the Internet. The resolution of images intended for viewing on a screen is +not sufficient for the printed version of the book. + +If you are incorporating screen captures, keep in mind that the text may not be +legible after reproduction (using a screen capture tool, instead of the Print Screen +option of PC's, might help to improve the quality). + +\subsection{Color Illustrations} +Please note, that illustrations will only be printed in color if the volume editor agrees to +pay the production costs for color printing. However, you should \textit{not} use color in +illustrations that must be printed in black and white, because this will greatly reduce the +print quality. (Note that in software the default often is color, so you may have to +change the settings for these illustrations.) + +Illustrations that must be printed in colour should be enclosed as CMYK-encoded +EPS files. + + +\section{Equations} +Number equations consecutively, not section-wise. Place the numbers in parentheses at +the right-hand margin, level with the last line of the equation. Refer to equations in the +text as Eq. (1), Eqs. (3) and (5). + +\section{Fine Tuning} + +\subsection{Type Area} +\textbf{Check once more that all the text and illustrations are inside the type area and +that the type area is used to the maximum.} You may of course end a page with one +or more blank lines to avoid `widow' headings, or at the end of a chapter. + +\subsection{Capitalization} +Use initial capitals in the title and headings, except for articles (a, an, the), coordinate +conjunctions (and, or, nor), and prepositions, unless they appear at the beginning of the +title or heading. + +\subsection{Page Numbers and Running Headlines} +You do not need to include page numbers or running headlines. These elements will be +added by the publisher. + +\section{Submitting the Manuscript} +Submit the following to the volume editor: + +\begin{enumerate} +\item The main source file, and any other required files. Do not submit more than +one version of any item. + +\item Identical high resolution PDF file with all fonts embedded. First produce a +Postscript file from \LaTeX{} with DVIPS version 5.56 or higher. The option +``-M'' (don't make fonts) should be indicated. Use Adobe Acrobat Distiller to +produce the PDF and choose the job option \textit{Press-Optimized}. +\end{enumerate} + +\begin{thebibliography}{99} + +\bibitem{r1} +\textit{Scientific Style and Format: The CBE manual for authors, +editors and publishers}. Style Manual Committee, Council of Biology Editors. +Sixth ed. Cambridge University Press, 1994. + +\bibitem{r2} +L.U. Ante, Cem surgere: Surgite postquam sederitis, qui manducatis panem doloris, +\textit{Omnes} \textbf{13} (1916), 114--119. + +\bibitem{r3} +T.X. Confortavit, \textit{Seras}, Portarum, New York, 1995. + +\bibitem{r4} +P.A. Deus, Ater hoc et filius et mater praestet nobis, +\textit{Paterhoc} \textbf{66} (1993), 856--890. + +\end{thebibliography} +\end{document} diff --git a/doc/MMVR2014_obsolete/IOSProceedings/template/ios-book-article_LaTeX_Instructions.pdf b/doc/MMVR2014_obsolete/IOSProceedings/template/ios-book-article_LaTeX_Instructions.pdf new file mode 100644 index 0000000..01cf9eb Binary files /dev/null and b/doc/MMVR2014_obsolete/IOSProceedings/template/ios-book-article_LaTeX_Instructions.pdf differ diff --git a/doc/MMVR2014_obsolete/abstract.tex b/doc/MMVR2014_obsolete/abstract.tex new file mode 100644 index 0000000..83f20ec --- /dev/null +++ b/doc/MMVR2014_obsolete/abstract.tex @@ -0,0 +1,25 @@ +\begin{frontmatter}% +\begin{abstract}% +Accurate biomechanical modeling of liver is of a paramount interest for pre-operative planning or computer-aided per-operative guidance. +However, such simulations remain a challenging task, since the organ is composed of three constituents: parenchyma, vascularization and Glisson's capsule, +each having different mechanical properties. +% +%While a real-time simulation of vascularized liver has been already described in~\cite{Peterlik2012}, the Glisson's capsule has not been included in the modeling. +%In~\cite{Hollenstein2006,Ahn2010} it is shown that the capsule plays an important role mainly in the vicinity of the surgical tools. +%Therefore, the accuracy of the liver response in the vicinity of the surgical tool requires correct modeling of the capsule as a component of the liver model. +% +In this paper we propose a complete liver model, where the parenchyma is modeled as a finite element volume, the vessels are modeled as series of beam elements, +and the corotational membrane elements based on constant-strain formulation are used for capsule. These components are coupled mechanically as shown in the paper. +We show that using this model we are able to reproduce accurately biomechanical tests, while maintaining the real-time aspect of the simulation. + +%The measures performed on the capsule report stiffness which is significantly higher than that of the parenchyma, however, the thickness of the membrane does not exceed 100$\mu$m. +%For this reason, it is not possible to model the capsule with standard volume elements usually employed for the parenchyma. +%In our approach, we rely of corotational membrane elements based on constant-strain formulation, which are coupled mechanically to the underlying tetrahedra. + +\end{abstract}% +% +\begin{keyword}% +Simulation , modeling, liver, biomechanics +\end{keyword}% +% +\end{frontmatter}% diff --git a/doc/MMVR2014_obsolete/aspiration.R b/doc/MMVR2014_obsolete/aspiration.R new file mode 100644 index 0000000..3c871e0 --- /dev/null +++ b/doc/MMVR2014_obsolete/aspiration.R @@ -0,0 +1,21 @@ +a1 <- data.matrix(read.csv("aspiration-simple.csv")) +a2 <- data.matrix(read.csv("aspiration-composite.csv")) + +a1 <- a1[1:31,c(4,3)]; a1[,2] <- a1[,2] - 0.015; a1[,2] <- a1[,2] * 1000 +a2 <- a2[1:33,c(4,3)]; a2[,2] <- a2[,2] - 0.015; a2[,2] <- a2[,2] * 1000 + +pdf("aspiration.pdf", width=3, height=1.5, pointsize=8); # sizes in inches +p <- par(lwd=0.5, mar=c(4,4,0,0)+0.1); + +plot(range(c(a1[,1], a2[,1])), range(c(a1[,2], a2[,2])), #ylim=c(0, 0.004), + type="n", xlab="x-coordinate", ylab="Displacement [mm]") + +lines(a1, col="black") +lines(a2, col="blue") + +#abline(h=0, lty="dotted"); + +#legend("topright", c("A","B", "C", "D"), pch=c(1,4,5,6), col="black"); + +dev.off() +par(p); diff --git a/doc/MMVR2014_obsolete/aspiration.jpg b/doc/MMVR2014_obsolete/aspiration.jpg new file mode 100644 index 0000000..2127d07 Binary files /dev/null and b/doc/MMVR2014_obsolete/aspiration.jpg differ diff --git a/doc/MMVR2014_obsolete/aspiration.pdf b/doc/MMVR2014_obsolete/aspiration.pdf new file mode 100644 index 0000000..25823d8 Binary files /dev/null and b/doc/MMVR2014_obsolete/aspiration.pdf differ diff --git a/doc/MMVR2014_obsolete/bibdata.bib b/doc/MMVR2014_obsolete/bibdata.bib new file mode 100644 index 0000000..8a318e5 --- /dev/null +++ b/doc/MMVR2014_obsolete/bibdata.bib @@ -0,0 +1,200 @@ +@ARTICLE{Ahn2010, + author = {Bummo Ahn and Jung Kim}, + title = {Measurement and characterization of soft tissue behavior with + surface deformation and force response under large deformations}, + journal = {Medical Image Analysis}, + year = {2010}, + volume = {14}, + pages = {138-148}, + number = {2}, + doi = {10.1016/j.media.2009.10.006}, + issn = {1361-8415}, + keywords = {Soft tissue characterization, Medical simulation, Surface + deformation, Large deformation, Inverse finite element method (FEM) + optimization algorithm}, +} + +@article{Boltcheva2009, + author = {Boltcheva, Dobrina and Yvinec, Mariette and Boissonnat, Jean-Daniel}, + journal = {MICCAI}, + number = {Pt 2}, + pages = {283--90}, + title = {{Mesh generation from 3D multi-material images.}}, + volume = {12}, + year = {2009} +} + +@ARTICLE{Duriez2006, + author = {Duriez, C. and Cotin, S. and Lenoir, J. and Neumann, P.}, + title = {New approaches to catheter navigation for interventional radiology + simulation1}, + journal = {Computer Aided Surgery}, + year = {2006}, + doi = {10.3109/10929080601090623}, +} + +@ARTICLE{Felippa2003, + author = {Carlos A. Felippa}, + title = {A study of optimal membrane triangles with drilling freedoms}, + journal = {CMAME}, + year = {2003}, + volume = {192}, + pages = {2125-2168}, + number = {16-18}, + doi = {10.1016/S0045-7825(03)00253-6}, + issn = {0045-7825}, + keywords = {Finite elements, Templates, High performance, Drilling freedoms, Triangles, + Membrane, Plane stress, Shell, Assumed natural deviatoric strains, + Hierarchical models, Signatures, Clones}, +} + +@ARTICLE{Felippa2005, + author = {C.A. Felippa and B. Haugen}, + title = {A unified formulation of small-strain corotational finite elements: + I. Theory}, + journal = {CMAME}, + year = {2005}, + volume = {194}, + pages = {2285-2335}, + number = {21-24}, + doi = {10.1016/j.cma.2004.07.035}, + issn = {0045-7825}, + keywords = {Geometrically nonlinear structural analysis, Corotational description, + Shell finite elements}, +} + +@INPROCEEDINGS{Gao2009, + author={Zhan Gao and Kim, T. and James, D.L. and Desai, J.P.}, + booktitle={Automation Science and Engineering}, + title={Semi-automated soft-tissue acquisition and modeling for surgical simulation}, + year={2009}, + keywords={Biological materials;Biological tissues;Computational modeling;Computer simulation;Deformable models;Liver;Materials testing;Mechanical factors;Performance evaluation;Surgery;biological tissues;biomechanics;computer animation;deformation;eigenvalues and eigenfunctions;liver;medical computing;stress-strain relations;surgery;automatic code generation;compression;computer animations;deformation;eigenvalue degeneracies;element inversion;logarithmic Ogden model;mechanical properties;patient-specific variations;porcine liver tissue;semiautomated method;semiautomated soft-tissue acquisition;shear;stress-strain relations;surgical simulation;tension;}, + doi={10.1109/COASE.2009.5234158}, +} + +@INCOLLECTION{Hollenstein2006, + author = {Hollenstein, Marc and Nava, Alessandro and Valtorta, Davide and + Snedeker, Jess G. and Mazza, Edoardo}, + title = {Mechanical Characterization of the Liver Capsule and Parenchyma}, + booktitle = {Biomedical Simulation}, + year = {2006}, + volume = {4072}, + series = {LNCS}, + pages = {150-158}, + doi = {10.1007/11790273_17}, + isbn = {978-3-540-36009-4}, +} + +@article{Kerdok2006, + title = "Effects of perfusion on the viscoelastic characteristics of liver", + journal = "Journal of Biomechanics", + volume = "39", + number = "12", + pages = "2221-2231", + year = "2006", + issn = "0021-9290", + doi = "10.1016/j.jbiomech.2005.07.005", + author = "Amy E. Kerdok and Mark P. Ottensmeyer and Robert D. Howe", + keywords = "Perfusion", + keywords = "Viscoelastic", + keywords = "Indentation", + keywords = "Creep", + keywords = "Liver", + keywords = "Large strain" +} + +@ARTICLE{Nava2008, + author = {A. Nava and E. Mazza and M. Furrer and P. Villiger and W.H. Reinhart}, + title = {In vivo mechanical characterization of human liver}, + journal = {Medical Image Analysis}, + year = {2008}, + volume = {12}, + pages = {203-216}, + number = {2}, + doi = {10.1016/j.media.2007.10.001}, + issn = {1361-8415}, + keywords = {Liver, Mechanical properties, In vivo, Constitutive models, Experiment}, +} + +@INCOLLECTION{Marchesseau2010, + author = {Marchesseau, Stéphanie and Heimann, Tobias and Chatelin, Simon and + Willinger, Rémy and Delingette, Hervé}, + title = {Multiplicative Jacobian Energy Decomposition Method for Fast Porous + Visco-Hyperelastic Soft Tissue Model}, + booktitle = {MICCAI 2010}, + year = {2010}, + volume = {6361}, + series = {LNCS}, + pages = {235-242}, + doi = {10.1007/978-3-642-15705-9_29}, + isbn = {978-3-642-15704-2}, +} + +@INPROCEEDINGS{Nesme2005, + author = {Nesme, Matthieu and Payan, Yohan and Faure, Fran\c{c}ois}, + title = {Efficient, Physically Plausible Finite Elements}, + booktitle = {Eurographics (short papers)}, + year = {2005}, + editor = {J. Dingliana and F. Ganovelli}, + month = {august}, + keywords = {animation, physical model, elasticity, finite elements}, +} + +@INPROCEEDINGS{Peterlik2012, + author = {Peterl\'{i}k, Igor and Duriez, Christian and Cotin, St\'{e}phane}, + title = {Modeling and Real-Time Simulation of a Vascularized Liver Tissue}, + booktitle = {MICCAI + 2012}, + year = {2012}, + volume = {7510}, + series = {LNCS}, + pages = {50--57}, + doi = {10.1007/978-3-642-33415-3_7}, + isbn = {978-3-642-33414-6}, +} + +@ARTICLE{Umale2011, + author = {Sagar Umale and Simon Chatelin and Nicolas Bourdet and Caroline Deck + and Michele Diana and Parag Dhumane and Luc Soler and Jacques Marescaux + and Remy Willinger}, + title = {Experimental in vitro mechanical characterization of porcine Glisson's + capsule and hepatic veins}, + journal = {Journal of Biomechanics}, + year = {2011}, + volume = {44}, + number = {9}, + doi = {10.1016/j.jbiomech.2011.03.029}, + issn = {0021-9290}, + keywords = {Glisson's capsule}, +} + +@PHDTHESIS{Umale2013, + author = {Sagar Umale}, + title = {Characterization and Modeling of Abdominal Organs}, + school = {Universit\'{e} de Strasbourg}, + year = {2013}, +} + +@article{Duriez2006b, + author = {Christian Duriez and Frederic Dubois and Abderrahmane Kheddar and Claude Andriot}, + title = {Realistic Haptic Rendering of Interacting Deformable Objects in Virtual Environments}, + journal = {IEEE Transactions on Visualization and Computer Graphics}, + volume = {12}, + number = {1}, + year = {2006}, + issn = {1077-2626}, + pages = {36--47}, + publisher = {IEEE Educational Activities Department}, + address = {Piscataway, NJ, USA}, +} + +@article{Forauer2003, +title={Histologic Changes in the Human Vein Wall Adjacent to Indwelling Central Venous Catheters}, +author={Andrew Forauer and Constantive Theoharis}, +journal={J.of Vasc.and Interv. Rad.}, +volume={14}, +issue={9}, +year={2003}, +pages={1163-1168} +} + diff --git a/doc/MMVR2014_obsolete/conclusion.tex b/doc/MMVR2014_obsolete/conclusion.tex new file mode 100644 index 0000000..771cca4 --- /dev/null +++ b/doc/MMVR2014_obsolete/conclusion.tex @@ -0,0 +1,10 @@ +\section{Conclusion} +In this paper we presented a composite liver model based on volume and membrane elements. +When compared to experimental data provided in the literature we found similar results, but with faster computation times than standard computationally expensive model based entirely on volume elements. + +%Presently we are focusing on the validation of the model also in context of global deformations of the organ where we believe the capsule plays an essential role as well. +%This task is however complicated due to the limited number of experimental studies dealing with both the parenchyma and the capsule. + + +%\section*{Acknowledgments} +%The authors would like to thank the French Research Agency (ANR) for funding this study through the ACouStiC project. diff --git a/doc/MMVR2014_obsolete/displacement.R b/doc/MMVR2014_obsolete/displacement.R new file mode 100644 index 0000000..f1ff6e6 --- /dev/null +++ b/doc/MMVR2014_obsolete/displacement.R @@ -0,0 +1,21 @@ +mt <- read.table("disp-tet.txt") +mc <- read.table("disp-comp.txt") + +mt[,3] <- (mt[,3] - 0.015)*1000 +mc[,3] <- (mc[,3] - 0.015)*1000 + + +pdf("displacement.pdf", width=3, height=1.5, pointsize=8); # sizes in inches +p <- par(lwd=0.5, mar=c(4,4,0,0)+0.1); + +i <- 1:200 # 5 seconds +plot(c(0,2), + c(-0.285, 2.336), # make the range consistent + #range(mt[,3], mc[,3]), + type="n", xlab="Time [s]", ylab="Displacement [mm]") + +lines(mt[i,1], mt[i,3], col=1) +lines(mc[i,1], mc[i,3], col=4) + +dev.off() +par(p) diff --git a/doc/MMVR2014_obsolete/displacement.pdf b/doc/MMVR2014_obsolete/displacement.pdf new file mode 100644 index 0000000..4ce2fb0 Binary files /dev/null and b/doc/MMVR2014_obsolete/displacement.pdf differ diff --git a/doc/MMVR2014_obsolete/distanceMap.png b/doc/MMVR2014_obsolete/distanceMap.png new file mode 100644 index 0000000..dee10c5 Binary files /dev/null and b/doc/MMVR2014_obsolete/distanceMap.png differ diff --git a/doc/MMVR2014_obsolete/figures.tex b/doc/MMVR2014_obsolete/figures.tex new file mode 100644 index 0000000..f3ddc08 --- /dev/null +++ b/doc/MMVR2014_obsolete/figures.tex @@ -0,0 +1,28 @@ +\newpage + + +\begin{figure}[t] + \centering + \includegraphics[height=3.5cm]{aspiration.jpg} + \caption{\label{fig-aspiration1} The SOFA simulation scene of the aspiration test.} +\end{figure} + +\begin{figure}[t] + \centering + \includegraphics[width=7cm]{aspiration.pdf} + \caption{\label{fig-aspiration2} Displacement profile of the cube in the + aspiration test with (blue) and without (black) the capsule.} +\end{figure} + +\begin{figure} + \centering + \includegraphics[height=3.5cm]{displacement.pdf} + \caption{\label{fig-aspiration3} Evolution of the displacement at the center + in time for test with (blue) and without (black) the capsule.} +\end{figure} + +\begin{figure}[b] + \centering + \includegraphics[height=7cm]{gravity2.png} + \caption{\label{f:gravity} Liver under gravity with (red) and without (yellow) capsule} +\end{figure} diff --git a/doc/MMVR2014_obsolete/forceEvolution.pdf b/doc/MMVR2014_obsolete/forceEvolution.pdf new file mode 100644 index 0000000..83d1c47 Binary files /dev/null and b/doc/MMVR2014_obsolete/forceEvolution.pdf differ diff --git a/doc/MMVR2014_obsolete/format.tex b/doc/MMVR2014_obsolete/format.tex new file mode 100644 index 0000000..9ee4c47 --- /dev/null +++ b/doc/MMVR2014_obsolete/format.tex @@ -0,0 +1,42 @@ +\pdfminorversion=5 +\usepackage{float} +\usepackage{hyperref} + +\makeatletter% +\hypersetup{% +colorlinks=true,% Colors the text of links and anchors +linkcolor=blue,% Color for normal internal links +citecolor=blue,% Color for bibliographical citations in text +urlcolor=blue,% Color for linked URLs +}% +\makeatother% + +\usepackage{amsmath} +\usepackage{amssymb} +\usepackage{graphicx} +\usepackage{subfigure} +\usepackage{rotating} +\usepackage{array} +\usepackage[lined,linesnumbered]{algorithm2e}% +\usepackage{algorithmic}% +\usepackage{multirow} +\usepackage{amsmath} +\usepackage[utf8x]{inputenc} +\usepackage[T1]{fontenc} % pour les caracteres francais dans les remarques +\usepackage{textcomp} +\usepackage[usenames]{color} + +\def\wrt{w.\,r.\,t.} +\def\eg{e.\,g.} +\def\ie{i.\,e.} +\def\Dash{\nobreak\,---\penalty-500\,} + +\tolerance=10000000 + +\makeatletter +% \renewcommand\section{\@startsection{section}{1}{\z@}{0px}{0.1px}{\bfseries}} +% \renewcommand\subsection{\@startsection{subsection}{2}{\z@}{3px}{-10px}{\itshape}} +% \renewcommand\subsection{\@startsection{subsection}{2}{\z@}{1px}{-8px}{\bfseries}} +\renewcommand{\Vec}[1]{\mathbf{#1}} +\newcommand{\Mat}[1]{\mathbf{#1}} +\makeatother diff --git a/doc/MMVR2014_obsolete/gravity.jpg b/doc/MMVR2014_obsolete/gravity.jpg new file mode 100644 index 0000000..9408811 Binary files /dev/null and b/doc/MMVR2014_obsolete/gravity.jpg differ diff --git a/doc/MMVR2014_obsolete/gravity2.png b/doc/MMVR2014_obsolete/gravity2.png new file mode 100644 index 0000000..2354f4f Binary files /dev/null and b/doc/MMVR2014_obsolete/gravity2.png differ diff --git a/doc/MMVR2014_obsolete/intro.tex b/doc/MMVR2014_obsolete/intro.tex new file mode 100644 index 0000000..9f8b2ab --- /dev/null +++ b/doc/MMVR2014_obsolete/intro.tex @@ -0,0 +1,60 @@ +\section{Introduction}% +\vspace{-6pt} +According to the statistics, nearly 100,000 European citizens die of cirrhosis or liver cancer each year. +Although new methods +%such as radio-frequency- and cryo-ablation known +in the interventional radiology +seem to be promising, surgery remains the option that offers the foremost success rate against these pathologies. +Nevertheless, surgery is not always performed due to several limitations, in particular the determination +of accurate eligibility criteria for the patient. +%In this context, the pre-operational planning becomes a crucial task having a significant impact on the treatment. + +Computer-aided physics-based medical simulation has proven to be an extremely useful technique in the area of medical training. +Whereas generic models are usually required in training simulators, accurate patient-specific modeling +becomes necessary as soon as computer simulation is to be employed in the pre-operative planning. +%At the same time, +%interactivity of such models remains an important aspect, requiring real-time simulation which is often difficult to +%achieve given the complexity of soft tissues. +When simulating the behavior of human liver, the task of real-time accurate modeling is challenging, mainly because of the complex structure +of this organ composed of three main constituents: \emph{parenchyma}, \emph{vascular networks} and \emph{Glisson's capsule}. +The parenchyma has certainly been the most studied component of the liver; actually researchers agree on hyperelastic +properties of the tissue, for which the mechanical parameters have been reported for example in~\cite{Kerdok2006}.%,Gao2009}. +Moreover, several methods have been proposed to model the hyperelastic behaviour at real-time rates, such as multiplicative Jacobian decomposition +introduced in~\cite{Marchesseau2010}. +% +%\TG{The following paragraph is optional. Unnecessary but adds to the global context} +The mechanical importance of the vascular structures in liver is studied in~\cite{Peterlik2012}. It shows that the +influence of vessels on the mechanical behaviour of the organ is significant. %, mainly if large deformations occur. +%Since a detailed modeling of the vessels would be extremely costly (mainly because of the small thickness of the vessel wall, +%the authors propose a composite model allowing for real-time simulation of entire liver with vascularization. +Since a detailed modeling of the vessels would be extremely costly (mainly because of the small thickness of the vessel wall), +the authors propose a composite model allowing for real-time simulation. + +Rather a small number of studies have been conducted dealing with the third liver constituent, the Glisson's capsule. +Quantitative results of experiments on a porcine liver have been published in~\cite{Umale2011}; the measurements indicate that although being very +thin (10--20$\mu m$), the capsule shows to be stiff in tensile tests: the Young's modulus of the capsule reported to be $8.22\pm3.42$\,MPa +exceeds the values for the parenchyma by three orders of magnitude. +This suggests that the mechanical influence of the membrane on the liver behavior is not negligible. +% +In~\cite{Hollenstein2006}, a local influence of the capsule has been measured using a special aspiration device. The study was then repeated +in vivo on human patients during the operation, confirming the mechanical importance of the membrane~\cite{Ahn2010,Nava2008}. +%To our best knowledge, no attempt has been made to demonstrate the role of the Glisson's capsule on the global behaviour of +%the liver, mainly if the organ undergoes large deformations which is often the case during the surgery. + +In this paper we present preliminary results of our work on the complete liver model. +We present a real-time composite model accounting for parenchyma and Glisson's capsule, compatible with previously proposed vascularized model~\cite{Peterlik2012}. +We also show that the capsule has a significant impact on the mechanical response of the organ. +%The model is based on two different finite element representations for each constituent coupled together. +%The main contribution of the paper is twofold: first, we present a real-time model of the liver, including +%the parenchyma, vascularization and Glisson's capsule. The model is based on three different finite element representations for each constituent, +%linked together via mechanical coupling. +%We show that the model mimics the \emph{local} experiments described in~\cite{Hollenstein2006}. + +%Second, we use the complete model of the liver to demonstrate the \emph{global} influence of the Glisson's +%capsule via simulation: using a specific model of a porcine liver built from CT contrast-enhanced data, we show that there is a significant +%difference in the response of the model with and without the capsule in the case when the liver undergoes large deformations. + +%The paper is organized as follows: first we describe the proposed model of liver with capsule. +%Second, we validate our model in context of local deformations by reproducing the aspiration test described in~\cite{Hollenstein2006}. We conclude by summarizing future steps towards the complete liver model. +%Finally, we demonstrate that in spite of its small thickness, the Glisson's +%capsule has a global influence on the liver undergoing large deformations. diff --git a/doc/MMVR2014_obsolete/method.tex b/doc/MMVR2014_obsolete/method.tex new file mode 100644 index 0000000..b2eb0bc --- /dev/null +++ b/doc/MMVR2014_obsolete/method.tex @@ -0,0 +1,228 @@ +\section{Methods \& Materials} +\label{sec:methodology} +\vspace{-6pt} + +% In this section we describe the construction of a composite model based on two components: +% tetrahedral FE model of the parenchyma and triangular membrane elements used for the capsule. + +% \subsection{Biomechanical Models and Coupling} +%It is known that the parenchyma exhibits non-linear viscoelastic behavior \cite{Marchesseau2010}. +While time-dependent phenomena related to viscosity are not considered in this work, we employ corotational finite elements to model the parenchyma +relying on the geometrical method proposed in~\cite{Nesme2005}. +%although it relies on linear stress-strain relationship, large displacements including rotations are modeled correctly. +Denoting $p$ a generic P1 tetrahedral element of the parenchyma, the 12$\times$12 element stiffness matrix is then computed as +\begin{equation} +\Mat{K}_p = \int_{V_p} \Mat{B}_p^\top \Mat{D}_p \Mat{B}_p dV +\end{equation} +where $\Mat{B}_p$ is the strain-displacement matrix and $\Mat{D}_p$ is the stress-strain matrix. + +While the thickness of a vessel wall does not exceed 250$\mu$m,%~\cite{Forauer2003}, +stiffness of 0.62$\pm$0.41\,MPa has been reported +in~\cite{Umale2011}, being quite important when compared to the parenchyma. Due to this property, vessels influence +the mechanical response of the tissue as illustrated in~\cite{Peterlik2012}. Since the vessel wall cannot be modeled +with tetrahedral elements if the real-time aspect of the simulation is to be preserved, +serially-linked beam elements based on Tymoshenko formulation are employed, taking into account the hollow +structure of the vessels via moments of inertia. +%to model the vessels which allows for correct simulation of large deformations as it is based on the corotational framework +%similar to the one used for the parenchyma. +For an arbitrary beam element $v$ representing a segment of a vessel, the corresponding local stiffness matrix $\Mat{K}_v$ is computed as shown in~\cite{Duriez2006}. + +% Briefly, the motion of each element $e$ is decomposed into rigid rotation $\Mat{R}^e$ and local deformation in each step of the simulation. +% The rotations are then used to update each local element stiffness matrix as $\Mat{R}^e\Mat{K}_0{\Mat{R}^e}^{\top}$ +% whereas the deformations are used to compute the linear strain in the local corotational frame. +% There are several ways of computing the corotational frame for elements; we rely on +% the geometrical method proposed in \cite{Nesme2005}. + +% \subsection{Parenchyma} %{{{ + +% It is known that the parenchyma exhibits non-linear viscoelastic behaviour \cite{Marchesseau2010}. +% However, as we are mainly interested in the static equilibrium, we do not model the time-dependent +% phenomena related to viscosity. +% +% % %However, we employ simpler corotational model as we are not so much +% % %interested in time-dependent behaviour but rather in static equilibrium +% % %under certain conditions. +% % %We also rely on the vascularized model of the parenchyma proposed by +% % %Peterl\'{i}k et al. \cite{Peterlik2012}. +% +% The parenchyma is modeled using corotational finite elements~\cite{Felippa2005}. +% Although it relies on linear stress-strain relationship, large displacements including rotations are modeled correctly. +% While in the full non-linear formulation the stiffness matrix relates the forces $\Vec{f}$ and +% displacements $\Vec{u}$ as $\Vec{f} = K(\Vec{u})$, the corotational model +% requires the stiffness matrix $\Mat{K}_0$ of the system to be computed only once before the simulation begins. +% Then, in each step, the motion of each element $e$ is decomposed into rigid rotation $\Mat{R}^e$ and local deformation. +% The rotations are then used to update each local element stiffness matrix as $\Mat{R}^e\Mat{K}_0{\Mat{R}^e}^{\top}$ +% whereas the deformations are used to compute the linear strain in the local corotational frame. +% There are several ways of computing the corotational frame for elements; we rely on +% the geometrical method proposed in \cite{Nesme2005}. +% % % NOTE: This description of corotational method is very simplified and could be extended. +% % +% % %The model of the vascularization is based on linear beams +% % %with local frames of reference~\cite{Duriez2006}; in many aspects it's similar to the +% % %corotational formulation described above. As such the model also handles geometric +% % %non-linearities in the deformation. Through a specification of cross section and moments of inertia, +% % %the model can account for the specific properties of the blood vessels. +% % +% % %The beam-based model of vessels is mechanically coupled to the parenchyma as described in~\cite{Peterlik2012}. +% % %The coupling assumes that there is no relative motion between the vessels and the surrounding parenchyma. +% % %During the simulation, the nodes of linked beams are first displaced and rotated according to the actual motion of associated tetrahedra. +% % %As the deformation of beams results in mechanical response represented by forces and torques, these are propagated back to +% % %the tetrahedral FE model. +% % +% % %}}} + +% \subsection{Glisson's Capsule} %{{{ +% \label{ss:capsuleModel} +The thickness of the Glisson's capsule is also very small: the values in range of 10-20 $\mu$m have been reported in~\cite{Umale2011}. +It is not possible to model such thin structure with classical tetrahedral elements: +%if the real-time aspect of the simulation is to be preserved. +%Furthermore, modeling both the tissue and the capsule +the model would require an extremely +dense mesh and thus would significantly violate the speed requirements imposed for medical simulators. +Instead, modeling the capsule with two-dimensional elements that abstract from the +thickness in the third dimension seems +to be a natural choice. In the elasticity theory, this functionality is usually provided by membrane elements. +%Based on the observation of its behaviour, we also +%assume negligible bending forces and propose a model based on membrane +%elements. +To maintain simplicity of the composite model we choose simple triangular elements with constant strain (CST). + +For a triangular capsule element $c$, the 9$\times$9 stiffness matrix $\Mat{K}_m$ is given as +\begin{equation} + \Mat{K}_c = \int_{S_c} \Mat{B}_c^\top \Mat{D}_c \Mat{B}_c dS +\end{equation} +where $\Mat{B}_c$ and $\Mat{D}_c$ are strain-displacement and strain-stress matrices, respectively. + +The complete model of the liver takes into account all three components described above by combining the contributions +of parenchyma, vessels and capsule. The coupling between the vessel elements (beams) and parenchyma elements (tetrahedra) +is described in detail in~\cite{Peterlik2012}. Briefly, each vessel node (having 6 degrees of freedom to account for torques in vessels) +is coupled with a tetrahedra in which it is located via barycentric coordinates. This coupling remains constant during +the simulation and can be described via matrix $\Mat{J}_{v\rightarrow p}$ which is the Jacobian matrix of the coupling. + +The coupling between the parenchyma and capsule is straightforward, since the triangles used as the +domain for the CST formulations are the surface faces of the volume mesh. Therefore, for given triangle +with vertices $v_1$, $v_2$ and $v_3$, the corresponding tetrahedron (sharing the same three vertices) is found and +a 9$\times$12 permutation matrix $\Mat{P}_{c\rightarrow p}$ mapping the triangle vertices to tetrahedra vertices is computed. + +Without loss of generality, let us suppose a tetrahedral element $e$ +which receives a mechanical contribution from both the capsule and vessels. The composite element stiffness matrix $\Mat{K}_e$ +is then computed as: +\begin{equation} +\Mat{K}_e = \Mat{K}_p + \Mat{J}_{v\rightarrow p}^\top \Mat{K}_v \Mat{J}_{v\rightarrow p} + \Mat{P}_{c\rightarrow p}^\top \Mat{K}_c \Mat{P}_{c\rightarrow p}. +\end{equation} + + +% +% \begin{eqnarray} +% \Mat{K}^m & = & \int_V \Mat{B}^T \Mat{E} \Mat{B} dV \label{mem1} \\ +% & = & h \int_A \Mat{B}^T \Mat{E} \Mat{B} dA \label{mem2} \\ +% & = & h A \Mat{B}^T \Mat{E} \Mat{B} \label{mem3} +% \end{eqnarray} +% % +% where $\Mat{B}$ is the strain-displacement matrix, $\Mat{E}$ the material +% matrix, $h$ is the thickness and $A$ area of the element. In the previous +% \eqref{mem2} follows from the fact that we assume constant thickness of the +% element and \eqref{mem3} follows from the fact that the strain-displacement +% matrix is constant in our case. The strain-displacement matrix for the CST +% element can be expressed as: +% % +% \begin{equation} +% \Mat{B} = \frac{1}{2A} \begin{bmatrix} +% y_{23} & 0 & y_{31} & 0 & y_{12} & 0 \\ +% 0 & x_{32} & 0 & x_{13} & 0 & x_{21} \\ +% x_{32} & y_{23} & x_{13} & y_{31} & x_{21} & y_{12} +% \end{bmatrix} +% \end{equation} +% % +% The values $x_{ij} = x_i - x_j$ and $y_{ij} = y_i - y_j$ are computed from +% the $x$ or $y$ coordinates of the nodes $i,j$ of the triangular element. +% The reader can refer to the respective literature~\cite{Felippa2003} for more thorough +% description. +% +% Similarly as with model of parenchyma we use linear elastic material and employ +% the corotational formulation for the CST elements. + +%}}} + +%\subsection{Mechanical Coupling between Parenchyma and Capsule} %{{{ +% The literature reports high cohesion between capsule and parenchyma. +% Based on this property we assume there is no relative motion of the capsule \wrt\ the parenchyma. +% Although an arbitrary surface mesh could be used to model the capsule, we exploit +% the fact that the parenchyma is modeled by tetrahedral elements having +% triangular faces. Thus, as the boundary of the volumetric mesh is already +% triangulated, we simply employ the triangles on the mesh surface to model the capsule. +% +% Using directly the boundary of the tetrahedral mesh does not only solve the +% problem of building the surface mesh, but has one more advantage: the nodes +% of the triangular mesh coincide with the nodes of the tetrahedral mesh, so no projection of one mesh onto the other is needed. +% and the stiffness matrices for capsule and parenchyma are then easily assembled together by adding the mechanical contribution +% of a triangle to the corresponding tetrahedron. +% % and solved as one system. +% % +% %\CD{The following may appear as "trivial"... maybe we can remove this part at the end if we need space} +% Without the loss of generality we can assume the tetrahedron consists of +% nodes $p_1, p_2, p_3$ and $p_4$ and the boundary triangle has nodes $p_1, p_2$ +% and $p_3$. We can reorder the degrees of freedom so that the stiffness +% matrix $\Mat{K}^t$ for the tetrahedron can be written as: +% % +% \begin{equation} +% \Mat{K}^t = \left[\begin{array}{c|c} +% \Mat{K}^t_{1-3,1-3} & \Mat{K}^t_{1-3,4} \\ +% \hline +% \Mat{K}^t_{4,1-3} & \Mat{K}^t_{4,4} \\. +% \end{array}\right] +% \end{equation} +% % +% Hence, the assembled stiffness matrix for the element is +% % +% \begin{equation} +% \Mat{K} = \left[\begin{array}{c|c} +% \Mat{K}^t_{1-3,1-3} & \Mat{K}^t_{1-3,4} \\ +% \hline +% \Mat{K}^t_{4,1-3} & \Mat{K}^t_{4,4} \\ +% \end{array}\right] +% + +% \left[\begin{array}{c|c} +% \Mat{K}^m & 0 \\ +% \hline +% 0 & 0 \\ +% \end{array}\right] +% \end{equation} +% % +% where $\Mat{K}^m$ is the stiffness matrix of the triangular membrane. +% +% The resulting system of linear equations is solved by direct solver based on Cholesky decomposition. + +%Alternatively, one can use a mechanical coupling similar to the one used in +%\cite{Peterlik2012} to be able to use an arbitrary surface mesh. Nevertheless, +%for conforming triangular mesh both methods lead to the same solution. + +%}}} + +%}}} + +% \subsection{Simulation} %{{{ +% The model has been implemented SOFA\footnote{www.sofa-framework.org} and a set of +% numerical simulations was performed. +%In this section we provide comparison of local deformations with the +%results reported in literature to validate the method. +%Second, to show that in spite of its very small thickness the membrane cannot be +%neglected even in the context of global deformations and its overall +%stiffness plays an important role, the model of +%the complete liver was subjected to global deformations. + +% During the contact with an instrument such as probe, needle, scalpel and others, +% specific deformations take place in the vicinity of +% the instrument. This type of deformation may not necessarily induce the +% deformation of the object as a whole and therefore can be considered as +% local. Correct material properties are not only important to quantify the +% displacement, but also play an important role in capturing the correct area of +% the deformation or its profile near the instrument. + +% Since the tube is in direct contact with the tissue, uni-lateral constraints with friction were chosen +% to model this interaction properly. We opted for a method based on \emph{non-linear complementarity problem} (NLCP) +% where the non-linearity is introduced due to the friction. The NLCP +% allows for solution of the Signorini's problem to avoid any interpenetration between the colliding +% objects (see~\cite{Duriez2006b} for details). Since NLCP requires explicitly the computation of compliance matrix which +% is homogeneous to the inverse of the stiffness matrix, we employed a direct solver based on LDL decomposition to +% solve the system and compute the inverse matrices. \ No newline at end of file diff --git a/doc/MMVR2014_obsolete/mmvr14.kilepr b/doc/MMVR2014_obsolete/mmvr14.kilepr new file mode 100644 index 0000000..9d770fa --- /dev/null +++ b/doc/MMVR2014_obsolete/mmvr14.kilepr @@ -0,0 +1,261 @@ +[General] +def_graphic_ext=eps +img_extIsRegExp=false +img_extensions=.eps .jpg .jpeg .png .pdf .ps .fig .gif +kileprversion=2 +kileversion=2.1.0 +lastDocument=figures.tex +masterDocument= +name=mmvr14 +pkg_extIsRegExp=false +pkg_extensions=.cls .sty .bbx .cbx .lbx +src_extIsRegExp=false +src_extensions=.tex .ltx .latex .dtx .ins + +[Tools] +MakeIndex= +QuickBuild= + +[document-settings,item:abstract.tex] +Bookmarks= +Encoding=UTF-8 +FoldedColumns= +FoldedLines= +Highlighting=LaTeX +Indentation Mode= +Mode=LaTeX +ReadWrite=true + +[document-settings,item:bibdata.bib] +Bookmarks= +Encoding=UTF-8 +FoldedColumns= +FoldedLines= +Highlighting=BibTeX +Indentation Mode=normal +Mode=BibTeX +ReadWrite=true + +[document-settings,item:conclusion.tex] +Bookmarks= +Encoding=UTF-8 +FoldedColumns= +FoldedLines= +Highlighting=LaTeX +Indentation Mode=normal +Mode=LaTeX +ReadWrite=true + +[document-settings,item:figures.tex] +Bookmarks=-1,23,28 +Encoding=UTF-8 +FoldedColumns= +FoldedLines= +Highlighting=LaTeX +Indentation Mode=normal +Mode=LaTeX +ReadWrite=true + +[document-settings,item:format.tex] +Bookmarks= +Encoding=UTF-8 +FoldedColumns= +FoldedLines= +Highlighting=LaTeX +Indentation Mode=normal +Mode=LaTeX +ReadWrite=true + +[document-settings,item:intro.tex] +Bookmarks= +Encoding=UTF-8 +FoldedColumns= +FoldedLines= +Highlighting=LaTeX +Indentation Mode= +Mode=LaTeX +ReadWrite=true + +[document-settings,item:method.tex] +Bookmarks= +Encoding=UTF-8 +FoldedColumns= +FoldedLines= +Highlighting=LaTeX +Indentation Mode=normal +Mode=LaTeX +ReadWrite=true + +[document-settings,item:mmvr14.tex] +Bookmarks= +Encoding=UTF-8 +FoldedColumns= +FoldedLines= +Highlighting=LaTeX +Indentation Mode=normal +Mode=LaTeX +ReadWrite=true + +[document-settings,item:results.tex] +Bookmarks=22,26 +Encoding=UTF-8 +FoldedColumns= +FoldedLines= +Highlighting=LaTeX +Indentation Mode=normal +Mode=LaTeX +ReadWrite=true + +[item:abstract.tex] +archive=true +column=0 +encoding=UTF-8 +highlight=LaTeX +line=12 +mode=LaTeX +open=false +order=2 + +[item:bibdata.bib] +archive=true +column=0 +encoding=UTF-8 +highlight=BibTeX +line=142 +mode=BibTeX +open=false +order=7 + +[item:conclusion.tex] +archive=true +column=0 +encoding=UTF-8 +highlight=LaTeX +line=0 +mode=LaTeX +open=false +order=6 + +[item:figures.tex] +archive=true +column=27 +encoding=UTF-8 +highlight=LaTeX +line=25 +mode=LaTeX +open=false +order=8 + +[item:format.tex] +archive=true +column=0 +encoding=UTF-8 +highlight=LaTeX +line=0 +mode=LaTeX +open=false +order=1 + +[item:intro.tex] +archive=true +column=103 +encoding=UTF-8 +highlight=LaTeX +line=52 +mode=LaTeX +open=false +order=3 + +[item:method.tex] +archive=true +column=30 +encoding=UTF-8 +highlight=LaTeX +line=0 +mode=LaTeX +open=false +order=4 + +[item:mmvr14.kilepr] +archive=true +column=0 +encoding= +highlight= +line=0 +mode= +open=false +order=-1 + +[item:mmvr14.tex] +archive=true +column=27 +encoding=UTF-8 +highlight=LaTeX +line=10 +mode=LaTeX +open=false +order=0 + +[item:results.tex] +archive=true +column=0 +encoding=UTF-8 +highlight=LaTeX +line=0 +mode=LaTeX +open=false +order=5 + +[view-settings,view=0,item:abstract.tex] +CursorColumn=0 +CursorLine=12 +JumpList= +ViMarks= + +[view-settings,view=0,item:bibdata.bib] +CursorColumn=0 +CursorLine=142 +JumpList= +ViMarks= + +[view-settings,view=0,item:conclusion.tex] +CursorColumn=0 +CursorLine=0 +JumpList= +ViMarks= + +[view-settings,view=0,item:figures.tex] +CursorColumn=27 +CursorLine=25 +JumpList= +ViMarks=a,28,0,b,-1,-1,c,-1,-1,d,23,0 + +[view-settings,view=0,item:format.tex] +CursorColumn=0 +CursorLine=0 +JumpList= +ViMarks= + +[view-settings,view=0,item:intro.tex] +CursorColumn=103 +CursorLine=52 +JumpList= +ViMarks= + +[view-settings,view=0,item:method.tex] +CursorColumn=30 +CursorLine=0 +JumpList= +ViMarks= + +[view-settings,view=0,item:mmvr14.tex] +CursorColumn=27 +CursorLine=10 +JumpList= +ViMarks= + +[view-settings,view=0,item:results.tex] +CursorColumn=0 +CursorLine=0 +JumpList= +ViMarks=a,22,0,b,26,0 diff --git a/doc/MMVR2014_obsolete/mmvr14.spl b/doc/MMVR2014_obsolete/mmvr14.spl new file mode 100644 index 0000000..e69de29 diff --git a/doc/MMVR2014_obsolete/mmvr14.tex b/doc/MMVR2014_obsolete/mmvr14.tex new file mode 100644 index 0000000..3735de8 --- /dev/null +++ b/doc/MMVR2014_obsolete/mmvr14.tex @@ -0,0 +1,36 @@ +\documentclass[final,times,twocolumn,3p]{elsarticle} + +\title{Complete Real-Time Liver Model Including Glisson's Capsule, Vascularization and Parenchyma} + +\author[IHU]{Igor Peterl\'ik} +\author[Masaryk]{Tom\'a\v{s} Golembiovsk\'y} +\author[Inria]{Christian Duriez} +\author[Inria]{St\'ephane Cotin} + +\address[IHU]{Institut Hospitalo-Universitaire, Strasbourg, France} +\address[Masaryk]{Masaryk University} +\address[Inria]{SHACRA team, Inria, France} + +\input{format} + +\begin{document}% +\input{abstract}% +% +\input{intro}% +% +\input{method}% +% +%\addtolength{\textheight}{-1cm} +\input{results}% +% +\input{conclusion}% +% +\section{References}% +% +\bibliographystyle{plain} +\bibliography{bibdata}% +% +\input{figures}% +% + +\end{document} diff --git a/doc/MMVR2014_obsolete/registered.png b/doc/MMVR2014_obsolete/registered.png new file mode 100644 index 0000000..1967a1e Binary files /dev/null and b/doc/MMVR2014_obsolete/registered.png differ diff --git a/doc/MMVR2014_obsolete/results.tex b/doc/MMVR2014_obsolete/results.tex new file mode 100644 index 0000000..37f1311 --- /dev/null +++ b/doc/MMVR2014_obsolete/results.tex @@ -0,0 +1,104 @@ +\section{Results} %{{{ +\subsection{Aspiration Test} +% As the first step, we evaluate the influence of the Glisson's capsule on the mechanical response of the tissue during +% the aspiration test. +In~\cite{Hollenstein2006} an \emph{aspiration test} is presented to quantify the local influence of the Glisson's on tissue behaviour. +The aspiration device consists of a tube having 1\,cm in diameter and allows to +control the pressure inside the tube. The test is performed by +attaching the tube to the tissue and measuring the tissue response. We +set up a simulation in SOFA to reproduce the experiment (see +Fig.~\ref{fig-aspiration1}): we meshed a 15$\times$15$\times$15\,mm$^3$ +cube representing the tissue resulting in 2648 tetrahedra. Then we attached a 1\,cm tube +and applied a pressure of 3\,kPa inside the tube. The contacts between the tube and tissue sample were modeled using +an approach based on non-linear complementarity problem presented in~\cite{Duriez2006b} which provides a solution for +the Signorini's problem while taking into account friction between the objects. +% objects + +According to~\cite{Hollenstein2006} the influence of the capsule is significant: modeling +only the parenchyma without considering the membrane results in overestimation of the deformation by a factor of 2 to 3. +In order to verify this observation, we performed a simulation using capsule parameters measured experimentally on +ex-vivo pig liver~\cite{Umale2011}: Young's modulus of the membrane was set to $E_c$=8.22\,MPa and thickness was +$t_c$=20\,$\mu$m. +Since the values for parenchyma elasticity reported in the literature vary significantly being usually reported between 2\,kPa to 5\,kPa, +we employed a value $E_p$=3.5\,kPa for the Young's modulus of the parenchyma. + +In Fig.~\ref{fig-aspiration2} the profiles of cuts in the middle of the +test cube are presented showing significantly larger deformation in the model without capsule assuming that the same negative pressure was applied +on the tissue surface inside the tube. Moreover, it can be observed that the deformation without capsule is overestimated by a factor +close to 2, which is in perfect agreement with the results reported in~\cite{Hollenstein2006}. +Fig.~\ref{fig-aspiration3} presents the evolution of displacement in time at central node on the cube surface showing clear the effect of increased combined stiffness. + +Further, we employed the simulation to reproduce the displacements values obtained via simulation in~\cite{Hollenstein2006,Nava2008}. +Whereas the simulation in the referenced work was done on a mesh composed of tetrahedral elements for both the parenchyma +and the capsule, we employ the membrane CST elements. + +Since the Young's moduli of neither parenchyma ($E_p$) nor capsule ($E_c$) were specified exactly, we obtained both as follows: first, +we performed a set of simulations without the capsule for different values of $E_p$: the value that provided a good match +with reported displacements was $E_p$=30\,kPa. +Then, we fixed the thickness of the capsule to be $t$=93\,$\mu$m (reported as the average value in the paper) and +using $E_p$=30\,kPa, we ran the simulation repeatedly using the model with the capsule. In each simulation we +used different value $E_c$ of the Young's modulus for the capsule in order to minimize the displacement error w.r.t. the +reported values. The minimal value of error (not exceeding 1\%) was obtained for $E_c$=3\,MPa. This +value lies in the range of capsule elasticity coefficients reported by experimental measurements. + +% % % %Moreover, we are able to reproduce +% % % %the measurements presented in~\cite{Hollenstein2006,Nava2008} with less than 1\% error. +% % % %We do not model the time-dependent behaviour though. +% % % %In this simulation we prescribe the the internal pressure of 30\,kPa. The other +% % % %parameters of the model were obtained like this: First we fix the stiffness of +% % % %parenchyma to $E_p$=30\,kPa to match the scenerio without capsule. Then, +% % % %assuming the thickness $t$=93\,$\mu$m of the capsule (reported as average in +% % % %the paper) we run several simulations with different capsule stiffness $E_c$. +% % % %We have found the lowest error is when $E_c$=3\,MPa. All the stiffness +% % % %parameters lie within the ranges measured in the paper. +% % % +% % % %In this case the simulation was performed with the pressure of 30\,kPa and with +% % % %the following elastic parameters: $E_p$=30\,kPa for parenchyma and $E_c$=3\,MPa +% % % %and $t$=93\,$\mu$m for capsule. +% % % %All the values lie within the measurements +% % % %specified in the paper. \TG{add figure like Fig. 2?} +% % % +% % % %The influence of the capsule on local level has been published in literature +% % % %before. However, to our knowledge it's influence on global scale deformation +% % % %has not been studied yet. We believe that the capsule has non-negligible impact +% % % %also on global level. + +% In the scenario presented in this paper, we focus on local influence of the capsule. +% Nevertheless, it is possible to employ the actual model to demonstrate the global +% impact of the capsule and to further validate the accuracy of such a complete model w.r.t. experimental measures. +% Detailed description of such validation is however beyond the scope of this paper. +% In spite of this we would like to emphasize that we have already integrated the +% capsule model with vascularized liver model described in~\cite{Peterlik2012}. +% Adding the capsule did not affect the +% performance significantly: a visual refresh rate exceeding 25\,FPS was achieved on a +% PC with CPU Intel i7 running at 3.00 GHz. +% This suggests that the proposed technique is compatible with real-time simulation of whole +% organ while modeling the local properties accurately. + +%In our future work we need to validate the model in the +%context of global and local deformations. This task is challenging because +%comparing in vivo measurements with the simulation is difficult due to complex +%boundary conditions. +%\TG{ex-vivo: no information abou vessels; phantoms: cannot model capsule} + +%}}} + + +\subsection{Global Deformation of Complete Model} +The complete model was constructed using contrast-enhanced CT data acquired on a female pig. +The liver and hepatic vein were segmented using semi-automatic methods available in ITKSnap~\footnote{www.itksnap.org}. +A tetrahedral mesh was obtained from the segmented maps using CGAL~\footnote{www.cgal.org}. +The semi-automatic method presented in~\cite{Peterlik2012} was +then applied to the segmented map of the hepatic vein, resulting in linked-beam model. +Finally, the model of the Glisson's capsule was constructed using the surface elements extracted from the volume mesh. +%described in section~\ref{ss:capsuleModel} over the surface triangles extracted from the tetrahedral mesh. +The complete model composed of 4266 tetrahedra, 188 beams and 1284 triangles was +used in simulation where external force representing the gravity was applied to the model, +resulting in large deformations mainly in the area of lobes. The refresh rate of 22\,FPS +was achieved on a desktop computer with Intel i7 CPU running at 3.4\,GHz and 8\,GB of memory. +The simulation with gravity was also used as a first demonstration of the global influence of the capsule. +In Fig.~\ref{f:gravity}a, the models with capsule (red) and without (yellow) are depicted after being +deformed due to the gravity, showing a significant difference between the two models. + + + diff --git a/doc/MMVR2014_obsolete/vrst2013.pdf b/doc/MMVR2014_obsolete/vrst2013.pdf new file mode 100644 index 0000000..bcb8712 Binary files /dev/null and b/doc/MMVR2014_obsolete/vrst2013.pdf differ diff --git a/doc/Media2013/Makefile b/doc/Media2013/Makefile new file mode 100644 index 0000000..bbcd1a6 --- /dev/null +++ b/doc/Media2013/Makefile @@ -0,0 +1,179 @@ +# variables: +# draft 1 to make draft version +# comments 1 to show comments in the output +# itype dvi/pdf - type of intime build +# +# Rtargets is timestamp file used to prevent R based images from rebuilding all +# the time +# +# If you get 'No rule to make target foo.pdf needed for all' error check the bib file name + +FILES:=$(shell ls *.tex | sed 's/\.tex$$//') +BIBFILE:=bibdata + + +TMPDIR=tmp +LATEXARGS=-halt-on-error -interaction=nonstopmode -file-line-error -output-directory="$(TMPDIR)" + +LATEX=/usr/bin/latex $(LATEXARGS) +PDFLATEX=/usr/bin/pdflatex $(LATEXARGS) +DVIPS=/usr/bin/dvips +DVIPDF=/usr/bin/dvipdf +BIBTEX=/usr/bin/bibtex + +SHELL=/bin/bash +RM=rm -fv +CP=cp -v + +# Build type for intime target +ifeq ($(itype),) +itype=dvi +endif + +# Display for view-* targets +ifneq ($(disp),) +DISP=DISPLAY=$(disp) +endif + +# Temporary directory +ifeq ($(TMPDIR),) +TMPDIR="tmp" +endif + +# 'comments' variable +ifneq ($(comments),1) +comments=0 +endif + +TEXCMDS=\newcount\DoComments\DoComments=$(comments) + + +TEXFILES=$(patsubst %,%.tex, $(FILES)) +PDFFILES=$(patsubst %,%.pdf, $(FILES)) +PSFILES=$(patsubst %,%.ps, $(FILES)) + +comma:= , +empty:= +space:= $(empty) $(empty) +ifeq ($(space),$(findstring $(space),$(FILES))) + FILEPAT={$(subst $(space),$(comma),$(FILES))} +else + FILEPAT=$(FILES) +endif + + +all: $(PDFFILES) #$(PSFILES) + +## Real targets ############################################################## + +# TODO: dvips removes .dvi file if I do: make clean && makes foo.ps +%.ps: %.dvi + HOME=`pwd` $(DVIPS) -o $@ $< + +# NOTE: we need to remove old .toc file or hyperref breaks down terribly +# -- 2010-09-15 is it still valid? +%.pdf: %.tex $(BIBFILE).bib + export HOME=`pwd`; \ + export TEXMFLOCAL=`pwd`/texmf:`kpsexpand '$$TEXMFLOCAL'`; \ + mkdir -p "$(TMPDIR)" && \ + $(PDFLATEX) '\def\GraphicsType{pdftex}$(TEXCMDS)\input $*' ; \ + BIBINPUTS=.:$(TMPDIR) $(BIBTEX) $(TMPDIR)/$* && \ + $(PDFLATEX) '\def\GraphicsType{pdftex}$(TEXCMDS)\input $*' && \ + $(PDFLATEX) '\def\GraphicsType{pdftex}$(TEXCMDS)\input $*' && \ + $(CP) $(TMPDIR)/$@ . + +%.dvi: %.tex $(BIBFILE).bib + export HOME=`pwd`; \ + export TEXMFLOCAL=`pwd`/texmf:`kpsexpand '$$TEXMFLOCAL'`; \ + mkdir -p "$(TMPDIR)" && \ + $(LATEX) '$(TEXCMDS)\input $*' ; \ + BIBINPUTS=.:$(TMPDIR) $(BIBTEX) $(TMPDIR)/$* && \ + $(LATEX) '$(TEXCMDS)\input $*' && \ + $(LATEX) '$(TEXCMDS)\input $*' && \ + $(CP) $(TMPDIR)/$@ . + +# Default Arguments + +INKSCAPE_EPS= +INKSCAPE_PDF=--export-background=\#ffffff --export-dpi=800 + +## Dia +%.eps: %.dia + dia -t eps $< + +%.png: %.dia + dia -t png $< + +## Images via ImageMagick +%.eps: %.png + convert $< $@ + +%.eps: %.jpg + convert $< $@ + +%.eps: %.pdf + convert $< $@ + +%.pdf: %.png + convert $< $@ + +## Inkscape +#TODO: inkscape does not return error values! +%.eps: %.svg + inkscape $(INKSCAPE_EPS) --export-eps=$@ $<; [ -f "$@" ] + +%.pdf: %.svg + inkscape $(INKSCAPE_PDF) --export-pdf=$@ $<; [ -f "$@" ] + +%.pdf_tex: %.svg + inkscape $(INKSCAPE_PDF) --export-latex --export-pdf=$*.pdf $<; [ -f "$@" ] + + +## Other targets ############################################################# + +view: view-dvi + +# TODO: add 'file' argument +view-dvi: + @if [ -z "$(file)" ] ; then \ + echo "Don't know which file, use 'make file= $@' to tell"; \ + false; \ + fi + HOME=`pwd` $(DISP) exec xdvi -q -watchfile 5 $(file).dvi + +# TODO: add 'file' argument +view-ps: + @if [ -z "$(file)" ] ; then \ + echo "Don't know which file, use 'make file= $@' to tell"; \ + false; \ + fi + #HOME=`pwd` $(DISP) gv -center -watch -widgetless $(FILE).ps + $(DISP) exec gv -center -watch -widgetless $(file).ps + +rebuild: clean all + +#$(TMPDIR)/$(FILE).{aux,log,ps,dvi,pdf,toc,bbl,blg} +# TODO: fix this, doesn't work if TMPDIR = '.' +clean: + $(RM) -r $(FILEPAT).{ps,dvi,pdf} missfont.log .texlive + [ "." != "$(TMPDIR)" ] && $(RM) -r "$(TMPDIR)" + +# following method is little bit consuming (lots of stat/read invocations) but +# it's most responsive so far +intime: + @FPAT="$(file)"; [ -z "$$FPAT" ] && FPAT="$(FILEPAT)"; \ + echo "Building $$FPAT.$(itype) (modify with: make itype= intime)"; echo; \ + export WATCH="$${FPAT}.tex $(BIBFILE).bib"; \ + declare -i last cur; \ + last=0; \ + cur=0; \ + while true ; do \ + while [ $$last -eq $$cur ] ; do \ + cur=`stat -c'%Z' $$(eval echo $$WATCH) | cut -d. -f1 | sort -r | head -n1`; \ + read -t 1 x && last=cur-1; \ + done ; \ + make $${FPAT}.$(itype); \ + last=$$cur; \ + done + +.PHONY: all clean rebuild view view-dvi view-ps intime diff --git a/doc/Media2013/bibdata.bib b/doc/Media2013/bibdata.bib new file mode 100644 index 0000000..01bbe85 --- /dev/null +++ b/doc/Media2013/bibdata.bib @@ -0,0 +1,197 @@ +@ARTICLE{Ahn2010, + author = {Bummo Ahn and Jung Kim}, + title = {Measurement and characterization of soft tissue behavior with + surface deformation and force response under large deformations}, + journal = {Medical Image Analysis}, + year = {2010}, + volume = {14}, + pages = {138-148}, + number = {2}, + doi = {10.1016/j.media.2009.10.006}, + issn = {1361-8415}, + keywords = {Soft tissue characterization, Medical simulation, Surface + deformation, Large deformation, Inverse finite element method (FEM) + optimization algorithm}, +} + +@article{Boltcheva2009, + author = {Boltcheva, Dobrina and Yvinec, Mariette and Boissonnat, Jean-Daniel}, + journal = {MICCAI}, + number = {Pt 2}, + pages = {283--90}, + title = {{Mesh generation from 3D multi-material images.}}, + volume = {12}, + year = {2009} +} + +@ARTICLE{Duriez2006, + author = {Duriez, C. and Cotin, S. and Lenoir, J. and Neumann, P.}, + title = {New approaches to catheter navigation for interventional radiology + simulation1}, + journal = {Computer Aided Surgery}, + year = {2006}, + doi = {10.3109/10929080601090623}, +} + +@article{Duriez2006b, + author = {Christian Duriez and Frederic Dubois and Abderrahmane Kheddar and Claude Andriot}, + title = {Realistic Haptic Rendering of Interacting Deformable Objects in Virtual Environments}, + journal = {IEEE Transactions on Visualization and Computer Graphics}, + volume = {12}, + number = {1}, + year = {2006}, + issn = {1077-2626}, + pages = {36--47}, + publisher = {IEEE Educational Activities Department}, + address = {Piscataway, NJ, USA}, +} + +@ARTICLE{Felippa2003, + author = {Carlos A. Felippa}, + title = {A study of optimal membrane triangles with drilling freedoms}, + journal = {CMAME}, + year = {2003}, + volume = {192}, + pages = {2125-2168}, + number = {16-18}, + doi = {10.1016/S0045-7825(03)00253-6}, + issn = {0045-7825}, + keywords = {Finite elements, Templates, High performance, Drilling freedoms, Triangles, + Membrane, Plane stress, Shell, Assumed natural deviatoric strains, + Hierarchical models, Signatures, Clones}, +} + +@ARTICLE{Felippa2005, + author = {C.A. Felippa and B. Haugen}, + title = {A unified formulation of small-strain corotational finite elements: + I. Theory}, + journal = {CMAME}, + year = {2005}, + volume = {194}, + pages = {2285-2335}, + number = {21-24}, + doi = {10.1016/j.cma.2004.07.035}, + issn = {0045-7825}, + keywords = {Geometrically nonlinear structural analysis, Corotational description, + Shell finite elements}, +} + +@INPROCEEDINGS{Gao2009, + author={Zhan Gao and Kim, T. and James, D.L. and Desai, J.P.}, + booktitle={Automation Science and Engineering}, + title={Semi-automated soft-tissue acquisition and modeling for surgical simulation}, + year={2009}, + keywords={Biological materials;Biological tissues;Computational modeling;Computer simulation;Deformable models;Liver;Materials testing;Mechanical factors;Performance evaluation;Surgery;biological tissues;biomechanics;computer animation;deformation;eigenvalues and eigenfunctions;liver;medical computing;stress-strain relations;surgery;automatic code generation;compression;computer animations;deformation;eigenvalue degeneracies;element inversion;logarithmic Ogden model;mechanical properties;patient-specific variations;porcine liver tissue;semiautomated method;semiautomated soft-tissue acquisition;shear;stress-strain relations;surgical simulation;tension;}, + doi={10.1109/COASE.2009.5234158}, +} + +@INCOLLECTION{Hollenstein2006, + author = {Hollenstein, Marc and Nava, Alessandro and Valtorta, Davide and + Snedeker, Jess G. and Mazza, Edoardo}, + title = {Mechanical Characterization of the Liver Capsule and Parenchyma}, + booktitle = {Biomedical Simulation}, + publisher = {Springer Berlin Heidelberg}, + year = {2006}, + volume = {4072}, + series = {LNCS}, + pages = {150-158}, + doi = {10.1007/11790273_17}, + isbn = {978-3-540-36009-4}, +} + +@article{Kerdok2006, + title = "Effects of perfusion on the viscoelastic characteristics of liver", + journal = "Journal of Biomechanics", + volume = "39", + number = "12", + pages = "2221-2231", + year = "2006", + issn = "0021-9290", + doi = "10.1016/j.jbiomech.2005.07.005", + author = "Amy E. Kerdok and Mark P. Ottensmeyer and Robert D. Howe", + keywords = "Perfusion", + keywords = "Viscoelastic", + keywords = "Indentation", + keywords = "Creep", + keywords = "Liver", + keywords = "Large strain" +} + +@ARTICLE{Nava2008, + author = {A. Nava and E. Mazza and M. Furrer and P. Villiger and W.H. Reinhart}, + title = {In vivo mechanical characterization of human liver}, + journal = {Medical Image Analysis}, + year = {2008}, + volume = {12}, + pages = {203-216}, + number = {2}, + doi = {10.1016/j.media.2007.10.001}, + issn = {1361-8415}, + keywords = {Liver, Mechanical properties, In vivo, Constitutive models, Experiment}, +} + +@INCOLLECTION{Marchesseau2010, + author = {Marchesseau, Stéphanie and Heimann, Tobias and Chatelin, Simon and + Willinger, Rémy and Delingette, Hervé}, + title = {Multiplicative Jacobian Energy Decomposition Method for Fast Porous + Visco-Hyperelastic Soft Tissue Model}, + booktitle = {MICCAI 2010}, + year = {2010}, + volume = {6361}, + series = {LNCS}, + pages = {235-242}, + doi = {10.1007/978-3-642-15705-9_29}, + isbn = {978-3-642-15704-2}, +} + +@INPROCEEDINGS{Nesme2005, + author = {Nesme, Matthieu and Payan, Yohan and Faure, Fran\c{c}ois}, + title = {Efficient, Physically Plausible Finite Elements}, + booktitle = {Eurographics (short papers)}, + year = {2005}, + editor = {J. Dingliana and F. Ganovelli}, + month = {august}, + keywords = {animation, physical model, elasticity, finite elements}, +} + +@INPROCEEDINGS{Peterlik2012, + author = {Peterl\'{i}k, Igor and Duriez, Christian and Cotin, St\'{e}phane}, + title = {Modeling and Real-Time Simulation of a Vascularized Liver Tissue}, + booktitle = {MICCAI + 2012}, + year = {2012}, + volume = {7510}, + series = {LNCS}, + pages = {50--57}, + doi = {10.1007/978-3-642-33415-3_7}, + isbn = {978-3-642-33414-6}, +} + +@BOOK{Przemieniecki1985, + author = {J. S. Przemieniecki}, + title = {Theory of Matrix Structural Analysis}, + note = {reprint of Mc-Graw Hill (1968)}, + year = {1985}, +} + +@ARTICLE{Umale2011, + author = {Sagar Umale and Simon Chatelin and Nicolas Bourdet and Caroline Deck + and Michele Diana and Parag Dhumane and Luc Soler and Jacques Marescaux + and Remy Willinger}, + title = {Experimental in vitro mechanical characterization of porcine Glisson's + capsule and hepatic veins}, + journal = {Journal of Biomechanics}, + year = {2011}, + volume = {44}, + number = {9}, + doi = {10.1016/j.jbiomech.2011.03.029}, + issn = {0021-9290}, + keywords = {Glisson's capsule}, +} + +@PHDTHESIS{Umale2013, + author = {Sagar Umale}, + title = {Characterization and Modeling of Abdominal Organs}, + school = {Universit\'{e} de Strasbourg}, + year = {2013}, +} diff --git a/doc/Media2013/elsarticle.cls b/doc/Media2013/elsarticle.cls new file mode 100644 index 0000000..4da7b5c --- /dev/null +++ b/doc/Media2013/elsarticle.cls @@ -0,0 +1,809 @@ +%% +%% This is file `elsarticle.cls', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% elsarticle.dtx (with options: `class') +%% +%% Copyright 2007, 2008, 2009 Elsevier Ltd +%% +%% This file is part of the 'Elsarticle Bundle'. +%% ------------------------------------------- +%% +%% It may be distributed under the conditions of the LaTeX Project Public +%% License, either version 1.2 of this license or (at your option) any +%% later version. The latest version of this license is in +%% http://www.latex-project.org/lppl.txt +%% and version 1.2 or later is part of all distributions of LaTeX +%% version 1999/12/01 or later. +%% +%% The list of all files belonging to the 'Elsarticle Bundle' is +%% given in the file `manifest.txt'. +%% +%% +%% $Id: elsarticle.dtx 19 2009-12-17 07:07:52Z rishi $ +%% + \def\RCSfile{elsarticle}% + \def\RCSversion{1.20b}% + \def\RCSdate{2009/09/17}% + \def\@shortjnl{\relax} + \def\@journal{Elsevier Ltd} \def\@company{Elsevier Ltd} + \def\@issn{000-0000} + \def\@shortjid{elsarticle} +\NeedsTeXFormat{LaTeX2e}[1995/12/01] +\ProvidesClass{\@shortjid}[\RCSdate, \RCSversion: \@journal] +\def\ABD{\AtBeginDocument} +\newif\ifpreprint \preprintfalse +\newif\iflongmktitle \longmktitlefalse + +\def\@blstr{1} +\newdimen\@bls +\@bls=\baselineskip + +\def\@finalWarning{% + *****************************************************\MessageBreak + This document is typeset in the CRC style which\MessageBreak + is not suitable for submission.\MessageBreak + \MessageBreak + Please typeset again using 'preprint' option\MessageBreak + for creating PDF suitable for submission.\MessageBreak + ******************************************************\MessageBreak +} + +\DeclareOption{preprint}{\global\preprinttrue + \gdef\@blstr{1}\xdef\jtype{0}% + \AtBeginDocument{\@twosidefalse\@mparswitchfalse}} +\DeclareOption{final}{\gdef\@blstr{1}\global\preprintfalse} +\DeclareOption{review}{\global\preprinttrue\gdef\@blstr{1.5}} +\DeclareOption{authoryear}{\xdef\@biboptions{round,authoryear}} +\DeclareOption{number}{\xdef\@biboptions{numbers}} +\DeclareOption{numbers}{\xdef\@biboptions{numbers}} +\DeclareOption{longtitle}{\global\longmktitletrue} +\DeclareOption{5p}{\xdef\jtype{5}\global\preprintfalse + \ExecuteOptions{twocolumn}} + \def\jtype{0} +\DeclareOption{3p}{\xdef\jtype{3}\global\preprintfalse} +\DeclareOption{1p}{\xdef\jtype{1}\global\preprintfalse + \AtBeginDocument{\@twocolumnfalse}} +\DeclareOption{times}{\IfFileExists{txfonts.sty}% + {\AtEndOfClass{\RequirePackage{txfonts}% + \gdef\ttdefault{cmtt}% + \let\iint\relax + \let\iiint\relax + \let\iiiint\relax + \let\idotsint\relax + \let\openbox\relax}}{\RequirePackage{times}}} +\ExecuteOptions{a4paper,10pt,oneside,onecolumn,number,preprint} +\DeclareOption*{\PassOptionsToClass{\CurrentOption}{article}} +\ProcessOptions +\LoadClass{article} +\RequirePackage{graphicx} +\let\comma\@empty +\let\tnotesep\@empty +\def\title#1{\gdef\@title{#1}} +\let\@title\@empty + +\def\elsLabel#1{\@bsphack\protected@write\@auxout{}% + {\string\Newlabel{#1}{\@currentlabel}}\@esphack} +\def\Newlabel#1#2{\expandafter\xdef\csname X@#1\endcsname{#2}} + +\def\elsRef#1{\@ifundefined{X@#1}{0}{\csname X@#1\endcsname}% +} + +\def\tnotemark[#1]{\textsuperscript{\@for\@@tmark:=#1\do{% + \edef\tnotenum{\@ifundefined{X@\@@tmark}{1}{\elsRef{\@@tmark}}}% + \ifcase\tnotenum\or\ding{73}\or,\ding{73}\ding{73}\fi}}% +} +\let\@tnotemark\@empty + +\let\@tnotes\@empty +\RequirePackage{pifont} +\newcounter{tnote} +\def\tnotetext[#1]#2{\g@addto@macro\@tnotes{% + \refstepcounter{tnote}\elsLabel{#1}% + \def\thefootnote{\ifcase\c@tnote\or\ding{73}\or\ding{73}\ding{73}\fi}% + \footnotetext{#2}}} + +\let\@nonumnotes\@empty +\def\nonumnote#1{\g@addto@macro\@nonumnotes{% + \let\thefootnote\relax\footnotetext{#1}}} + +\newcounter{fnote} +\def\fnmark[#1]{\let\comma\@empty + \def\@fnmark{\@for\@@fnmark:=#1\do{% + \edef\fnotenum{\@ifundefined{X@\@@fnmark}{1}{\elsRef{\@@fnmark}}}% + \unskip\comma\fnotenum\let\comma,}}% +} + +\let\@fnotes\@empty\let\@fnmark\@empty +\def\fntext[#1]#2{\g@addto@macro\@fnotes{% + \refstepcounter{fnote}\elsLabel{#1}% + \def\thefootnote{\thefnote}% + \global\setcounter{footnote}{\thefnote}% + \footnotetext{#2}}} + +\def\cormark[#1]{\edef\cnotenum{\elsRef{#1}}% + \unskip\textsuperscript{\sep\ifcase\cnotenum\or + $\ast$\or$\ast\ast$\fi\hspace{-1pt}}\let\sep=,} + +\let\@cormark\@empty +\let\@cornotes\@empty +\newcounter{cnote} +\def\cortext[#1]#2{\g@addto@macro\@cornotes{% + \refstepcounter{cnote}\elsLabel{#1}% + \def\thefootnote{\ifcase\thecnote\or$\ast$\or + $\ast\ast$\fi}% + \footnotetext{#2}}} + +\let\@corref\@empty +\def\corref#1{\edef\cnotenum{\elsRef{#1}}% + \edef\@corref{\ifcase\cnotenum\or + $\ast$\or$\ast\ast$\fi\hskip-1pt}} + +\def\fnref#1{\fnmark[#1]} +\def\tnoteref#1{\tnotemark[#1]} + +\def\resetTitleCounters{\c@cnote=0 + \c@fnote=0 \c@tnote=0 \c@footnote=0} + +\let\eadsep\@empty +\let\@elseads\@empty +\let\@elsuads\@empty +\let\@cormark\@empty +\def\hashchar{\expandafter\@gobble\string\~} +\def\underscorechar{\expandafter\@gobble\string\_} +\def\lbracechar{\expandafter\@gobble\string\{} +\def\rbracechar{\expandafter\@gobble\string\}} + +\def\ead{\@ifnextchar[{\@uad}{\@ead}} +\gdef\@ead#1{\bgroup\def\_{\string\underscorechar\space}% + \def\{{\string\lbracechar\space}% + \def~{\hashchar\space}% + \def\}{\string\rbracechar\space}% + \edef\tmp{\the\@eadauthor} + \immediate\write\@auxout{\string\emailauthor + {#1}{\expandafter\strip@prefix\meaning\tmp}}% + \egroup +} +\newcounter{ead} +\gdef\emailauthor#1#2{\stepcounter{ead}% + \g@addto@macro\@elseads{\raggedright% + \let\corref\@gobble + \eadsep\texttt{#1} (#2)\def\eadsep{\unskip,\space}}% +} +\gdef\@uad[#1]#2{\bgroup + \def~{\string\hashchar\space}% + \def\_{\string\underscorechar\space}% + \edef\tmp{\the\@eadauthor} + \immediate\write\@auxout{\string\urlauthor + {#2}{\expandafter\strip@prefix\meaning\tmp}}% + \egroup +} +\def\urlauthor#1#2{\g@addto@macro\@elsuads{\let\corref\@gobble% + \raggedright\eadsep\texttt{#1}\space(#2)% + \def\eadsep{\unskip,\space}}% +} + +\def\elsauthors{} +\def\pprinttitle{} +\let\authorsep\@empty +\let\sep\@empty +\newcounter{author} +\def\author{\@ifnextchar[{\@@author}{\@author}} + +\newtoks\@eadauthor +\def\@@author[#1]#2{\g@addto@macro\elsauthors{% + \def\baselinestretch{1}% + \authorsep#2\unskip\textsuperscript{%#1% + \@for\@@affmark:=#1\do{% + \edef\affnum{\@ifundefined{X@\@@affmark}{1}{\elsRef{\@@affmark}}}% + \unskip\sep\affnum\let\sep=,}% + \ifx\@fnmark\@empty\else\unskip\sep\@fnmark\let\sep=,\fi + \ifx\@corref\@empty\else\unskip\sep\@corref\let\sep=,\fi + }% + \def\authorsep{\unskip,\space}% + \global\let\sep\@empty\global\let\@corref\@empty + \global\let\@fnmark\@empty}% + \@eadauthor={#2} +} + +\def\@author#1{\g@addto@macro\elsauthors{\normalsize% + \def\baselinestretch{1}% + \upshape\authorsep#1\unskip\textsuperscript{% + \ifx\@fnmark\@empty\else\unskip\sep\@fnmark\let\sep=,\fi + \ifx\@corref\@empty\else\unskip\sep\@corref\let\sep=,\fi + }% + \def\authorsep{\unskip,\space}% + \global\let\@fnmark\@empty + \global\let\@corref\@empty + \global\let\sep\@empty}% + \@eadauthor={#1} +} + +\def\elsaddress{} +\def\addsep{\par\vskip6pt} +\def\address{\@ifnextchar[{\@@address}{\@address}} + +\def\@alph#1{% + \ifcase#1\or a\or b\or c\or d\or e\or f\or g\or h\or i\or j\or k\or + l\or m\or n\or o\or p\or q\or r\or s\or t\or u\or v\or w\or x\or + y\or z% + \or aa\or ab\or ac\or ad\or ae\or af\or ag\or ah\or ai\or aj\or + ak\or al\or am\or an\or ao\or ap\or aq\or ar\or as\or at\or au\or + av\or aw\or ax\or ay\or az% + \or ba\or bb\or bc\or bd\or be\or bf\or bg\or bh\or bi\or bj\or + bk\or bl\or bm\or bn\or bo\or bp\or bq\or br\or bs\or bt\or bu\or + bv\or bw\or bx\or by\or bz% + \or ca\or cb\or cc\or cd\or ce\or cf\or cg\or ch\or ci\or cj\or + ck\or cl\or cm\or cn\or co\or cp\or cq\or cr\or cs\or ct\or cu\or + cv\or cw\or cx\or cy\or cz% + \or da\or db\or dc\or dd\or de\or df\or dg\or dh\or di\or dj\or + dk\or dl\or dm\or dn\or do\or dp\or dq\or dr\or ds\or dt\or du\or + dv\or dw\or dx\or dy\or dz% + \or ea\or eb\or ec\or ed\or ee\or ef\or eg\or eh\or ei\or ej\or + ek\or el\or em\or en\or eo\or ep\or eq\or er\or es\or et\or eu\or + ev\or ew\or ex\or ey\or ez% + \or fa\or fb\or fc\or fd\or fe\or ff\or fg\or fh\or fi\or fj\or + fk\or fl\or fm\or fn\or fo\or fp\or fq\or fr\or fs\or ft\or fu\or + fv\or fw\or fx\or fy\or fz% + \or ga\or gb\or gc\or gd\or ge\or gf\or gg\or gh\or gi\or gj\or + gk\or gl\or gm\or gn\or go\or gp\or gq\or gr\or gs\or gt\or gu\or + gv\or gw\or gx\or gy\or gz% + \else\@ctrerr\fi} + +\newcounter{affn} +\renewcommand\theaffn{\alph{affn}} + +\long\def\@@address[#1]#2{\g@addto@macro\elsaddress{% + \def\baselinestretch{1}% + \refstepcounter{affn} + \xdef\@currentlabel{\theaffn} + \elsLabel{#1}% + \textsuperscript{\theaffn}#2\par}} + +\long\def\@address#1{\g@addto@macro\elsauthors{% + \def\baselinestretch{1}% + \addsep\footnotesize\itshape#1\def\addsep{\par\vskip6pt}% + \def\authorsep{\par\vskip8pt}}} + +\newbox\absbox +\renewenvironment{abstract}{\global\setbox\absbox=\vbox\bgroup + \hsize=\textwidth\def\baselinestretch{1}% + \noindent\unskip\textbf{Abstract} + \par\medskip\noindent\unskip\ignorespaces} + {\egroup} + +\newbox\keybox +\def\keyword{% + \def\sep{\unskip, }% + \def\MSC{\@ifnextchar[{\@MSC}{\@MSC[2000]}} + \def\@MSC[##1]{\par\leavevmode\hbox {\it ##1~MSC:\space}}% + \def\PACS{\par\leavevmode\hbox {\it PACS:\space}}% + \def\JEL{\par\leavevmode\hbox {\it JEL:\space}}% + \global\setbox\keybox=\vbox\bgroup\hsize=\textwidth + \normalsize\normalfont\def\baselinestretch{1} + \parskip\z@ + \noindent\textit{Keywords: } + \raggedright % Keywords are not justified. + \ignorespaces} +\def\endkeyword{\par \egroup} + +\newdimen\Columnwidth +\Columnwidth=\columnwidth + +\def\printFirstPageNotes{% + \iflongmktitle + \let\columnwidth=\textwidth\fi + \ifx\@tnotes\@empty\else\@tnotes\fi + \ifx\@nonumnotes\@empty\else\@nonumnotes\fi + \ifx\@cornotes\@empty\else\@cornotes\fi + \ifx\@elseads\@empty\relax\else + \let\thefootnote\relax + \footnotetext{\ifnum\theead=1\relax + \textit{Email address:\space}\else + \textit{Email addresses:\space}\fi + \@elseads}\fi + \ifx\@elsuads\@empty\relax\else + \let\thefootnote\relax + \footnotetext{\textit{URL:\space}% + \@elsuads}\fi + \ifx\@fnotes\@empty\else\@fnotes\fi + \iflongmktitle\if@twocolumn + \let\columnwidth=\Columnwidth\fi\fi +} + +\long\def\pprintMaketitle{\clearpage + \iflongmktitle\if@twocolumn\let\columnwidth=\textwidth\fi\fi + \resetTitleCounters + \def\baselinestretch{1}% + \printFirstPageNotes + \begin{center}% + \thispagestyle{pprintTitle}% + \def\baselinestretch{1}% + \Large\@title\par\vskip18pt + \normalsize\elsauthors\par\vskip10pt + \footnotesize\itshape\elsaddress\par\vskip36pt + \hrule\vskip12pt + \ifvoid\absbox\else\unvbox\absbox\par\vskip10pt\fi + \ifvoid\keybox\else\unvbox\keybox\par\vskip10pt\fi + \hrule\vskip12pt + \end{center}% + \gdef\thefootnote{\arabic{footnote}}% + } + +\def\printWarning{% + \mbox{}\par\vfill\par\bgroup + \fboxsep12pt\fboxrule1pt + \hspace*{.18\textwidth} + \fcolorbox{gray50}{gray10}{\box\warnbox} + \egroup\par\vfill\thispagestyle{empty} + \setcounter{page}{0} + \clearpage} + +\long\def\finalMaketitle{% + \resetTitleCounters + \def\baselinestretch{1}% + \MaketitleBox + \thispagestyle{pprintTitle}% + \gdef\thefootnote{\arabic{footnote}}% + } + +\long\def\MaketitleBox{% + \resetTitleCounters + \def\baselinestretch{1}% + \begin{center}% + \def\baselinestretch{1}% + \Large\@title\par\vskip18pt + \normalsize\elsauthors\par\vskip10pt + \footnotesize\itshape\elsaddress\par\vskip36pt + \hrule\vskip12pt + \ifvoid\absbox\else\unvbox\absbox\par\vskip10pt\fi + \ifvoid\keybox\else\unvbox\keybox\par\vskip10pt\fi + \hrule\vskip12pt + \end{center}% + } + +\def\FNtext#1{\par\bgroup\footnotesize#1\egroup} +\newdimen\space@left +\def\alarm#1{\typeout{******************************}% + \typeout{#1}% + \typeout{******************************}% +} +\long\def\getSpaceLeft{%\global\@twocolumnfalse% + \global\setbox0=\vbox{\hsize=\textwidth\MaketitleBox}% + \global\setbox1=\vbox{\hsize=\textwidth + \let\footnotetext\FNtext + \printFirstPageNotes}% + \xdef\noteheight{\the\ht1}% + \xdef\titleheight{\the\ht0}% + \@tempdima=\vsize + \advance\@tempdima-\noteheight + \advance\@tempdima-1\baselineskip +} + + \skip\footins=24pt + +\newbox\els@boxa +\newbox\els@boxb + +\ifpreprint + \def\maketitle{\pprintMaketitle} + \else + \ifnum\jtype=1 + \def\maketitle{% + \iflongmktitle\getSpaceLeft + \global\setbox\els@boxa=\vsplit0 to \@tempdima + \box\els@boxa\par\resetTitleCounters + \thispagestyle{pprintTitle}% + \printFirstPageNotes + \box0% + \else + \finalMaketitle\printFirstPageNotes + \fi + \gdef\thefootnote{\arabic{footnote}}}% + \else + \ifnum\jtype=5 + \def\maketitle{% + \iflongmktitle\getSpaceLeft + \global\setbox\els@boxa=\vsplit0 to \@tempdima + \box\els@boxa\par\resetTitleCounters + \thispagestyle{pprintTitle}% + \printFirstPageNotes + \twocolumn[\box0]%\printFirstPageNotes + \else + \twocolumn[\finalMaketitle]\printFirstPageNotes + \fi + \gdef\thefootnote{\arabic{footnote}}} + \else + \if@twocolumn + \def\maketitle{% + \iflongmktitle\getSpaceLeft + \global\setbox\els@boxa=\vsplit0 to \@tempdima + \box\els@boxa\par\resetTitleCounters + \thispagestyle{pprintTitle}% + \printFirstPageNotes + \twocolumn[\box0]% + \else + \twocolumn[\finalMaketitle]\printFirstPageNotes + \fi + \gdef\thefootnote{\arabic{footnote}}}% + \else + \def\maketitle{% + \iflongmktitle\getSpaceLeft + \global\setbox\els@boxa=\vsplit0 to \@tempdima + \box\els@boxa\par\resetTitleCounters + \thispagestyle{pprintTitle}% + \printFirstPageNotes + \box0% + \else + \finalMaketitle\printFirstPageNotes + \fi + \gdef\thefootnote{\arabic{footnote}}}% + \fi + \fi + \fi +\fi +\def\ps@pprintTitle{% + \let\@oddhead\@empty + \let\@evenhead\@empty + \def\@oddfoot{\footnotesize\itshape + Preprint submitted to \ifx\@journal\@empty Elsevier + \else\@journal\fi\hfill\today}% + \let\@evenfoot\@oddfoot} +\def\@seccntDot{.} +\def\@seccntformat#1{\csname the#1\endcsname\@seccntDot\hskip 0.5em} + +\renewcommand\section{\@startsection {section}{1}{\z@}% + {18\p@ \@plus 6\p@ \@minus 3\p@}% + {9\p@ \@plus 6\p@ \@minus 3\p@}% + {\normalsize\bfseries\boldmath}} +\renewcommand\subsection{\@startsection{subsection}{2}{\z@}% + {12\p@ \@plus 6\p@ \@minus 3\p@}% + {3\p@ \@plus 6\p@ \@minus 3\p@}% + {\normalfont\normalsize\itshape}} +\renewcommand\subsubsection{\@startsection{subsubsection}{3}{\z@}% + {12\p@ \@plus 6\p@ \@minus 3\p@}% + {\p@}% + {\normalfont\normalsize\itshape}} + +\def\paragraph{\secdef{\els@aparagraph}{\els@bparagraph}} +\def\els@aparagraph[#1]#2{\elsparagraph[#1]{#2.}} +\def\els@bparagraph#1{\elsparagraph*{#1.}} + +\newcommand\elsparagraph{\@startsection{paragraph}{4}{0\z@}% + {10\p@ \@plus 6\p@ \@minus 3\p@}% + {-6\p@}% + {\normalfont\itshape}} +\newdimen\leftMargin +\leftMargin=2em +\newtoks\@enLab %\newtoks\@enfont +\def\@enQmark{?} +\def\@enLabel#1#2{% + \edef\@enThe{\noexpand#1{\@enumctr}}% + \@enLab\expandafter{\the\@enLab\csname the\@enumctr\endcsname}% + \@enloop} +\def\@enSpace{\afterassignment\@enSp@ce\let\@tempa= } +\def\@enSp@ce{\@enLab\expandafter{\the\@enLab\space}\@enloop} +\def\@enGroup#1{\@enLab\expandafter{\the\@enLab{#1}}\@enloop} +\def\@enOther#1{\@enLab\expandafter{\the\@enLab#1}\@enloop} +\def\@enloop{\futurelet\@entemp\@enloop@} +\def\@enloop@{% + \ifx A\@entemp \def\@tempa{\@enLabel\Alph }\else + \ifx a\@entemp \def\@tempa{\@enLabel\alph }\else + \ifx i\@entemp \def\@tempa{\@enLabel\roman }\else + \ifx I\@entemp \def\@tempa{\@enLabel\Roman }\else + \ifx 1\@entemp \def\@tempa{\@enLabel\arabic}\else + \ifx \@sptoken\@entemp \let\@tempa\@enSpace \else + \ifx \bgroup\@entemp \let\@tempa\@enGroup \else + \ifx \@enum@\@entemp \let\@tempa\@gobble \else + \let\@tempa\@enOther + \fi\fi\fi\fi\fi\fi\fi\fi + \@tempa} +\newlength{\@sep} \newlength{\@@sep} +\setlength{\@sep}{.5\baselineskip plus.2\baselineskip + minus.2\baselineskip} +\setlength{\@@sep}{.1\baselineskip plus.01\baselineskip + minus.05\baselineskip} +\providecommand{\sfbc}{\rmfamily\upshape} +\providecommand{\sfn}{\rmfamily\upshape} +\def\@enfont{\ifnum \@enumdepth >1\let\@nxt\sfn \else\let\@nxt\sfbc \fi\@nxt} +\def\enumerate{% + \ifnum \@enumdepth >3 \@toodeep\else + \advance\@enumdepth \@ne + \edef\@enumctr{enum\romannumeral\the\@enumdepth}\fi + \@ifnextchar[{\@@enum@}{\@enum@}} +\def\@@enum@[#1]{% + \@enLab{}\let\@enThe\@enQmark + \@enloop#1\@enum@ + \ifx\@enThe\@enQmark\@warning{The counter will not be printed.% + ^^J\space\@spaces\@spaces\@spaces The label is: \the\@enLab}\fi + \expandafter\edef\csname label\@enumctr\endcsname{\the\@enLab}% + \expandafter\let\csname the\@enumctr\endcsname\@enThe + \csname c@\@enumctr\endcsname7 + \expandafter\settowidth + \csname leftmargin\romannumeral\@enumdepth\endcsname + {\the\@enLab\hskip\labelsep}% + \@enum@} +\def\@enum@{\list{{\@enfont\csname label\@enumctr\endcsname}}% + {\usecounter{\@enumctr}\def\makelabel##1{\hss\llap{##1}}% + \ifnum \@enumdepth>1\setlength{\topsep}{\@@sep}\else + \setlength{\topsep}{\@sep}\fi + \ifnum \@enumdepth>1\setlength{\itemsep}{0pt plus1pt minus1pt}% + \else \setlength{\itemsep}{\@@sep}\fi + %\setlength\leftmargin{\leftMargin}%%%{1.8em} + \setlength{\parsep}{0pt plus1pt minus1pt}% + \setlength{\parskip}{0pt plus1pt minus1pt} + }} + +\def\endenumerate{\par\ifnum \@enumdepth >1\addvspace{\@@sep}\else + \addvspace{\@sep}\fi \endlist} + +\def\sitem{\@noitemargtrue\@item[\@itemlabel *]} + +\def\itemize{\@ifnextchar[{\@Itemize}{\@Itemize[]}} + +\def\@Itemize[#1]{\def\next{#1}% + \ifnum \@itemdepth >\thr@@\@toodeep\else + \advance\@itemdepth\@ne + \ifx\next\@empty\else\expandafter\def\csname + labelitem\romannumeral\the\@itemdepth\endcsname{#1}\fi% + \edef\@itemitem{labelitem\romannumeral\the\@itemdepth}% + \expandafter\list\csname\@itemitem\endcsname + {\def\makelabel##1{\hss\llap{##1}}}% + \fi} +\def\newdefinition#1{% + \@ifnextchar[{\@odfn{#1}}{\@ndfn{#1}}}%] +\def\@ndfn#1#2{% + \@ifnextchar[{\@xndfn{#1}{#2}}{\@yndfn{#1}{#2}}} +\def\@xndfn#1#2[#3]{% + \expandafter\@ifdefinable\csname #1\endcsname + {\@definecounter{#1}\@newctr{#1}[#3]% + \expandafter\xdef\csname the#1\endcsname{% + \expandafter\noexpand\csname the#3\endcsname \@dfncountersep + \@dfncounter{#1}}% + \global\@namedef{#1}{\@dfn{#1}{#2}}% + \global\@namedef{end#1}{\@enddefinition}}} +\def\@yndfn#1#2{% + \expandafter\@ifdefinable\csname #1\endcsname + {\@definecounter{#1}% + \expandafter\xdef\csname the#1\endcsname{\@dfncounter{#1}}% + \global\@namedef{#1}{\@dfn{#1}{#2}}% + \global\@namedef{end#1}{\@enddefinition}}} +\def\@odfn#1[#2]#3{% + \@ifundefined{c@#2}{\@nocounterr{#2}}% + {\expandafter\@ifdefinable\csname #1\endcsname + {\global\@namedef{the#1}{\@nameuse{the#2}} + \global\@namedef{#1}{\@dfn{#2}{#3}}% + \global\@namedef{end#1}{\@enddefinition}}}} +\def\@dfn#1#2{% + \refstepcounter{#1}% + \@ifnextchar[{\@ydfn{#1}{#2}}{\@xdfn{#1}{#2}}} +\def\@xdfn#1#2{% + \@begindefinition{#2}{\csname the#1\endcsname}\ignorespaces} +\def\@ydfn#1#2[#3]{% + \@opargbegindefinition{#2}{\csname the#1\endcsname}{#3}\ignorespaces} +\def\@dfncounter#1{\noexpand\arabic{#1}} +\def\@dfncountersep{.} +\def\@begindefinition#1#2{\trivlist + \item[\hskip\labelsep{\bfseries #1\ #2.}]\upshape} +\def\@opargbegindefinition#1#2#3{\trivlist + \item[\hskip\labelsep{\bfseries #1\ #2\ (#3).}]\upshape} +\def\@enddefinition{\endtrivlist} + +\def\@begintheorem#1#2{\trivlist + \let\baselinestretch\@blstr + \item[\hskip \labelsep{\bfseries #1\ #2.}]\itshape} +\def\@opargbegintheorem#1#2#3{\trivlist + \let\baselinestretch\@blstr + \item[\hskip \labelsep{\bfseries #1\ #2\ (#3).}]\itshape} + +\def\newproof#1{% + \@ifnextchar[{\@oprf{#1}}{\@nprf{#1}}} +\def\@nprf#1#2{% + \@ifnextchar[{\@xnprf{#1}{#2}}{\@ynprf{#1}{#2}}} +\def\@xnprf#1#2[#3]{% + \expandafter\@ifdefinable\csname #1\endcsname + {\@definecounter{#1}\@newctr{#1}[#3]% + \expandafter\xdef\csname the#1\endcsname{% + \expandafter\noexpand\csname the#3\endcsname \@prfcountersep + \@prfcounter{#1}}% + \global\@namedef{#1}{\@prf{#1}{#2}}% + \global\@namedef{end#1}{\@endproof}}} +\def\@ynprf#1#2{% + \expandafter\@ifdefinable\csname #1\endcsname + {\@definecounter{#1}% + \expandafter\xdef\csname the#1\endcsname{\@prfcounter{#1}}% + \global\@namedef{#1}{\@prf{#1}{#2}}% + \global\@namedef{end#1}{\@endproof}}} +\def\@oprf#1[#2]#3{% + \@ifundefined{c@#2}{\@nocounterr{#2}}% + {\expandafter\@ifdefinable\csname #1\endcsname + {\global\@namedef{the#1}{\@nameuse{the#2}}% + \global\@namedef{#1}{\@prf{#2}{#3}}% + \global\@namedef{end#1}{\@endproof}}}} +\def\@prf#1#2{% + \refstepcounter{#1}% + \@ifnextchar[{\@yprf{#1}{#2}}{\@xprf{#1}{#2}}} +\def\@xprf#1#2{% + \@beginproof{#2}{\csname the#1\endcsname}\ignorespaces} +\def\@yprf#1#2[#3]{% + \@opargbeginproof{#2}{\csname the#1\endcsname}{#3}\ignorespaces} +\def\@prfcounter#1{\noexpand\arabic{#1}} +\def\@prfcountersep{.} +\def\@beginproof#1#2{\trivlist\let\baselinestretch\@blstr + \item[\hskip \labelsep{\scshape #1.}]\rmfamily} +\def\@opargbeginproof#1#2#3{\trivlist\let\baselinestretch\@blstr + \item[\hskip \labelsep{\scshape #1\ (#3).}]\rmfamily} +\def\@endproof{\endtrivlist} +\newcommand*{\qed}{\hbox{}\hfill$\Box$} + +\@ifundefined{@biboptions}{\xdef\@biboptions{numbers}}{} +\InputIfFileExists{\jobname.spl}{}{} +\RequirePackage[\@biboptions]{natbib} + +\newwrite\splwrite +\immediate\openout\splwrite=\jobname.spl +\def\biboptions#1{\def\next{#1}\immediate\write\splwrite{% + \string\g@addto@macro\string\@biboptions{% + ,\expandafter\strip@prefix\meaning\next}}} + +\let\baselinestretch=\@blstr + +\ifnum\jtype=1 + \RequirePackage{geometry} + \geometry{twoside, + paperwidth=210mm, + paperheight=297mm, + textheight=562pt, + textwidth=384pt, + centering, + headheight=50pt, + headsep=12pt, + footskip=12pt, + footnotesep=24pt plus 2pt minus 12pt, + } + \global\let\bibfont=\footnotesize + \global\bibsep=0pt + \if@twocolumn\global\@twocolumnfalse\fi +\else\ifnum\jtype=3 + \RequirePackage{geometry} + \geometry{twoside, + paperwidth=210mm, + paperheight=297mm, + textheight=622pt, + textwidth=468pt, + centering, + headheight=50pt, + headsep=12pt, + footskip=18pt, + footnotesep=24pt plus 2pt minus 12pt, + columnsep=2pc + } + \global\let\bibfont=\footnotesize + \global\bibsep=0pt + \if@twocolumn\input{fleqn.clo}\fi +\else\ifnum\jtype=5 + \RequirePackage{geometry} + \geometry{twoside, + paperwidth=210mm, + paperheight=297mm, + textheight=682pt, + textwidth=522pt, + centering, + headheight=50pt, + headsep=12pt, + footskip=18pt, + footnotesep=24pt plus 2pt minus 12pt, + columnsep=18pt + }% + \global\let\bibfont=\footnotesize + \global\bibsep=0pt + \input{fleqn.clo} + \global\@twocolumntrue +%% +%% End of option '5p' +%% +\fi\fi\fi +\def\journal#1{\gdef\@journal{#1}} + \let\@journal\@empty +\newenvironment{frontmatter}{}{\maketitle} + +\long\def\@makecaption#1#2{% + \vskip\abovecaptionskip\footnotesize + \sbox\@tempboxa{#1: #2}% + \ifdim \wd\@tempboxa >\hsize + #1: #2\par + \else + \global \@minipagefalse + \hb@xt@\hsize{\hfil\box\@tempboxa\hfil}% + \fi + \vskip\belowcaptionskip} + +\AtBeginDocument{\@ifpackageloaded{hyperref} + {\def\@linkcolor{blue} + \def\@anchorcolor{blue} + \def\@citecolor{blue} + \def\@filecolor{blue} + \def\@urlcolor{blue} + \def\@menucolor{blue} + \def\@pagecolor{blue} +\begingroup + \@makeother\`% + \@makeother\=% + \edef\x{% + \edef\noexpand\x{% + \endgroup + \noexpand\toks@{% + \catcode 96=\noexpand\the\catcode`\noexpand\`\relax + \catcode 61=\noexpand\the\catcode`\noexpand\=\relax + }% + }% + \noexpand\x + }% +\x +\@makeother\` +\@makeother\= +}{}} +%% +\def\appendixname{Appendix } +\renewcommand\appendix{\par + \setcounter{section}{0}% + \setcounter{subsection}{0}% + \setcounter{equation}{0} + \gdef\thefigure{\@Alph\c@section.\arabic{figure}}% + \gdef\thetable{\@Alph\c@section.\arabic{table}}% + \gdef\thesection{\appendixname~\@Alph\c@section}% + \@addtoreset{equation}{section}% + \gdef\theequation{\@Alph\c@section.\arabic{equation}}% + \addtocontents{toc}{\string\let\string\numberline\string\tmptocnumberline}{}{} +} + +%%%% \numberline width calculation for appendix. +\newdimen\appnamewidth +\def\tmptocnumberline#1{% + \setbox0=\hbox{\appendixname} + \appnamewidth=\wd0 + \addtolength\appnamewidth{2.5pc} + \hb@xt@\appnamewidth{#1\hfill} +} + +%% Added for work with amsrefs.sty + +\@ifpackageloaded{amsrefs}% + {} + {%\let\bibsection\relax% + \AtBeginDocument{\def\cites@b#1#2,#3{% + \begingroup[% + \toks@{\InnerCite{#2}#1}% + \ifx\@empty#3\@xp\@gobble\fi + \cites@c#3% +}}} +%% +%% Added for avoiding clash with cleveref.sty + +\@ifpackageloaded{cleveref}% + {} + {\def\tnotetext[#1]#2{\g@addto@macro\@tnotes{% + \refstepcounter{tnote}% + \immediate\write\@auxout{\string\Newlabel{#1}{\thetnote}} + \def\thefootnote{\ifcase\c@tnote\or\ding{73}\or\ding{73}\ding{73}\fi}% + \footnotetext{#2}}} +%%% + \def\fntext[#1]#2{\g@addto@macro\@fnotes{% + \refstepcounter{fnote}% + \immediate\write\@auxout{\string\Newlabel{#1}{\thefnote}} + \def\thefootnote{\thefnote}% + \global\setcounter{footnote}{\thefnote}% + \footnotetext{#2}}} +%%% + \def\cortext[#1]#2{\g@addto@macro\@cornotes{% + \refstepcounter{cnote}% + \immediate\write\@auxout{\string\Newlabel{#1}{\thecnote}} + \def\thefootnote{\ifcase\thecnote\or$\ast$\or + $\ast\ast$\fi}% + \footnotetext{#2}}} +} +\endinput +%% +%% End of file `elsarticle.cls'. diff --git a/doc/Media2013/media2013.tex b/doc/Media2013/media2013.tex new file mode 100644 index 0000000..4d9effd --- /dev/null +++ b/doc/Media2013/media2013.tex @@ -0,0 +1,670 @@ +%\documentclass[preprint,12pt]{elsarticle} + +%% Use the option review to obtain double line spacing +%% \documentclass[preprint,review,12pt]{elsarticle} + +%% Use the options 1p,twocolumn; 3p; 3p,twocolumn; 5p; or 5p,twocolumn +%% for a journal layout: +%% \documentclass[final,1p,times]{elsarticle} +%% \documentclass[final,1p,times,twocolumn]{elsarticle} +%% \documentclass[final,3p,times]{elsarticle} +\documentclass[final,3p,times,twocolumn]{elsarticle} +%% \documentclass[final,5p,times]{elsarticle} +%% \documentclass[final,5p,times,twocolumn]{elsarticle} + +\usepackage{amsmath} +%\usepackage{amssymb} +%\usepackage{amsthm} +%\usepackage{makeidx} +\usepackage{graphicx} +%\usepackage[pdftex]{graphicx} +\usepackage{subfig} + +%% natbib.sty is loaded by default. However, natbib options can be +%% provided with \biboptions{...} command. Following options are +%% valid: +%% +%% round - round parentheses are used (default) +%% square - square brackets are used [option] +%% curly - curly braces are used {option} +%% angle - angle brackets are used