getfem-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Getfem-commits] (no subject)


From: Tetsuo Koyama
Subject: [Getfem-commits] (no subject)
Date: Sat, 6 Oct 2018 05:46:01 -0400 (EDT)

branch: devel-tetsuo-fix_test_error
commit 8dcd729f445cf639156ef2c24eeb9c6f506f4e0d
Author: Tetsuo Koyama <address@hidden>
Date:   Sat Oct 6 18:43:45 2018 +0900

    Ensure compatibility of the python interface to python 3.x, 
--enable-python3 of the configure script enable the interface with python 3.x
---
 interface/tests/python/check_mixed_mesh.py | 386 ++++++++++++++---------------
 1 file changed, 193 insertions(+), 193 deletions(-)

diff --git a/interface/tests/python/check_mixed_mesh.py 
b/interface/tests/python/check_mixed_mesh.py
index 4d40bb5..bf6cd81 100644
--- a/interface/tests/python/check_mixed_mesh.py
+++ b/interface/tests/python/check_mixed_mesh.py
@@ -1,193 +1,193 @@
-#!/usr/bin/env python
-# -*- coding: utf-8 -*-
-# Python GetFEM++ interface
-#
-# Copyright (C) 2018-2018 Huu Phuc Bui
-#
-# This file is a part of GetFEM++
-#
-# GetFEM++  is  free software;  you  can  redistribute  it  and/or modify it
-# under  the  terms  of the  GNU  Lesser General Public License as published
-# by  the  Free Software Foundation;  either version 2.1 of the License,  or
-# (at your option) any later version.
-# This program  is  distributed  in  the  hope  that it will be useful,  but
-# WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
-# or  FITNESS  FOR  A PARTICULAR PURPOSE.  See the GNU Lesser General Public
-# License for more details.
-# You  should  have received a copy of the GNU Lesser General Public License
-# along  with  this program;  if not, write to the Free Software Foundation,
-# Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301, USA.
-#
-############################################################################
-"""  Test of computation of inter-element terms on a mixed 3D mesh with
-     hexaedrons, prims, pyramids and tetrahedrons.
-
-  This program is used to check that Python-GetFEM interface, and more
-  generally GetFEM are working.
-
-  $Id$
-"""
-
-import getfem as gf
-import numpy as np
-import os
-
-# parameters
-E = 1.0e3
-Nu = 0.25
-Lambda = E*Nu/((1.0+Nu)*(1.0-2.0*Nu))
-Mu = E/(2*(1+Nu))
-
-
-# define constants
-NEUMANN_BOUNDARY = 1
-NEUMANN_BOUNDARY_NO_LOAD = 2
-DIRICHLET_BOUNDARY = 3
-OMEGA = 4
-INNER_FACES=6
-
-degree = 1
-
-make_check=('srcdir' in os.environ);
-filename='../meshes/mixed_mesh.gmf'
-if (make_check):
-    filename=os.environ['srcdir']+'/'+filename
-
-m = gf.Mesh('load', filename)
-
-#--------------- boundary condtions
-# detect some boundary of the mesh
-
-face_left = m.outer_faces_with_direction([0, 0., -1.0], 0.01)
-face_right = m.outer_faces_with_direction([0., 0., 1.0], 0.01)
-
-face_top = m.outer_faces_with_direction([0., 1., 0], 0.01)
-face_bottom = m.outer_faces_with_direction([0., -1., 0], 0.01)
-face_top1 = m.outer_faces_with_direction([1., 0., 0], 0.01)
-face_bottom1 = m.outer_faces_with_direction([-1., 0., 0], 0.01)
-face_top_bottom =  
np.append(np.append(np.append(face_top,face_bottom,axis=1),face_top1 , axis=1), 
face_bottom1, axis=1)
-
-# create boundary regions
-m.set_region(NEUMANN_BOUNDARY,face_right)
-m.set_region(NEUMANN_BOUNDARY_NO_LOAD,face_top_bottom)
-m.set_region(DIRICHLET_BOUNDARY,face_left)
-
-in_faces = m.inner_faces()
-m.set_region(INNER_FACES, in_faces)
-
-
-listTetra = [];
-listHexa = [];
-listPrism = [];
-listPyramid = [];
-
-for i in range(m.nbcvs()):
-    gt = m.geotrans(i) # id of element
-    if str(gt[0])=='GT_PK(3,1)':
-        #print 'index of TETRA: ', i
-        listTetra.append(i)
-    elif str(gt[0])=='GT_PYRAMID(1)':
-        #print 'index of PYRAMID: ', i
-        listPyramid.append(i)
-    elif str(gt[0])=='GT_PRISM(3,1)':
-        #print 'index of PRISM: ', i
-        listPrism.append(i)
-    elif str(gt[0])=='GT_QK(3,1)':
-        #print 'index of HEXA: ', i
-        listHexa.append(i)
-    else:
-        print 'Geometric transformation: ', gt[0]
-
-print 'num Tetra: ', len(listTetra)
-print 'num Hexa: ', len(listHexa)
-print 'num Hexa: ', len(listHexa)
-print 'num Hexa: ', len(listHexa)
-
-
-mfu = gf.MeshFem(m, 3)
-
-mfu.set_fem(gf.Fem('FEM_QK(3,{d})'.format(d=degree)),listHexa)
-mfu.set_fem(gf.Fem('FEM_PYRAMID_LAGRANGE({d})'.format(d=degree)),listPyramid)
-mfu.set_fem(gf.Fem('FEM_PK_PRISM(3,{d})'.format(d=degree)),listPrism)
-mfu.set_fem(gf.Fem('FEM_PK(3,{d})'.format(d=degree)),listTetra)
-
-mim = gf.MeshIm(m, 3)
-
-
-# Model
-md = gf.Model('real')
-md.add_fem_variable('u',mfu)
-md.add_initialized_data('mu_para', Mu)
-md.add_initialized_data('lambda_para', Lambda)
-md.add_linear_generic_assembly_brick(mim,"lambda_para*Div_u*Div_Test_u + 
2*mu_para*Sym(Grad_u):Grad_Test_u")
-md.add_initialized_data('Fdata',[0.0,-1.0, 0.0])
-md.add_source_term_brick(mim, 'u', 'Fdata', NEUMANN_BOUNDARY)
-md.add_initialized_data('DirichletData', [0, 0, 0])
-md.add_Dirichlet_condition_with_simplification('u', 
DIRICHLET_BOUNDARY,'DirichletData')
-
-md.solve('max_res', 1E-9, 'max_iter', 100, 'noisy', 'lsolver', 'mumps', 
'lsearch', 'simplest',  'alpha min', 0.8)
-U = md.variable('u');
-
-
-mfer = gf.MeshFem(m,1)
-mfer.set_fem(gf.Fem('FEM_PK(3,{d})'.format(d=0)),listTetra)
-mfer.set_fem(gf.Fem('FEM_QK(3,{d})'.format(d=0)),listHexa)
-mfer.set_fem(gf.Fem('FEM_PYRAMID_LAGRANGE({d})'.format(d=0)),listPyramid)
-mfer.set_fem(gf.Fem('FEM_PK_PRISM(3,{d})'.format(d=0)),listPrism)
-
-divsigma = '(lambda_para+ mu_para)*(Hess_u(1,1,:) + Hess_u(2,2,:) + 
Hess_u(3,3,:) ) + mu_para*(Hess_u:Id( qdim(u) ))' 
-# 1a) interior residual
-bulkresidual = 
'sqr(element_size)*Norm_sqr({divsigma})*Test_psi'.format(divsigma=divsigma)
-
-ETA1tmp = gf.asm_generic(mim,1,bulkresidual,-1
-                        ,md
-                        ,'psi',True,mfer,np.zeros(mfer.nbdof())) 
-ETA1 = ETA1tmp [ ETA1tmp.size - mfer.nbdof() : ETA1tmp.size ]
-
-
-# 1b) jump at inner faces    
-sig_u = "(lambda_para*Trace(Grad_u)*Id(qdim(u)) + mu_para*(Grad_u + Grad_u'))"
-grad_u_neighbor = "Interpolate(Grad_u,neighbour_elt)"
-sig_u_neighbor = "(lambda_para*Trace({Grad_u})*Id(qdim(u)) + 
mu_para*(({Grad_u}) + ({Grad_u})'))".format(Grad_u=grad_u_neighbor)
-
-stress_jump_inner = "((({sig_u}) - ({sig_u_neighbor}))*Normal 
)".format(sig_u=sig_u,sig_u_neighbor=sig_u_neighbor)
-edgeresidual = 
"0.5*(element_size*Norm_sqr({stress_jump_inner})*2*0.5*(Test_psi + 
Interpolate(Test_psi,neighbour_elt)))".format(stress_jump_inner=stress_jump_inner)
-
-ETA2tmp = gf.asm_generic(mim,1,edgeresidual,INNER_FACES
-                        ,md
-                        ,'psi',True,mfer,np.zeros(mfer.nbdof()))
-ETA2 = ETA2tmp [ ETA2tmp.size - mfer.nbdof() : ETA2tmp.size ]
-
-
-# 1c) jump at NEUMANN_BOUNDARY  
-
-g = "[0; -1.0; 0]"
-stress_jump_at_Neumann = "(({g}) - ({Lambda}*Trace(Grad_u)*Id(qdim(u)) + 
{Mu}*(Grad_u+Grad_u'))*Normal )".format(g = g, Lambda= Lambda, Mu = Mu)
-
-edgeresidual_Neumann = 
"(element_size*Norm_sqr({stress_jump_at_Neumann})*Test_psi)".format(stress_jump_at_Neumann=stress_jump_at_Neumann)
-
-ETA3tmp = gf.asm_generic(mim,1,edgeresidual_Neumann,NEUMANN_BOUNDARY
-                        ,md
-                        ,'psi',True,mfer,np.zeros(mfer.nbdof()))
-
-ETA3 = ETA3tmp [ ETA3tmp.size - mfer.nbdof() : ETA3tmp.size ]
-
-print 'sum(ETA3): ', sum(ETA3)
-
-# 1d) jump at NEUMANN_BOUNDARY_NO_LOAD
-g = "[0; 0; 0]"
-stress_jump_at_Neumann = "(({g}) - ({Lambda}*Trace(Grad_u)*Id(qdim(u)) + 
{Mu}*(Grad_u+Grad_u'))*Normal )".format(g = g, Lambda= Lambda, Mu = Mu)
-
-edgeresidual_Neumann = 
"(element_size*Norm_sqr({stress_jump_at_Neumann})*Test_psi)".format(stress_jump_at_Neumann=stress_jump_at_Neumann)
-
-ETA4tmp = gf.asm_generic(mim,1,edgeresidual_Neumann,NEUMANN_BOUNDARY_NO_LOAD
-                        ,md ,'psi',True,mfer,np.zeros(mfer.nbdof()))
-
-ETA4 = ETA4tmp [ ETA4tmp.size - mfer.nbdof() : ETA4tmp.size ]
-
-print 'sum(ETA4): ', sum(ETA4)
-
-
-ETA_square = ETA1 + ETA2 + ETA3 + ETA4 # element wise
-
-ETA  = np.sqrt( ETA_square )# element wise
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+# Python GetFEM++ interface
+#
+# Copyright (C) 2018-2018 Huu Phuc Bui
+#
+# This file is a part of GetFEM++
+#
+# GetFEM++  is  free software;  you  can  redistribute  it  and/or modify it
+# under  the  terms  of the  GNU  Lesser General Public License as published
+# by  the  Free Software Foundation;  either version 2.1 of the License,  or
+# (at your option) any later version.
+# This program  is  distributed  in  the  hope  that it will be useful,  but
+# WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+# or  FITNESS  FOR  A PARTICULAR PURPOSE.  See the GNU Lesser General Public
+# License for more details.
+# You  should  have received a copy of the GNU Lesser General Public License
+# along  with  this program;  if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301, USA.
+#
+############################################################################
+"""  Test of computation of inter-element terms on a mixed 3D mesh with
+     hexaedrons, prims, pyramids and tetrahedrons.
+
+  This program is used to check that Python-GetFEM interface, and more
+  generally GetFEM are working.
+
+  $Id$
+"""
+
+import getfem as gf
+import numpy as np
+import os
+
+# parameters
+E = 1.0e3
+Nu = 0.25
+Lambda = E*Nu/((1.0+Nu)*(1.0-2.0*Nu))
+Mu = E/(2*(1+Nu))
+
+
+# define constants
+NEUMANN_BOUNDARY = 1
+NEUMANN_BOUNDARY_NO_LOAD = 2
+DIRICHLET_BOUNDARY = 3
+OMEGA = 4
+INNER_FACES=6
+
+degree = 1
+
+make_check=('srcdir' in os.environ);
+filename='../meshes/mixed_mesh.gmf'
+if (make_check):
+    filename=os.environ['srcdir']+'/'+filename
+
+m = gf.Mesh('load', filename)
+
+#--------------- boundary condtions
+# detect some boundary of the mesh
+
+face_left = m.outer_faces_with_direction([0, 0., -1.0], 0.01)
+face_right = m.outer_faces_with_direction([0., 0., 1.0], 0.01)
+
+face_top = m.outer_faces_with_direction([0., 1., 0], 0.01)
+face_bottom = m.outer_faces_with_direction([0., -1., 0], 0.01)
+face_top1 = m.outer_faces_with_direction([1., 0., 0], 0.01)
+face_bottom1 = m.outer_faces_with_direction([-1., 0., 0], 0.01)
+face_top_bottom =  
np.append(np.append(np.append(face_top,face_bottom,axis=1),face_top1 , axis=1), 
face_bottom1, axis=1)
+
+# create boundary regions
+m.set_region(NEUMANN_BOUNDARY,face_right)
+m.set_region(NEUMANN_BOUNDARY_NO_LOAD,face_top_bottom)
+m.set_region(DIRICHLET_BOUNDARY,face_left)
+
+in_faces = m.inner_faces()
+m.set_region(INNER_FACES, in_faces)
+
+
+listTetra = [];
+listHexa = [];
+listPrism = [];
+listPyramid = [];
+
+for i in range(m.nbcvs()):
+    gt = m.geotrans(i) # id of element
+    if str(gt[0])=='GT_PK(3,1)':
+        #print 'index of TETRA: ', i
+        listTetra.append(i)
+    elif str(gt[0])=='GT_PYRAMID(1)':
+        #print 'index of PYRAMID: ', i
+        listPyramid.append(i)
+    elif str(gt[0])=='GT_PRISM(3,1)':
+        #print 'index of PRISM: ', i
+        listPrism.append(i)
+    elif str(gt[0])=='GT_QK(3,1)':
+        #print 'index of HEXA: ', i
+        listHexa.append(i)
+    else:
+        print('Geometric transformation: ', gt[0])
+
+print('num Tetra: ', len(listTetra))
+print('num Hexa: ', len(listHexa))
+print('num Hexa: ', len(listHexa))
+print('num Hexa: ', len(listHexa))
+
+
+mfu = gf.MeshFem(m, 3)
+
+mfu.set_fem(gf.Fem('FEM_QK(3,{d})'.format(d=degree)),listHexa)
+mfu.set_fem(gf.Fem('FEM_PYRAMID_LAGRANGE({d})'.format(d=degree)),listPyramid)
+mfu.set_fem(gf.Fem('FEM_PK_PRISM(3,{d})'.format(d=degree)),listPrism)
+mfu.set_fem(gf.Fem('FEM_PK(3,{d})'.format(d=degree)),listTetra)
+
+mim = gf.MeshIm(m, 3)
+
+
+# Model
+md = gf.Model('real')
+md.add_fem_variable('u',mfu)
+md.add_initialized_data('mu_para', Mu)
+md.add_initialized_data('lambda_para', Lambda)
+md.add_linear_generic_assembly_brick(mim,"lambda_para*Div_u*Div_Test_u + 
2*mu_para*Sym(Grad_u):Grad_Test_u")
+md.add_initialized_data('Fdata',[0.0,-1.0, 0.0])
+md.add_source_term_brick(mim, 'u', 'Fdata', NEUMANN_BOUNDARY)
+md.add_initialized_data('DirichletData', [0, 0, 0])
+md.add_Dirichlet_condition_with_simplification('u', 
DIRICHLET_BOUNDARY,'DirichletData')
+
+md.solve('max_res', 1E-9, 'max_iter', 100, 'noisy', 'lsolver', 'mumps', 
'lsearch', 'simplest',  'alpha min', 0.8)
+U = md.variable('u');
+
+
+mfer = gf.MeshFem(m,1)
+mfer.set_fem(gf.Fem('FEM_PK(3,{d})'.format(d=0)),listTetra)
+mfer.set_fem(gf.Fem('FEM_QK(3,{d})'.format(d=0)),listHexa)
+mfer.set_fem(gf.Fem('FEM_PYRAMID_LAGRANGE({d})'.format(d=0)),listPyramid)
+mfer.set_fem(gf.Fem('FEM_PK_PRISM(3,{d})'.format(d=0)),listPrism)
+
+divsigma = '(lambda_para+ mu_para)*(Hess_u(1,1,:) + Hess_u(2,2,:) + 
Hess_u(3,3,:) ) + mu_para*(Hess_u:Id( qdim(u) ))' 
+# 1a) interior residual
+bulkresidual = 
'sqr(element_size)*Norm_sqr({divsigma})*Test_psi'.format(divsigma=divsigma)
+
+ETA1tmp = gf.asm_generic(mim,1,bulkresidual,-1
+                        ,md
+                        ,'psi',True,mfer,np.zeros(mfer.nbdof())) 
+ETA1 = ETA1tmp [ ETA1tmp.size - mfer.nbdof() : ETA1tmp.size ]
+
+
+# 1b) jump at inner faces    
+sig_u = "(lambda_para*Trace(Grad_u)*Id(qdim(u)) + mu_para*(Grad_u + Grad_u'))"
+grad_u_neighbor = "Interpolate(Grad_u,neighbour_elt)"
+sig_u_neighbor = "(lambda_para*Trace({Grad_u})*Id(qdim(u)) + 
mu_para*(({Grad_u}) + ({Grad_u})'))".format(Grad_u=grad_u_neighbor)
+
+stress_jump_inner = "((({sig_u}) - ({sig_u_neighbor}))*Normal 
)".format(sig_u=sig_u,sig_u_neighbor=sig_u_neighbor)
+edgeresidual = 
"0.5*(element_size*Norm_sqr({stress_jump_inner})*2*0.5*(Test_psi + 
Interpolate(Test_psi,neighbour_elt)))".format(stress_jump_inner=stress_jump_inner)
+
+ETA2tmp = gf.asm_generic(mim,1,edgeresidual,INNER_FACES
+                        ,md
+                        ,'psi',True,mfer,np.zeros(mfer.nbdof()))
+ETA2 = ETA2tmp [ ETA2tmp.size - mfer.nbdof() : ETA2tmp.size ]
+
+
+# 1c) jump at NEUMANN_BOUNDARY  
+
+g = "[0; -1.0; 0]"
+stress_jump_at_Neumann = "(({g}) - ({Lambda}*Trace(Grad_u)*Id(qdim(u)) + 
{Mu}*(Grad_u+Grad_u'))*Normal )".format(g = g, Lambda= Lambda, Mu = Mu)
+
+edgeresidual_Neumann = 
"(element_size*Norm_sqr({stress_jump_at_Neumann})*Test_psi)".format(stress_jump_at_Neumann=stress_jump_at_Neumann)
+
+ETA3tmp = gf.asm_generic(mim,1,edgeresidual_Neumann,NEUMANN_BOUNDARY
+                        ,md
+                        ,'psi',True,mfer,np.zeros(mfer.nbdof()))
+
+ETA3 = ETA3tmp [ ETA3tmp.size - mfer.nbdof() : ETA3tmp.size ]
+
+print('sum(ETA3): ', sum(ETA3))
+
+# 1d) jump at NEUMANN_BOUNDARY_NO_LOAD
+g = "[0; 0; 0]"
+stress_jump_at_Neumann = "(({g}) - ({Lambda}*Trace(Grad_u)*Id(qdim(u)) + 
{Mu}*(Grad_u+Grad_u'))*Normal )".format(g = g, Lambda= Lambda, Mu = Mu)
+
+edgeresidual_Neumann = 
"(element_size*Norm_sqr({stress_jump_at_Neumann})*Test_psi)".format(stress_jump_at_Neumann=stress_jump_at_Neumann)
+
+ETA4tmp = gf.asm_generic(mim,1,edgeresidual_Neumann,NEUMANN_BOUNDARY_NO_LOAD
+                        ,md ,'psi',True,mfer,np.zeros(mfer.nbdof()))
+
+ETA4 = ETA4tmp [ ETA4tmp.size - mfer.nbdof() : ETA4tmp.size ]
+
+print('sum(ETA4): ', sum(ETA4))
+
+
+ETA_square = ETA1 + ETA2 + ETA3 + ETA4 # element wise
+
+ETA  = np.sqrt( ETA_square )# element wise



reply via email to

[Prev in Thread] Current Thread [Next in Thread]