diff --git a/profiles/desc/mbdyn_module.desc b/profiles/desc/mbdyn_module.desc
new file mode 100644
index 0000000000..d217ff2156
--- /dev/null
+++ b/profiles/desc/mbdyn_module.desc
@@ -0,0 +1,70 @@
+# Copyright 2022 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+# This file contains descriptions of MBDYN_MODULE USE_EXPAND flags.
+
+FMU - This is a module to import and cosimulation of FMUs, developed using FMI standards, for MBDyn
+aerodyn - This is MBDyn's module for the wind-turbine aerodynamics library AeroDyn
+asynchronous-machine - The purpose of this code is the simulation of an asynchronous electrical machine as a part of a multibody model
+autodiff-test - This element implements a inline joint with friction
+ballbearing-contact - ball bearing contact
+bullet - sci-physics/bullet module
+charm - This module implements a user-defined induced velocity element based on CDI's CHARM free wake
+constlaw-f90 - This directory contains an example of run-time loadable constitutive law written in Fortran 90
+constlaw-f95 - This directory contains an example of run-time loadable constitutive law written in Fortran 95
+constlaw - This directory contains an example of run-time loadable constitutive law
+cont-contact - continuous contact
+controller - controller module
+convtest - convergence test module
+cyclocopter - This module implements induced velocity models for cycloidal rotors
+damper-gandhi - Gandhi, F. and Chopra, I., "An analytical model for a nonlinear elastomeric lag damper and its effect on aeromechanical stability in hover" Journal of the American Helicopter Society, Vol. 39, 1994, pp. 59-69.
+damper-graall - GRAALL Damper Constitutive Law
+damper-hydraulic - Hydraulic Damper Constitutive Law
+damper - It implements a 1D constitutive law based on a generic nonlinear rheological formula, whose coefficients are computed by means of parameter identification from experimental measurements
+diff - diff drive module
+dot - dot language module
+drive-test - drive test module
+drive - example of run-time loadable drive
+dummy - Dummy module --- does nothing, used to test the infrastructure
+eu2phi - converts three Euler angles into the corresponding Euler vector
+fab-electric - Library of electric components for "digital fabrication" machines
+fab-motion - Library of motion transmission components for "digital fabrication" machines
+fab-sbearings - Library of bearings for "digital fabrication" machines
+fabricate - Library of components of "digital fabrication" machines
+flightgear - flightgear module
+friction - eXperimental friction model
+friction3 - eXperimental friction model (2nd try)
+hfelem - Harmonic Excitation Element
+hid - This module registers a file driver that captures the input from HID USB devices (only tested with some joysticks)
+hunt-crossley - HuntCrossley constitutive law
+hydrodynamic-plain-bearing - This module implements a hydrodynamic plain bearing according to Hans Juergen Butenschoen 1976 Das hydrodynamische zylindrische Gleitlager endlicher Breite unter instationaerer Belastung
+hydrodynamic-plain-bearing2 - module hydrodynamic plain bearing2
+imu - implements two uses of a IMU
+indvel - This module implements a dummy induced velocity model
+inline-friction - This element implements a inline joint with friction
+inplane-friction - In plane friction
+journal-bearing - This element implements a journal bearing with lugre friction
+leapmotion - leapmotion hand
+loadinc - load increment normalization
+marble - marble model for icecube robot
+md - MD module
+mds - mds module
+minmaxdrive - minmaxdrive module
+multi-step-drive - multi step drive module
+muscles - muscle module
+namespace - namespace module
+nodedistdrive - node dist drive module
+nonsmooth-node - Defines a unilateral constraint in form of a contact between a node and one or more planes, optionally with friction
+ns - ns1 module
+octave - octave module
+randdrive - rand drive module
+rollercoaster - rollercoaster module
+rotor-loose-coupling - rotor loose coupling
+scalarfunc - example of run-time loadable scalar function
+switch-drive - switch drive module
+tclpgin - tcl plugin
+triangular-contact - This element implements unilateral contact with friction between an arbitrary rigid body, represented by a triangular mesh, and a set of nodes with arbitrary offsets
+udunits - This module adds a namespace "units" with the only function "convert", which is thus invoked as "units::convert"
+uni-in-plane - This element implements the unilateral contact between a point and a plane
+wheel2 - Connects 2 structural nodes: Wheel Ground
+wheel4 - L. Gagnon, M. J. Richard, P. Masarati, M. Morandini, and G. Dore. Multibody simulation of tires operating on an uneven road. In Multibody Dynamics 2011, 4-7 July 2011
diff --git a/sci-physics/mbdyn/mbdyn-1.7.3_p20210925-r1.ebuild b/sci-physics/mbdyn/mbdyn-1.7.3_p20210925-r1.ebuild
index 442cd6e0dc..73aa5c47fc 100644
--- a/sci-physics/mbdyn/mbdyn-1.7.3_p20210925-r1.ebuild
+++ b/sci-physics/mbdyn/mbdyn-1.7.3_p20210925-r1.ebuild
@@ -1,4 +1,4 @@
-# Copyright 1999-2021 Gentoo Authors
+# Copyright 1999-2022 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=7
@@ -17,75 +17,23 @@ S="${WORKDIR}/${MYP}"
LICENSE="GPL-2"
SLOT="0"
KEYWORDS="~amd64"
-# mbdyn-module-FMU # needs fmi-library
-# mbdyn-module-aerodyn # needs aerodyn
-# mbdyn-module-cudatest # needs cuda
-IUSE_MBDYN_MODULE="
- mbdyn-module-asynchronous_machine
- mbdyn-module-autodiff_test
- mbdyn-module-ballbearing_contact
- mbdyn-module-bullet
- mbdyn-module-charm
- mbdyn-module-constlaw-f90
- mbdyn-module-constlaw-f95
- mbdyn-module-constlaw
- mbdyn-module-cont-contact
- mbdyn-module-controller
- mbdyn-module-convtest
- mbdyn-module-cyclocopter
- mbdyn-module-damper-gandhi
- mbdyn-module-damper-graall
- mbdyn-module-damper-hydraulic
- mbdyn-module-damper
- mbdyn-module-diff
- mbdyn-module-dot
- mbdyn-module-drive-test
- mbdyn-module-drive
- mbdyn-module-dummy
- mbdyn-module-eu2phi
- mbdyn-module-fab-electric
- mbdyn-module-fab-motion
- mbdyn-module-fab-sbearings
- mbdyn-module-fabricate
- mbdyn-module-flightgear
- mbdyn-module-friction
- mbdyn-module-friction3
- mbdyn-module-hfelem
- mbdyn-module-hid
- mbdyn-module-hunt-crossley
- mbdyn-module-hydrodynamic_plain_bearing
- mbdyn-module-hydrodynamic_plain_bearing2
- mbdyn-module-imu
- mbdyn-module-indvel
- mbdyn-module-inline_friction
- mbdyn-module-inplane_friction
- mbdyn-module-journal_bearing
- mbdyn-module-leapmotion
- mbdyn-module-loadinc
- mbdyn-module-marble
- mbdyn-module-md
- mbdyn-module-mds
- mbdyn-module-minmaxdrive
- mbdyn-module-multi_step_drive
- mbdyn-module-muscles
- mbdyn-module-namespace
- mbdyn-module-nodedistdrive
- mbdyn-module-nonsmooth-node
- mbdyn-module-ns
- mbdyn-module-octave
- mbdyn-module-randdrive
- mbdyn-module-rollercoaster
- mbdyn-module-rotor-loose-coupling
- mbdyn-module-scalarfunc
- mbdyn-module-switch_drive
- mbdyn-module-tclpgin
- mbdyn-module-triangular_contact
- mbdyn-module-udunits
- mbdyn-module-uni_in_plane
- mbdyn-module-wheel2
- mbdyn-module-wheel4
-"
-IUSE="${IUSE_MBDYN_MODULE//_/-} ann arpack autodiff blender boost bullet chaco crypt
+# FMU # needs fmi-library
+# aerodyn # needs aerodyn
+# cudatest # needs cuda
+MBDYN_MODULE=( asynchronous_machine autodiff_test ballbearing_contact bullet
+charm constlaw-f90 constlaw-f95 constlaw cont-contact controller convtest
+cyclocopter damper-gandhi damper-graall damper-hydraulic damper diff dot
+drive-test drive dummy eu2phi fab-electric fab-motion fab-sbearings fabricate
+flightgear friction friction3 hfelem hid hunt-crossley
+hydrodynamic_plain_bearing hydrodynamic_plain_bearing2 imu indvel
+inline_friction inplane_friction journal_bearing leapmotion loadinc marble md
+mds minmaxdrive multi_step_drive muscles namespace nodedistdrive nonsmooth-node
+ns octave randdrive rollercoaster rotor-loose-coupling scalarfunc switch_drive
+tclpgin triangular_contact udunits uni_in_plane wheel2 wheel4 )
+
+MBDYN_MODULE_REPLACED=( "${MBDYN_MODULE[@]//_/-}" )
+IUSE_MBDYN_MODULE="${MBDYN_MODULE_REPLACED[@]/#/mbdyn_module_}"
+IUSE="${IUSE_MBDYN_MODULE} ann arpack autodiff blender boost bullet chaco crypt
debug eig ginac jdqz +mbc metis mpi multithread-naive netcdf octave openblas pam
pastix pmpi python qrupdate rt sasl schur sparse superlu tests threads udunits +y12"
# taucs rtai
@@ -105,7 +53,7 @@ RDEPEND="
crypt? ( virtual/libcrypt )
ginac? ( sci-mathematics/ginac )
jdqz? ( sci-libs/jdqz )
- mbdyn-module-damper? ( sci-libs/gsl )
+ mbdyn_module_damper? ( sci-libs/gsl )
mpi? ( virtual/mpi[cxx] )
metis? ( sci-libs/metis )
netcdf? ( sci-libs/netcdf-cxx:* )
@@ -140,10 +88,10 @@ PATCHES=(
)
# "${FILESDIR}/${PN}-respect-libtool.patch"
REQUIRED_USE="
- mbdyn-module-bullet? ( bullet )
- mbdyn-module-octave? ( octave )
- mbdyn-module-udunits? ( udunits )
- mbdyn-module-wheel4? ( ginac )
+ mbdyn_module_bullet? ( bullet )
+ mbdyn_module_octave? ( octave )
+ mbdyn_module_udunits? ( udunits )
+ mbdyn_module_wheel4? ( ginac )
multithread-naive? ( threads )
pmpi? ( mpi )
python? ( ${PYTHON_REQUIRED_USE} )
@@ -245,14 +193,10 @@ src_configure() {
myconf+=( "--without-mpi" )
fi
- declare -A mbdynmodules
- for m in ${IUSE_MBDYN_MODULE} ; do
- mbdynmodules[${m//_/-}]="${m/mbdyn-module-/}"
- done
-
local usemodules=""
- for u in ${IUSE_MBDYN_MODULE//_/-} ; do
- use ${u} && usemodules+=" ${mbdynmodules[${u}]}"
+ for m in ${MBDYN_MODULE[@]} ; do
+ u="${m//_/-}"
+ use "mbdyn_module_${u}" && usemodules+=" ${m}"
done
# remove leading whitespace characters
diff --git a/sci-physics/mbdyn/metadata.xml b/sci-physics/mbdyn/metadata.xml
index 8896f30ef8..6556940ae5 100644
--- a/sci-physics/mbdyn/metadata.xml
+++ b/sci-physics/mbdyn/metadata.xml
@@ -21,72 +21,6 @@
With sci-mathematics/ginac support
With sci-libs/jdqz math library
Enable MBC - multibody communication library
-
-
- The purpose of this code is the simulation of an asynchronous electrical machine as a part of a multibody model
- This element implements a inline joint with friction
- ball bearing contact
- sci-physics/bullet module
- This module implements a user-defined induced velocity element based on CDI's CHARM free wake
- This directory contains an example of run-time loadable constitutive law written in Fortran 90
- This directory contains an example of run-time loadable constitutive law written in Fortran 95
- This directory contains an example of run-time loadable constitutive law
- continuous contact
- controller module
- convergence test module
-
- This module implements induced velocity models for cycloidal rotors
- Gandhi, F. and Chopra, I., "An analytical model for a nonlinear elastomeric lag damper and its effect on aeromechanical stability in hover" Journal of the American Helicopter Society, Vol. 39, 1994, pp. 59-69.
- GRAALL Damper Constitutive Law
- Hydraulic Damper Constitutive Law
- It implements a 1D constitutive law based on a generic nonlinear rheological formula, whose coefficients are computed by means of parameter identification from experimental measurements
- diff drive module
- dot language module
- drive test module
- example of run-time loadable drive
- Dummy module --- does nothing, used to test the infrastructure
- converts three Euler angles into the corresponding Euler vector
- Library of electric components for "digital fabrication" machines
- Library of motion transmission components for "digital fabrication" machines
- Library of bearings for "digital fabrication" machines
- Library of components of "digital fabrication" machines
- flightgear module
- eXperimental friction model
- eXperimental friction model (2nd try)
- Harmonic Excitation Element
- This module registers a file driver that captures the input from HID USB devices (only tested with some joysticks)
- HuntCrossley constitutive law
- This module implements a hydrodynamic plain bearing according to Hans Juergen Butenschoen 1976 Das hydrodynamische zylindrische Gleitlager endlicher Breite unter instationaerer Belastung
- module hydrodynamic plain bearing2
- implements two uses of a IMU
- This module implements a dummy induced velocity model
- This element implements a inline joint with friction
- In plane friction
- This element implements a journal bearing with lugre friction
- leapmotion hand
- load increment normalization
- marble model for icecube robot
- MD module
- mds module
- minmaxdrive module
- multi step drive module
- muscle module
- namespace module
- node dist drive module
- Defines a unilateral constraint in form of a contact between a node and one or more planes, optionally with friction
- ns1 module
- octave module
- rand drive module
- rollercoaster module
- rotor loose coupling
- example of run-time loadable scalar function
- switch drive module
- tcl plugin
- This element implements unilateral contact with friction between an arbitrary rigid body, represented by a triangular mesh, and a set of nodes with arbitrary offsets
- This module adds a namespace "units" with the only function "convert", which is thus invoked as "units::convert"
- This element implements the unilateral contact between a point and a plane
- Connects 2 structural nodes: Wheel Ground
- L. Gagnon, M. J. Richard, P. Masarati, M. Morandini, and G. Dore. Multibody simulation of tires operating on an uneven road. In Multibody Dynamics 2011, 4-7 July 2011
With sci-libs/metis model partitioning support
With MPI support
Enable multithread naive solver