Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
LMGC90
LMGC90_user
Commits
4bf91607
Commit
4bf91607
authored
May 26, 2015
by
mozul
Browse files
Merge commit '
3570302c
'
Preparing 2015.2 version
parents
77f616dc
3570302c
Changes
157
Hide whitespace changes
Inline
Side-by-side
src/Bindings/CMakeLists.txt
View file @
4bf91607
...
...
@@ -42,55 +42,18 @@ if(${MUMPS_VERSION} STREQUAL "none") # if mumps not asked
# if no mumps asked
message
(
STATUS
"No sparse linear algebra library used"
)
set
(
LMGC90_BINDINGS_SPARSE_LA_SRCS
${
CMAKE_CURRENT_SOURCE_DIR
}
/Std_SparseLinearAlgebra.f90
)
#set(LMGC90_BINDINGS_SPARSE_LA_TARGET_LIBS)
add_library
(
lmgc_bindings_sparse_la
${
LMGC90_BINDINGS_SPARSE_LA_SRCS
}
)
else
(
${
MUMPS_VERSION
}
STREQUAL
"none"
)
if
(
${
MUMPS_VERSION
}
STREQUAL
"sequential"
)
# if sequential mumps asked look for libraries
set
(
SEARCH_MPISEQ TRUE
)
set
(
WITH_MUMPS TRUE
)
find_package
(
MUMPS REQUIRED
)
# set WITH_MPI if not already set
if
(
NOT WITH_MPI
)
SET
(
WITH_MPI ON
)
endif
(
NOT WITH_MPI
)
elseif
(
${
MUMPS_VERSION
}
STREQUAL
"parallel"
)
# if parallel mumps asked look for libraries
set
(
WITH_MUMPS TRUE
)
set
(
SEARCH_MPISEQ FALSE
)
find_package
(
MUMPS REQUIRED
)
# find corresponding module
find_file
(
LMGC90_BINDINGS_SPARSE_LA_SRCS
NAMES
"Mumps_SparseLinearAlgebra.f90"
PATHS
${
CMAKE_SOURCE_DIR
}
/contribs/lapack_LinearAlgebra
NO_DEFAULT_PATH
)
# error if WITH_MPI is not already set
if
(
NOT WITH_MPI
)
message
(
FATAL_ERROR
"Use of parallel sparse linear algebra found, but no option WITH_MPI. Make sure to enable WITH_MPI option and provide a 'mpif90' compiler in CMAKE_Fortran_COMPILER variable (or use a sequential version)"
)
endif
(
NOT WITH_MPI
)
endif
(
${
MUMPS_VERSION
}
STREQUAL
"sequential"
)
# find corresponding module
find_file
(
LMGC90_BINDINGS_SPARSE_LA_SRCS
NAMES
"Mumps_SparseLinearAlgebra.f90"
PATHS
${
CMAKE_SOURCE_DIR
}
/contribs/lapack_LinearAlgebra
NO_DEFAULT_PATH
)
set
(
LMGC90_BINDINGS_SPARSE_LA_SRCS
"
${
CMAKE_SOURCE_DIR
}
/contribs/linearAlgebra/Mumps_SparseLinearAlgebra.f90"
)
message
(
STATUS
"Sparse linear algebra include path found:
${
MUMPS_INCLUDE_DIRS
}
"
)
message
(
STATUS
"Sparse linear algebra libraries found:
${
MUMPS_LIBRARIES
}
"
)
message
(
STATUS
"Sparse linear algebra libraries user add :
${
ADD_MUMPS_LIBRARIES
}
"
)
message
(
STATUS
"Sparse linear algebra binding found:
${
LMGC90_BINDINGS_SPARSE_LA_SRCS
}
"
)
INCLUDE_DIRECTORIES
(
${
MUMPS_INCLUDE_DIRS
}
)
include_directories
(
${
MUMPS_INCLUDE_DIRS
}
)
add_library
(
lmgc_bindings_sparse_la
${
LMGC90_BINDINGS_SPARSE_LA_SRCS
}
)
target_link_libraries
(
lmgc_bindings_sparse_la
${
MUMPS_LIBRARIES
}
${
ADD_MUMPS_LIBRARIES
}
)
target_link_libraries
(
lmgc_bindings_sparse_la
${
MUMPS_LIBRARIES
}
)
endif
(
${
MUMPS_VERSION
}
STREQUAL
"none"
)
...
...
src/Bindings/Std_ExternalFEM.f90
View file @
4bf91607
...
...
@@ -197,9 +197,8 @@ end subroutine
!--- adding dummy function of RAM for DDM ---!
subroutine
ExternalFEM_compute_dv_from_other_domains
(
dom_id
)
subroutine
ExternalFEM_compute_dv_from_other_domains
implicit
none
integer
(
kind
=
4
),
intent
(
in
)
::
dom_id
!
...
...
src/CMakeLists.txt
View file @
4bf91607
...
...
@@ -97,12 +97,16 @@ option(BUILD_rTree_BINDING "Build Python binding of rTree library" ON)
option
(
WITH_SICONOS_NUMERICS
"Activate SiconosNumerics contact solvers use"
OFF
)
option
(
WITH_MEDPRE
"Look for med library and activate medpre reading features"
OFF
)
option
(
GFORTRAN44_PATCHING
"Apply patch when using gfortran 4.4 (which is very buggy)"
OFF
)
# Lapack options
set
(
MUMPS_VERSION
"
none
"
CACHE STRING
"Use of MUMPS library"
)
set
(
MUMPS_VERSION
"
sequential
"
CACHE STRING
"Use of MUMPS library"
)
set_property
(
CACHE MUMPS_VERSION PROPERTY STRINGS
"none"
"sequential"
"parallel"
)
option
(
COMPILE_LAPACK
"Compile BLAS/LAPACK ?"
OFF
)
option
(
BUILD_MUMPS
"Build MUMPs and scalapack from scratch?"
OFF
)
option
(
BUILD_LAPACK
"Build BLAS/LAPACK from scratch?"
OFF
)
set
(
MATLIB_PATH CACHE PATH
"Path to LMGC90v2_BindingExternalModels"
)
...
...
@@ -140,6 +144,39 @@ if(NOT ${MATLIB_VERSION} STREQUAL "off")
find_package
(
MatLib_FOR_LMGC REQUIRED
)
endif
(
NOT
${
MATLIB_VERSION
}
STREQUAL
"off"
)
if
(
WITH_MPI
)
set
(
MUMPS_VERSION
"parallel"
)
endif
(
WITH_MPI
)
if
(
NOT
${
MUMPS_VERSION
}
STREQUAL
"none"
AND NOT BUILD_MUMPS
)
if
(
${
MUMPS_VERSION
}
STREQUAL
"sequential"
AND MUMPS_LIBRARY_DIRECTORY
)
if
(
${
MUMPS_VERSION
}
STREQUAL
"sequential"
)
set
(
SEARCH_MPISEQ=True
)
endif
(
${
MUMPS_VERSION
}
STREQUAL
"sequential"
)
find_package
(
MUMPS
)
if
(
NOT MUMPS_FOUND
)
set
(
BUILD_MUMPS True
)
endif
(
NOT MUMPS_FOUND
)
elseif
(
${
MUMPS_VERSION
}
STREQUAL
"parallel"
)
find_package
(
MUMPS
)
if
(
NOT MUMPS_FOUND
)
set
(
BUILD_MUMPS True
)
endif
(
NOT MUMPS_FOUND
)
else
()
set
(
BUILD_MUMPS True
)
endif
()
endif
(
NOT
${
MUMPS_VERSION
}
STREQUAL
"none"
AND NOT BUILD_MUMPS
)
# getting some packages for doc generation
find_package
(
Doxygen
)
...
...
@@ -153,11 +190,11 @@ if( WITH_SICONOS_NUMERICS )
endif
(
WITH_SICONOS_NUMERICS
)
# looking for lapack libraries before compiling
if
(
NOT
COMP
IL
E
_LAPACK
)
if
(
NOT
BU
IL
D
_LAPACK
)
find_package
(
LAPACK
)
if
(
NOT LAPACK_FOUND
)
message
(
STATUS
"could not find lapack... it is going to be compile first"
)
set
(
COMP
IL
E
_LAPACK ON
)
set
(
BU
IL
D
_LAPACK ON
)
endif
()
endif
()
...
...
src/ChiPy/CMakeLists.txt
View file @
4bf91607
...
...
@@ -7,6 +7,7 @@ set( headers_list )
set
(
sources_list
)
ADD_SUBDIRECTORY
(
src
)
add_subdirectory
(
utils
)
# dependencies
SET
(
LMGC90_PYTHON_LINK_LIBRARIES lmgc_python_shared
...
...
@@ -125,6 +126,7 @@ if(BUILD_ChiPy)
add_custom_target
(
chipy_swig_docstrings DEPENDS
${
CMAKE_CURRENT_BINARY_DIR
}
/docs/chipy_swig_docstrings.i
)
else
(
${
WITH_DOCSTRING
}
)
add_custom_command
(
OUTPUT
${
CMAKE_CURRENT_BINARY_DIR
}
/docs/chipy_swig_docstrings.i
DEPENDS
${
headers_list
}
COMMAND
${
CMAKE_COMMAND
}
-E copy
${
CMAKE_CURRENT_SOURCE_DIR
}
/docs/chipy_swig_docstrings.i
${
CMAKE_CURRENT_BINARY_DIR
}
/docs/chipy_swig_docstrings.i
...
...
@@ -139,12 +141,14 @@ if(BUILD_ChiPy)
# defining swig target
set
(
LIBRARY_OUTPUT_PATH
${
CMAKE_BINARY_DIR
}
/pylmgc90/chipy
)
SET_SOURCE_FILES_PROPERTIES
(
${
CMAKE_CURRENT_BINARY_DIR
}
/chipy.i PROPERTIES CPLUSPLUS ON
)
set
(
SWIG_MODULE_lmgc90_EXTRA_DEPS
${
NUMPY_DOT_I
}
)
SWIG_ADD_MODULE
(
lmgc90 python
${
CMAKE_CURRENT_BINARY_DIR
}
/chipy.i
)
add_dependencies
(
${
SWIG_MODULE_lmgc90_REAL_NAME
}
chipy_swig_docstrings
)
SWIG_LINK_LIBRARIES
(
lmgc90
${
PYTHON_LIBRARIES
}
${
LMGC90_PYTHON_LINK_LIBRARIES
}
${
LAPACK_LIBRARIES
}
utilsFortran
)
set_property
(
TARGET
${
SWIG_MODULE_lmgc90_REAL_NAME
}
PROPERTY LINKER_LANGUAGE Fortran
)
# ugly but necessary...
...
...
@@ -159,11 +163,12 @@ if(BUILD_ChiPy)
ARGS -Ddir=
${
CMAKE_SOURCE_DIR
}
-Dfile_in=
${
CMAKE_CURRENT_SOURCE_DIR
}
/src/macro/__init__.py.in
-Dfile_out=
${
CMAKE_BINARY_DIR
}
/pylmgc90/__init__.py
-DGIT_EXECUTABLE=
${
GIT_EXECUTABLE
}
-P
${
CMAKE_SOURCE_DIR
}
/tools/cmake/modules/set_revision_number.cmake
)
add_custom_command
(
TARGET
${
SWIG_MODULE_lmgc90_REAL_NAME
}
POST_BUILD
COMMAND
${
CMAKE_COMMAND
}
-E
rename
${
CMAKE_CURRENT_BINARY_DIR
}
/lmgc90.py
COMMAND
${
CMAKE_COMMAND
}
-E
copy
${
CMAKE_CURRENT_BINARY_DIR
}
/lmgc90.py
${
CMAKE_BINARY_DIR
}
/pylmgc90/chipy/lmgc90.py
)
if
(
WITH_NEW
)
set
(
l __init__.py chipy.py vtk_display.py preconW.py ddm_utils.py
)
...
...
@@ -171,9 +176,10 @@ if(BUILD_ChiPy)
set
(
l __init__.py chipy.py vtk_display.py preconW.py ddm_utils.py new_arch_post_utils.py
)
endif
(
WITH_NEW
)
foreach
(
f
${
l
}
)
add_custom_
command
(
TARGET
${
SWIG_MODULE_lmgc90_REAL_NAME
}
POST_BUILD
add_custom_
target
(
${
f
}
ALL
COMMAND
${
CMAKE_COMMAND
}
-E copy
${
CMAKE_SOURCE_DIR
}
/ChiPy/src/macro/
${
f
}
${
CMAKE_BINARY_DIR
}
/pylmgc90/chipy/
${
f
}
DEPENDS
${
CMAKE_CURRENT_SOURCE_DIR
}
/src/macro/
${
f
}
)
endforeach
(
f
${
l
}
)
if
(
NOT
${
PYTHON_VERSION_MAJOR
}
LESS 3
)
...
...
src/ChiPy/chipy.i.in
View file @
4bf91607
...
...
@@ -43,6 +43,7 @@
#include "src/shared/wrap_tact_behav.h"
#include "src/shared/wrap_timer.h"
#include "src/shared/wrap_utilities.h"
#include "src/shared/wrap_a_EF.h"
#include "src/contact_2D/wrap_CLALp.h"
#include "src/contact_2D/wrap_CLJCx.h"
...
...
@@ -448,6 +449,7 @@ import_array();
%include "src/shared/wrap_tact_behav.h"
%include "src/shared/wrap_timer.h"
%include "src/shared/wrap_utilities.h"
%include "src/shared/wrap_a_EF.h"
%include "src/contact_2D/wrap_CLALp.h"
%include "src/contact_2D/wrap_CLJCx.h"
...
...
src/ChiPy/src/kernel/wrap_DDM_ExternalFEM.f90
View file @
4bf91607
...
...
@@ -151,7 +151,7 @@ call MPI_BARRIER(MPI_COMM_WORLD, code_MPI)
CALL
prep_check_nlgs
(
iconv
)
if
(
timer_id_check
/
=
0
)
call
stop_itimer
(
timer_id_check
)
IF
(
iconv
==
0
)
RETURN
!<- c est quoi cette merde !!!
!
IF (iconv == 0 ) RETURN !<- c est quoi cette merde !!!
!raf: je commente cette fonction est deja dans prep_check_nlgs
!if( timer_id_rnodhrolc /= 0 ) call start_itimer(timer_id_rnodhrolc)
...
...
@@ -281,7 +281,7 @@ call MPI_BARRIER(MPI_COMM_WORLD, code_MPI)
if
(
timer_id_check
/
=
0
)
call
start_itimer
(
timer_id_check
)
CALL
prep_check_nlgs
(
iconv
)
if
(
timer_id_check
/
=
0
)
call
stop_itimer
(
timer_id_check
)
IF
(
iconv
==
0
)
RETURN
!
IF (iconv == 0 ) RETURN
!raf ajout
if
(
timer_id_exchange
/
=
0
)
call
start_itimer
(
timer_id_exchange
)
call
compute_dv_from_other_domains
...
...
src/ChiPy/src/macro/chipy.py
View file @
4bf91607
...
...
@@ -140,6 +140,11 @@ def Finalize():
if
not
is_vtk_display
:
display_3D_CleanMemory
()
post2D_CleanMemory
()
post3D_CleanMemory
()
postpro_CleanMemory
()
postpro_3D_CleanMemory
()
timer_WriteOutTimers
()
overall_Finalize
()
...
...
@@ -1059,7 +1064,7 @@ def OpenDisplayFiles(ref_reac=0.):
post3D_Init
()
display_3D_Init
(
0
)
def
WriteDisplayFiles
(
freq
=
1
,
ref_radius
=
1.
,
**
kw
):
def
WriteDisplayFiles
(
freq
=
1
,
ref_radius
=
1.
,
normal_orient
=
True
,
**
kw
):
"""Write visualization files if current time step number is a multiple of freq in DISPLAY directory.
ref_radius allows to normalize the size of the fries representing the interactions.
...
...
@@ -1094,7 +1099,7 @@ def WriteDisplayFiles(freq=1,ref_radius=1.,**kw):
writePorofeToVTK
(
os
.
path
.
join
(
wd
,
'DISPLAY'
,
'porofe_'
+
str
(
wdf
)
+
'.vtu'
),
fip
,
DIMENSION
,
**
poro_opt
)
writeMultifeToVTK
(
os
.
path
.
join
(
wd
,
'DISPLAY'
,
'multife_'
+
str
(
wdf
)
+
'.vtu'
),
fiu
,
DIMENSION
,
**
multi_opt
)
writeTactorsToVTK
(
os
.
path
.
join
(
wd
,
'DISPLAY'
,
'tacts_'
+
str
(
wdf
)
+
'.vtp'
),
fit
,
tacts_dict
,
**
tact_opt
)
writeIntersToVTK
(
os
.
path
.
join
(
wd
,
'DISPLAY'
,
'inters_'
+
str
(
wdf
)
+
'.vtp'
),
fii
,
inters_dict
,
ref_radius
,
**
inter_opt
)
writeIntersToVTK
(
os
.
path
.
join
(
wd
,
'DISPLAY'
,
'inters_'
+
str
(
wdf
)
+
'.vtp'
),
fii
,
inters_dict
,
ref_radius
,
normal_orient
,
**
inter_opt
)
writeRigidsToVTK
(
os
.
path
.
join
(
wd
,
'DISPLAY'
,
'rigids_'
+
str
(
wdf
)
+
'.vtu'
),
fir
,
DIMENSION
,
**
rigid_opt
)
else
:
...
...
src/ChiPy/src/macro/vtk_display.py
View file @
4bf91607
...
...
@@ -525,7 +525,7 @@ def InitInter(dict,name):
dict
[
name
]
=
vals
def
pushInters2D
(
inters_dict
,
Append
,
lr
,
kw
):
def
pushInters2D
(
inters_dict
,
Append
,
lr
,
normal_orient
,
kw
):
nb_write
=
0
...
...
@@ -600,14 +600,18 @@ def pushInters2D(inters_dict,Append,lr,kw):
if
ref_reac
!=
0.
:
seuil_fn
=
ref_reac
if
fn
*
fn
+
ft
*
ft
<
1.e-12
:
nnx
=
nx
nny
=
ny
else
:
nnx
=
(
fn
*
nx
+
ft
*
ny
)
/
math
.
sqrt
(
fn
*
fn
+
ft
*
ft
)
nny
=
(
fn
*
ny
-
ft
*
nx
)
/
math
.
sqrt
(
fn
*
fn
+
ft
*
ft
)
if
normal_orient
:
vertex
=
buildFrite
(
coorx
,
coory
,
nx
,
ny
,
fn
/
seuil_fn
,
lr
)
else
:
vertex
=
buildFrite
(
coorx
,
coory
,
nx
,
ny
,
fn
/
seuil_fn
,
lr
)
if
fn
*
fn
+
ft
*
ft
<
1.e-12
:
nnx
=
nx
nny
=
ny
else
:
nnx
=
(
fn
*
nx
+
ft
*
ny
)
/
math
.
sqrt
(
fn
*
fn
+
ft
*
ft
)
nny
=
(
fn
*
ny
-
ft
*
nx
)
/
math
.
sqrt
(
fn
*
fn
+
ft
*
ft
)
vertex
=
buildFrite
(
coorx
,
coory
,
nnx
,
nny
,
fn
/
seuil_fn
,
lr
)
num_points
=
0
cell_ids
=
[]
...
...
@@ -652,7 +656,7 @@ def pushInters2D(inters_dict,Append,lr,kw):
return
nb_write
def
pushInters3D
(
inters_dict
,
Append
,
lr
,
kw
):
def
pushInters3D
(
inters_dict
,
Append
,
lr
,
normal_orient
,
kw
):
nb_write
=
0
...
...
@@ -724,14 +728,21 @@ def pushInters3D(inters_dict,Append,lr,kw):
if
ref_reac
!=
0.
:
seuil_fn
=
ref_reac
if
fn
*
fn
+
ft
*
ft
<
1.e-12
:
nnx
=
nx
nny
=
ny
else
:
nnx
=
(
fn
*
nx
+
ft
*
ny
)
/
math
.
sqrt
(
fn
*
fn
+
ft
*
ft
)
nny
=
(
fn
*
ny
-
ft
*
nx
)
/
math
.
sqrt
(
fn
*
fn
+
ft
*
ft
)
if
normal_orient
:
vertex
=
buildFrite3D
(
coorx
,
coory
,
coorz
,
nx
,
ny
,
nz
,
tx
,
ty
,
tz
,
fn
/
seuil_fn
,
lr
)
else
:
if
fn
*
fn
+
ft
*
ft
<
1.e-12
:
nnx
=
nx
;
nny
=
ny
;
nnz
=
nz
ttx
=
tx
;
tty
=
ty
;
ttz
=
tz
else
:
nnx
=
(
fn
*
nx
+
ft
*
tx
)
/
math
.
sqrt
(
fn
*
fn
+
ft
*
ft
)
nny
=
(
fn
*
ny
+
ft
*
ty
)
/
math
.
sqrt
(
fn
*
fn
+
ft
*
ft
)
nnz
=
(
fn
*
nz
+
ft
*
tz
)
/
math
.
sqrt
(
fn
*
fn
+
ft
*
ft
)
ttx
=
nnz
;
tty
=
nnz
;
ttz
=
-
nnx
-
nny
vertex
=
buildFrite3D
(
coorx
,
coory
,
coorz
,
nx
,
ny
,
nz
,
tx
,
ty
,
tz
,
fn
/
seuil_fn
,
lr
)
vertex
=
buildFrite3D
(
coorx
,
coory
,
coorz
,
n
nx
,
n
ny
,
n
nz
,
t
tx
,
t
ty
,
t
tz
,
fn
/
seuil_fn
,
lr
)
num_points
=
0
#cell_ids=[]
...
...
@@ -1025,7 +1036,7 @@ def InitIntersToVTK(inters_list,inters_dict,rr=0.):
for
inter
in
inters_list
:
InitInter
(
inters_dict
,
inter
)
def
writeIntersToVTK
(
fichier
,
fid
,
inters_dict
,
lr
,
**
kw
):
def
writeIntersToVTK
(
fichier
,
fid
,
inters_dict
,
lr
,
normal_orient
=
True
,
**
kw
):
vtpFile
=
vtkXMLPolyDataWriter
()
vtpFile
.
SetIdTypeToInt32
()
...
...
@@ -1035,10 +1046,10 @@ def writeIntersToVTK(fichier,fid,inters_dict,lr,**kw):
if
inters_dict
.
keys
()[
0
]
in
[
'CDCDx'
,
'CDPLx'
,
'CSASp'
,
'CSPRx'
,
'PRPLx'
,
'PRPRx'
,
'PTPT3'
,
'SPCDx'
,
'SPDCx'
,
'SPPLx'
,
'SPSPx'
]:
nb
=
pushInters3D
(
inters_dict
,
AppendAll
,
lr
,
kw
)
nb
=
pushInters3D
(
inters_dict
,
AppendAll
,
lr
,
normal_orient
,
kw
)
else
:
nb
=
pushInters2D
(
inters_dict
,
AppendAll
,
lr
,
kw
)
nb
=
pushInters2D
(
inters_dict
,
AppendAll
,
lr
,
normal_orient
,
kw
)
# si on a bien ecrit qq ch
...
...
src/ChiPy/src/mailx/wrap_mecaMAILx.f90
View file @
4bf91607
...
...
@@ -114,15 +114,19 @@ MODULE wrap_mecaMAILx
compute_rayleigh_damping_mecaMAILx
,
&
compute_rayleigh_damping_discrete_mecaMAILx
,
&
rigid_vtk_draw_all_mecaMAILx
,
&
!<
is_rigid_mecaMAILx
,
&
get_RcoorTT_mecaMAILx
,
&
get_Rcooref_mecaMAILx
,
&
get_Rinertia_frameTT_mecaMAILx
,
&
get_coorTT_nodty_mecaMAILx
,
&
get_cooref_nodty_mecaMAILx
,
&
set_RV_driven_dofs_mecaMAILx
,
&
set_RV_driven_dof_value_mecaMAILx
,
&
put_Rvector_mecaMAILx
,
&
get_Rvector_mecaMAILx
,
&
!>
DISPLAY_bulk_element_mecaMAILx
,
&
Set_RV_driven_dofs_mecaMAILx
,
&
Set_RV_driven_dof_value_mecaMAILx
,
&
!!add_spring_to_node_mecaMAILx, &
apply_drvdof_KT_mecaMAILx
,
&
get_matrix_mecaMAILx
,
&
!rm
...
...
@@ -1660,6 +1664,9 @@ CONTAINS
end
subroutine
!< rigid, coro
function
IsRigid
(
ibdyty
)
bind
(
c
,
name
=
'mecaMAILx_IsRigid'
)
implicit
none
integer
(
c_int
),
intent
(
in
),
value
::
ibdyty
...
...
@@ -1671,8 +1678,15 @@ CONTAINS
IsRigid
=
0
end
if
end
function
end
function
IsRigid
subroutine
SetTolCoro
(
tol
)
bind
(
c
,
name
=
'mecaMAILx_SetTolCoro'
)
implicit
none
real
(
c_double
),
intent
(
in
),
value
::
tol
call
set_tol_coro_mecaMAILx
(
tol
)
end
subroutine
SUBROUTINE
GetRigidFrameTT
(
ibdyty
,
rvect
,
ivalue1
,
ivalue2
)
bind
(
c
,
name
=
'mecaMAILx_GetRigidFrameTT'
)
use
overall
,
only
:
nbDIME
IMPLICIT
NONE
...
...
@@ -1775,10 +1789,56 @@ CONTAINS
real
(
c_double
),
intent
(
in
),
value
::
rv
CALL
Set_RV_driven_dof_value_mecaMAILx
(
ibdyty
,
idof
,
rv
)
CALL
Set_RV_driven_dof_value_mecaMAILx
(
ibdyty
,
idof
,
rv
)
END
SUBROUTINE
SetRVDrivenDofValue
SUBROUTINE
PutBodyRVector
(
cvalue1_c
,
ivalue1
,
rvect
,
ivalue2
)
bind
(
c
,
name
=
'mecaMAILx_PutBodyRVector'
)
IMPLICIT
NONE
CHARACTER
(
c_char
),
DIMENSION
(
5
),
INTENT
(
in
)
::
cvalue1_c
INTEGER
(
c_int
),
INTENT
(
in
),
value
::
ivalue1
,
ivalue2
REAL
(
c_double
),
INTENT
(
in
)
::
rvect
(
ivalue2
)
!
CHARACTER
(
len
=
5
)
::
cvalue1
INTEGER
::
i
cvalue1
=
''
DO
i
=
1
,
5
cvalue1
=
cvalue1
(
1
:
i
-1
)
//
cvalue1_c
(
i
)
END
DO
CALL
put_Rvector_mecaMAILx
(
cvalue1
,
ivalue1
,
rvect
,
ivalue2
)
END
SUBROUTINE
SUBROUTINE
GetBodyRVector
(
cvalue1_c
,
ivalue1
,
rvect
,
ivalue2
)
bind
(
c
,
name
=
'mecaMAILx_GetBodyRVector'
)
implicit
none
character
(
c_char
),
dimension
(
5
),
intent
(
in
)
::
cvalue1_c
integer
(
c_int
),
intent
(
in
),
value
::
ivalue1
integer
(
c_int
)
::
ivalue2
type
(
c_ptr
)
::
rvect
!
real
(
c_double
),
dimension
(:),
pointer
::
vector
character
(
len
=
5
)
::
cvalue1
integer
::
i
cvalue1
=
''
DO
i
=
1
,
5
cvalue1
=
cvalue1
(
1
:
i
-1
)
//
cvalue1_c
(
i
)
END
DO
ivalue2
=
6
allocate
(
vector
(
ivalue2
))
CALL
get_Rvector_mecaMAILx
(
cvalue1
,
ivalue1
,
vector
,
ivalue2
)
rvect
=
c_loc
(
vector
(
1
))
END
SUBROUTINE
! rigid, coro >
subroutine
GetBodyMatrix
(
cvalue_c
,
ibdyty
,
rmat
,
size1
,
size2
)
bind
(
c
,
name
=
'mecaMAILx_GetBodyMatrix'
)
implicit
none
character
(
c_char
),
dimension
(
5
),
intent
(
in
)
::
cvalue_c
...
...
@@ -1853,15 +1913,6 @@ CONTAINS
call
comp_drv_vlocy_mecaMAILx
(
ibdyty
,
values
)
end
subroutine
!!!-PTA--21/01/2012----------------------------------
subroutine
SetTolCoro
(
tol
)
bind
(
c
,
name
=
'mecaMAILx_SetTolCoro'
)
implicit
none
real
(
c_double
),
intent
(
in
),
value
::
tol
call
set_tol_coro_mecaMAILx
(
tol
)
end
subroutine
!!! END PTA
SUBROUTINE
SetVlocyDrivenDof
(
IdBody
,
f_dof
,
f_node
,
f_value
)
bind
(
c
,
name
=
'mecaMAILx_SetVlocyDrivenDof'
)
IMPLICIT
NONE
INTEGER
(
C_INT
),
INTENT
(
IN
),
VALUE
::
IdBody
,
f_dof
...
...
@@ -2096,7 +2147,7 @@ CONTAINS
real
(
kind
=
8
),
dimension
(:),
pointer
::
s
!
size1
=
3
size1
=
5
allocate
(
s
(
size1
))
s
=
Compute_Info_PrincipalStressField_mecaMAILx
(
ibdyty
)
...
...
src/ChiPy/src/mailx/wrap_mecaMAILx.h
View file @
4bf91607
...
...
@@ -491,6 +491,57 @@ Managing rigid models
* @endcond
*/
extern
"C"
void
mecaMAILx_SetRVDrivenDofValue
(
int
IdBody
,
int
IdDof
,
double
rv
);
/**
* @fn void mecaMAILx_PutBodyRVector(char * cvalue1, int ivalue1, double * rvector_in, int rlength_in)
* @brief Set a vector of a coro or rigid mecaMAILx body
*
* @cond PYDOC
* python usage : mecaMAILx_PutBodyRVector(datatype, ibdyty, vector)
* @param[in] datatype (string [5]) : the vector to set
* @param[in] ibdyty (integer) : rank of the RBDY3
* @param[in] vector (double array) : the new value of the vector
* @endcond
*
* \n possible values for datatype field are 'X____', 'Xbeg_',
* 'V____', 'Vbeg_', 'Raux_', 'Vfree', 'Fext_'\n
* uses copy, and in case fo Fext, the operation is not
* just setting but adding\n
*
* @cond CDOC
* @param[in] cvalue1 (char[5]) : the vector to set
* @param[in] ivalue1 (int) : rank of the RBDY3
* @param[in] vector_in (double *) : the new vector
* @param[in] length (int) : the length of vector_in
* @endcond
*/
extern
"C"
void
mecaMAILx_PutBodyRVector
(
char
*
cvalue1
,
int
ivalue1
,
double
*
rvector_in
,
int
rlength_in
);
/**
* @fn void mecaMAILx_GetBodyRVector(char * cvalue1, int ivalue1, double** r8_vector, int* r8_size)
* @brief Get a copy of a vector of a mecaMAILx body
*
* @cond PYDOC
* python usage : vector = mecaMAILx_GetBodyRVector(datatype, ibdyty)
* @param[in] datatype (string [5]) : the vector to get
* @param[in] ibdyty (integer) : rank of the RBDY3
* @return vector (double array) : output vector
* @endcond
*
* \n
* possible values for datatype field are:
* 'Coor0', 'Coor_', 'Coorb','Coorm',
* 'X____', 'Xbeg_',
* 'V____', 'Vbeg_', 'Vaux_','Vfree',
* 'Reac_', 'Fext_', 'Fint_'\n
*
* @cond CDOC
* @param[in] cvalue1 (char[5]) : the vector to get
* @param[in] ivalue1 (int) : rank of the RBDY3
* @param[out] r8_vector (double**) : the out vector
* @param[out] r8_size (int*) : the length of r8_vector
* @endcond
*/
extern
"C"
void
mecaMAILx_GetBodyRVector
(
char
*
cvalue1
,
int
ivalue1
,
double
**
r8_vector
,
int
*
r8_size
);
/**
...
...
src/ChiPy/src/mainpage.h
View file @
4bf91607
...
...
@@ -17,18 +17,17 @@
\section sec1 Reminders
Reference web sites of LMGC90"s users :
https://
subver
.lmgc.univ-montp2.fr/
trac_LMGC90v2/wiki
https://
git-xen
.lmgc.univ-montp2.fr/
lmgc90/lmgc90_user/wikis/home
Reference web sites of LMGC90"s developpers :
https://
subver
.lmgc.univ-montp2.fr/
trac_LMGC90v2
_dev/wiki
https://
git-xen
.lmgc.univ-montp2.fr/
lmgc90/lmgc90
_dev/wiki
s/home
These sites give reminders on how to download and build the software.
Theoretical documentation and tutorial can be found in
:
LMGC90v2/rev_2009/manuals and LMGC90v2/rev_2010/manuals
Theoretical documentation and tutorial can be found in
the "manuals" directory once
the sources of the software is downloaded.
To generate again this documentation in LMGC90v2_dev directory,
after setting the DOXYGEN variable in the makefile, type :
To generate again this documentation in your build directory type :
"make docs"
...
...
src/ChiPy/src/post/wrap_post2D.f90
View file @
4bf91607
...
...
@@ -57,7 +57,8 @@ MODULE wrap_post2D
put_material_ID_post2D
,
&
GMV_circular_selection
,
&
get_write_gmv_post2D
,
&
reset_post2D
reset_post2D
,
&
clean_memory_post2D
use
utilities
...
...
@@ -305,4 +306,11 @@ CONTAINS
end
subroutine
subroutine
CleanMemory
()
bind
(
c
,
name
=
'post2D_CleanMemory'
)
implicit
none
call
clean_memory_post2D
end
subroutine
END
MODULE
wrap_post2D
src/ChiPy/src/post/wrap_post2D.h
View file @
4bf91607
...
...
@@ -270,4 +270,14 @@
*/
extern
"C"
void
post2D_reset
(
void
);
/**
* @fn void post2D_CleanMemory(void)
* @brief Free all memory allocated within post2D module
*
* @cond PYDOC
* python usage : post2D_CleanMemory()
* @endcond
*/