Index: 95/branches/golem95_without_olo_cmake/CMakeLists.txt =================================================================== --- 95/branches/golem95_without_olo_cmake/CMakeLists.txt (revision 169) +++ 95/branches/golem95_without_olo_cmake/CMakeLists.txt (revision 170) @@ -1,62 +1,61 @@ # we require at least version 2.8 (may it works with version 2.6, to be checked) cmake_minimum_required(VERSION 2.8) project(Golem) enable_language(Fortran) #message("test dossier : ${Golem_SOURCE_DIR}") # # we create a temporary directory temp_ligolem95 to store the .mod file and the lib # set(my_location ${Golem_SOURCE_DIR}/build/temp_libgolem95) set(LIBRARY_OUTPUT_PATH ${my_location}/lib) set(my_include ${my_location}/include) # # with-precision must be double or quadrupole, it will determined the precision used # in the computation. We also write the file src/module/precision_golem.f90 from # src/module/precision_golem.f90.in # It is double by default but can be overwritten by passing to cmake the # option -Dwith_precision=quadrupole # set(with-precision double CACHE STRING "precision of the loop library") if(${with-precision} STREQUAL double) set(fortran_real_kind 8) elseif(${with-precision} STREQUAL quadrupole) set(fortran_real_kind 16) else(${with-precision} STREQUAL double) message(FATAL_ERROR "We are in trouble....the variable with-precision which is set to ${with-precision} has not the right value : double or quadrupole") endif(${with-precision} STREQUAL double) configure_file(${Golem_SOURCE_DIR}/src/module/precision_golem.f90.in ${Golem_SOURCE_DIR}/src/module/precision_golem.f90 @ONLY) # # we define the directory in which the compiler will find the .mod files # checked with gfortran and g95, need to be checked with other fortran compilers # set(CMAKE_Fortran_MODULE_DIRECTORY ${my_include}) # # type_lib must be STATIC or SHARED. # It defines the type of library which will be built # It is SHARED by default but can be overwritten by passing to cmake the # option -Dtype_lib=STATIC # set(type_lib SHARED CACHE STRING "static or shared library") # if(${type_lib} STREQUAL SHARED) set(CMAKE_Fortran_FLAGS "-fPIC") endif(${type_lib} STREQUAL SHARED) # # we add the following sub directory which contains CMakeLists.txt file # add_subdirectory(avh_olo-2.2.1) add_subdirectory(src) # # then we build the library golem (which depends on the library avh_olo) with all the object target created in each sub-directories of src # -add_library(golem ${type_lib} $<TARGET_OBJECTS:module> $<TARGET_OBJECTS:kinematic> $<TARGET_OBJECTS:numerical> $<TARGET_OBJECTS:one_point> $<TARGET_OBJECTS:two_point> $<TARGET_OBJECTS:three_point> $<TARGET_OBJECTS:four_point> $<TARGET_OBJECTS:form_factor> $<TARGET_OBJECTS:interface>) -target_link_libraries(golem avh_olo) +add_library(golem ${type_lib} $<TARGET_OBJECTS:module> $<TARGET_OBJECTS:kinematic> $<TARGET_OBJECTS:numerical> $<TARGET_OBJECTS:one_point> $<TARGET_OBJECTS:two_point> $<TARGET_OBJECTS:three_point> $<TARGET_OBJECTS:four_point> $<TARGET_OBJECTS:form_factor> $<TARGET_OBJECTS:interface> $<TARGET_OBJECTS:avh_olo_obj>) # # we configure the CMakeList.txt of the demos directory to be able to build the Makefile of this directory # configure_file(${Golem_SOURCE_DIR}/demos/CMakeLists.txt.in ${Golem_SOURCE_DIR}/demos/CMakeLists.txt @ONLY) # # then we install the .mod files and the golem library in the chosen location # install(TARGETS golem LIBRARY DESTINATION ${CMAKE_INSTALL_PREFIX}/lib ARCHIVE DESTINATION ${CMAKE_INSTALL_PREFIX}/lib) install(DIRECTORY ${my_include} DESTINATION ${CMAKE_INSTALL_PREFIX}) Index: 95/branches/golem95_without_olo_cmake/avh_olo-2.2.1/CMakeLists.txt =================================================================== --- 95/branches/golem95_without_olo_cmake/avh_olo-2.2.1/CMakeLists.txt (revision 169) +++ 95/branches/golem95_without_olo_cmake/avh_olo-2.2.1/CMakeLists.txt (revision 170) @@ -1,11 +1,8 @@ -cmake_minimum_required(VERSION 2.8) -enable_language(Fortran) +include_directories(${my_include}) file( GLOB source_files *.f90 ) -#add_library(avh_olo SHARED ${source_files}) -add_library(avh_olo STATIC ${source_files}) -install(TARGETS avh_olo LIBRARY DESTINATION ${CMAKE_INSTALL_PREFIX}/lib ARCHIVE DESTINATION ${CMAKE_INSTALL_PREFIX}/lib) +add_library(avh_olo_obj OBJECT ${source_files}) Index: 95/branches/golem95_without_olo_cmake/demos/demo_3point.f90 =================================================================== --- 95/branches/golem95_without_olo_cmake/demos/demo_3point.f90 (revision 169) +++ 95/branches/golem95_without_olo_cmake/demos/demo_3point.f90 (revision 170) @@ -1,434 +1,517 @@ ! ! this program computes three-point functions ! in n and n+2 dimensions. ! One can use the form factors ! or directly the dedicated three-point functions. ! The normalisation is as follows: ! We define I_N^n= mu^(4-n) \int d^n k/(i*Pi^(n/2))*func(k,p_i) ! = r_Gam *(P2/eps^2+P1/eps+P0) ! n=4-2*eps ! r_Gam= Gamma(1+eps)*Gamma(1-eps)^2/Gamma(1-2eps) ! the program gives numbers for P2,P1,P0 ! the default value for the scale \mu is 1, ! it can be changed by the user by defining mu2_scale_par = xxx ! program main ! use precision_golem ! to get the type ki (for real and complex) use matrice_s use form_factor_type use form_factor_3p ! module containing the three-point form factors use constante use generic_function_3p ! module containing the generic three-point function use parametre + use avh_olo, only : olo_c0,olo_onshell,olo_scale + ! test + !use func_gn + use function_3p1m_2mi ! implicit none ! type(form_factor) :: res6,res6a complex(ki), dimension(3) :: verif real(ki) :: mass_sq_1,mass_sq_2,mass_sq_3 !real(ki) :: mass_int_sq_1,mass_int_sq_2,mass_int_sq_3,mu2,mu02,lmu2 complex(ki) :: mass_int_sq_1,mass_int_sq_2,mass_int_sq_3 real(ki) :: mu2,mu02,lmu2 integer :: choix,choix_kinem + complex(ki), dimension(0:2) :: res_olo + complex(ki) :: cp1,cp2,cp3 + ! test + real(ki), dimension(2) :: tist0 + real(ki), dimension(6) :: veruf + real(ki) :: s13 ! write (*,*) 'Choose from the following kinematics:' write (*,*) '1) one off-shell leg, no internal masses' write (*,*) '2) two off-shell legs, no internal masses' write (*,*) '3) three off-shell legs, no internal masses (finite)' write (*,*) '4) two off-shell legs, one internal mass (QL 3), ' write (*,*) '5) one off-shell leg, one on-shell massive leg (one internal mass, QL 4)' write (*,*) '6) two on-shell massive legs (one internal mass, QL 5)' write (*,*) '7) one off-shell leg, two on-shell massive legs (two internal masses, QL 6)' read (*,*) choix_kinem ! ! Opening of the error files ! open(unit=19,file='error_3point.txt',status='unknown') ! ! opening of the files containing the results ! open(unit=17,file='test3point.txt',status='unknown') ! ! These are the entries of the S matrix ! They are related to the cuts of the following diagram ! All the momenta are incoming : p1+p2+p3 = 0 ! ! | ! | p1 ! | ! /\ ! / \ ! (1) / \ (3) ! / \ ! /--->----\ ! / (2) \ ! p2 / \ p3 ! ! S(1,2) = p2^2 ! S(2,3) = p3^2 ! S(3,1) = p1^2 ! ! Allocates memory to store the set of initial propagators, the S matrix, ! its inverse and the b coefficients. ! This call will allocate a derived type s_mat_p object. ! Includes calls to allocation_s and initializes the caching system ! call initgolem95(3) ! ! if (choix_kinem == 1) then ! mass_int_sq_1 = 0.0_ki mass_int_sq_2 = 0._ki mass_int_sq_3 = 0.0_ki mass_sq_1 = 0.0_ki mass_sq_2 = 0.0_ki mass_sq_3 = -2.0_ki ! else if (choix_kinem == 2) then ! mass_int_sq_1 = 0.0_ki mass_int_sq_2 = 0._ki mass_int_sq_3 = 0.0_ki mass_sq_1 = 0.0_ki mass_sq_2 = 10.0_ki mass_sq_3 = -60.0_ki ! else if (choix_kinem == 3) then ! mass_int_sq_1 = 0.0_ki mass_int_sq_2 = 0._ki mass_int_sq_3 = 0.0_ki mass_sq_1 = -50.0_ki mass_sq_2 = 10.0_ki mass_sq_3 = -60.0_ki ! ! case p1^2, p2^2 /= m1^2, internal line 1 massive (QL3) else if (choix_kinem == 4) then ! mass_int_sq_1 = 20.0_ki mass_int_sq_2 = 0._ki mass_int_sq_3 = 0.0_ki mass_sq_1 = -123.0_ki mass_sq_2 = -60.0_ki mass_sq_3 = 0.0_ki ! ! case p1^2 = m1^2, p2^2 /= m1^2, internal line 1 massive (QL4) else if (choix_kinem == 5) then ! mass_int_sq_1 = 5.0_ki mass_int_sq_2 = 0._ki mass_int_sq_3 = 0.0_ki mass_sq_1 = mass_int_sq_1 mass_sq_2 = 7.0_ki mass_sq_3 = 0.0_ki ! ! case p1^2 = m1^2, p2^2 = m1^2, internal line 1 massive (QL5) else if (choix_kinem == 6) then ! mass_int_sq_1 = 5.0_ki mass_int_sq_2 = 0._ki mass_int_sq_3 = 0.0_ki mass_sq_1 = mass_int_sq_1 mass_sq_2 = mass_int_sq_1 mass_sq_3 = 0.0_ki ! ! case p2^2 = m1^2; p1^2 /= m1^2,m3^2,nonzero; p3^2=m3^2, internal lines 1,2 massive (QL6) else if (choix_kinem == 7) then ! - mass_int_sq_1 = 9.0_ki + !mass_int_sq_1 = 9.0_ki + !mass_int_sq_2 = 0.0_ki + !mass_int_sq_3 = 3.0_ki + !mass_sq_1 = 25.0_ki + !mass_sq_2 = mass_int_sq_1 + !mass_sq_3 = mass_int_sq_3 + ! point de gosam + !s_mat(1,1) = -59512.500000000000 + !s_mat(1,2) = 0.0000000000000000 + !s_mat(1,3) = 1755140.0110706163 + !s_mat(2,1) = 0.0000000000000000 + !s_mat(2,2) = 0.0000000000000000 + !s_mat(2,3) = 0.0000000000000000 + !s_mat(3,1) = 1755140.0110706163 + !s_mat(3,2) = 0.0000000000000000 + !s_mat(3,3) = -59512.500000000000 + !mass_int_sq_1 = 59512.500000000000_ki/2._ki + !mass_int_sq_2 = 0.0_ki + !mass_int_sq_3 = 59512.500000000000_ki/2._ki + !mass_sq_1 = -1.e-14_ki + !mass_sq_1 = -1.00001e-6_ki + !mass_sq_1 = -9.99999e-5_ki + !!mass_sq_1 = -6.000001000e-6_ki ! F + !mass_sq_1 = -6.000010000e-6_ki ! T + !mass_sq_1 = -6.005999000e-3_ki ! F + !mass_sq_1 = -6.006010000e-3_ki ! T + !mass_sq_1 = 0._ki + mass_int_sq_1 = 41904.461762487612_ki mass_int_sq_2 = 0.0_ki - mass_int_sq_3 = 3.0_ki - mass_sq_1 = 25.0_ki + mass_int_sq_3 = 88724.816017023972_ki + !mass_sq_1 = -6.5777591749792919E-002_ki + mass_sq_1 = -9.9E-012_ki mass_sq_2 = mass_int_sq_1 mass_sq_3 = mass_int_sq_3 ! + !mass_sq_1 = -max(real(mass_int_sq_1,ki),real(mass_int_sq_3,ki))*1.e-6_ki - 1.e-8_ki + !mass_sq_1 = -6._ki*1.e-5_ki - 1.e-9_ki + !mass_sq_1 = (1755140.0110706163_ki*1.e+2_ki+mass_int_sq_1+mass_int_sq_3) + !mass_sq_1 = (1755140.0110706163_ki+mass_int_sq_1+mass_int_sq_3) + ! ! case p2^2=m1^2; p1^2 /= m1^2,nonzero; p3^2=m1^2, internal lines 1,2 massive (QL6 with internal masses equal) else if (choix_kinem == 8) then ! mass_int_sq_1 = 5.0_ki mass_int_sq_2 = 0.0_ki mass_int_sq_3 = mass_int_sq_1 mass_sq_1 = 25.0_ki mass_sq_2 = mass_int_sq_1 mass_sq_3 = mass_int_sq_3 ! else if (choix_kinem == 9) then ! - mass_int_sq_1 = (7.6751408576965332_ki,0.0000000000000000_ki) - mass_int_sq_2 = (7.6751408576965332_ki,-0.14250832796096802_ki) + !mass_int_sq_1 = (7.6751408576965332_ki,0.0000000000000000_ki) + !mass_int_sq_2 = (8.6751408576965332_ki,-0.00000000000000000_ki) + !mass_int_sq_3 = (0.0000000000000000_ki,0.0000000000000000_ki) + !mass_sq_1 = 1.7548424530029297_ki + !mass_sq_2 = 2.e-3_ki + !mass_sq_3 = 1.7548424530029297_ki + mass_int_sq_2 = (0.0_ki,0.0000000000000000_ki) + !mass_int_sq_2 = (7.e-2_ki,-2.e-3_ki) + !mass_int_sq_2 = (14783.519004389145_ki,-2.e-3_ki) + mass_int_sq_1 = (34103.512211749876_ki,-2.e-3_ki) + !mass_int_sq_1 = (96757.361140280089_ki,-2.e-3_ki) mass_int_sq_3 = (0.0000000000000000_ki,0.0000000000000000_ki) - mass_sq_1 = 4.3248424530029297_ki - mass_sq_2 = 0._ki - mass_sq_2 = 1.e-9_ki - mass_sq_3 = -1.7544794082641602_ki + !mass_sq_1 = -1_ki + !mass_sq_1 = -32135.489570842983_ki + mass_sq_3 = -82900.877464665973_ki + !mass_sq_3 = 84153.449517642614_ki + !mass_sq_2 = 0._ki + mass_sq_2 = 1.e-4_ki + mass_sq_1 = 0._ki + !mass_sq_1 = 49585.537094286439_ki + !mass_sq_2 = -26521.820525048854_ki + !mass_sq_3 = -3872.6202490537107_ki + !mass_int_sq_1 = (99755.959009261715_ki,0.0000000000000000_ki) + !mass_int_sq_2 = (56682.470761127333_ki,0.0000000000000000_ki) + !mass_int_sq_3 = (96591.537549612491_ki,0.0000000000000000_ki) + ! ! end if ! ! Definition of the S matrix ! s_mat(1,1) = -2.0_ki*mass_int_sq_1 s_mat(1,2) = mass_sq_2 - mass_int_sq_1 - mass_int_sq_2 s_mat(1,3) = mass_sq_1 - mass_int_sq_1 - mass_int_sq_3 ! s_mat(2,1) = s_mat(1,2) s_mat(2,2) = -2.0_ki*mass_int_sq_2 s_mat(2,3) = mass_sq_3 - mass_int_sq_2 - mass_int_sq_3 ! s_mat(3,1) = s_mat(1,3) s_mat(3,2) = s_mat(2,3) s_mat(3,3) = -2.0_ki*mass_int_sq_3 ! ! This call fills the internal array s_mat_r. ! It also assigns the integers in s_mat_p, which encode the positions ! of complex mass entries and zero mass entries. It includes call to init_invs ! call preparesmatrix() ! ! write (*,*) 'Choose what the program should compute:' write (*,*) '0) scalar three-point function in n dimensions' write (*,*) '1) three-point function in n dimensions with one Feynman parameter' write (*,*) '2) three-point function in n dimensions with two Feynman parameters' write (*,*) '3) three-point function in n dimensions with three Feynman parameters' write (*,*) '4) scalar three-point function in n+2 dimensions' write (*,*) '5) three-point function in n+2 dimensions with one Feynman parameter' write (*,*) '6) test of the mu independence' read (*,*) choix ! ! info for user if (choix == 0) then ! write (*,*) 'calculating n-dim scalar 3-point fctn. with ' ! else if (choix == 1) then ! write (*,*) 'calculating n-dim rank one (z1) 3-point fctn. with' ! else if (choix == 2) then ! write (*,*) 'calculating n-dim rank two (z1*z2) 3-point fctn. with' ! else if (choix == 3) then ! write (*,*) 'calculating n-dim rank three (z1^2*z3) 3-point fctn. with' ! else if (choix == 4) then ! write (*,*) 'calculating (n+2)-dim scalar 3-point fctn. with' ! else if (choix == 5) then ! write (*,*) 'calculating (n+2)-dim rank one (z2) 3-point fctn. with' ! end if ! if (choix_kinem == 1) then ! write (*,*) 'one off-shell leg' ! else if (choix_kinem == 2) then ! write (*,*) 'two off-shell legs' ! else if (choix_kinem == 3) then ! write (*,*) 'three off-shell legs' ! end if ! write (*,*) 'the result has been written to the file test3point.txt' ! ! start calculation ! ! To change the value of mu^2 (in GeV) (set to 1. by default) ! uncomment this line ! mu2_scale_par = 12._ki ! ! store original mu^2 + !mu2_scale_par = 29756.25_ki! + mu2_scale_par = 1._ki! mu02 = mu2_scale_par ! - ! ! In the following the integrals f3p_x have to be called with argument ! s_mat_p. This was defined with the call to preparesmatrix. ! if (choix == 0) then ! ! Result for the scalar integral in n dimension ! ! both are working ! + !tist0 = ge(1,2.e-13_ki,5._ki,3._ki,.false.) + !tist0 = ge(1,0._ki,5._ki,3._ki,.false.) + !write(*,*) 'test0 : ',tist0 + !stop res6 = a30(s_null) verif = f3p(s_mat_p,b_ref) + cp1 = cmplx(mass_sq_1,0._ki,ki) + cp2 = cmplx(mass_sq_2,0._ki,ki) + cp3 = cmplx(mass_sq_3,0._ki,ki) + call olo_onshell(1.e-10_ki) + call olo_scale(sqrt(mu2_scale_par)) + call olo_c0(res_olo,mass_sq_1,mass_sq_2,mass_sq_3,mass_int_sq_3,mass_int_sq_1,mass_int_sq_2) ! ! the labels 1,2,3 correspond to Feynman parameters z1,z2,z3 else if (choix == 1) then ! ! Results for integrals in n dimensions with one Feynman parameter ! in the numerator: z1 ! res6 = -a31(2,s_null) verif = f3p(s_mat_p,b_ref,2) - !~ res6 = -a31(3,s_null) - !~ verif = f3p(s_mat,b_ref,3) + !res6 = -a31(3,s_null) + !verif = f3p(s_mat_p,b_ref,3) ! else if (choix == 2) then ! ! Results for integrals in n dimensions with two Feynman parameters ! in the numerator: z1*z2 ! res6 = a32(1,2,s_null) verif = f3p(s_mat_p,b_ref,1,2) !~ res6 = a32(2,2,s_null) !~ verif = f3p(s_mat,b_ref,2,2) ! else if (choix == 3) then ! ! Results for integrals in n dimensions with three Feynman parameters ! at the numerator: z1^2*z3 ! res6 = -a33(2,2,2,s_null) verif = f3p(s_mat_p,b_ref,2,2,2) ! else if (choix == 4) then ! ! Results for integrals in n+2 dimensions with no Feynman parameters ! at the numerator: ! res6 = -2.0_ki*b32(s_null) verif = czero ! complex zero. defined in module constante. verif(2:3) = f3p_np2(s_mat_p,b_ref) + s13 = mass_sq_1 - real(mass_int_sq_1,ki) - real(mass_int_sq_3,ki) + veruf = f3p1m_2mi(s13,real(mass_int_sq_1,ki),real(mass_int_sq_3,ki),2,2,2) + write (6,*) 'Check with f3p1m_2mi function:' + write (6,'(" 1/epsilon^2 * (",e16.10,1x,"+ I*",1x,e16.10,")")') veruf(1),veruf(2) + write (6,'("+ 1/epsilon * (",e16.10,1x,"+ I*",1x,e16.10,")")') veruf(3),veruf(4) + write (6,'("+ 1 * (",e16.10,1x,"+ I*",1x,e16.10,")")') veruf(5),veruf(6) ! else if (choix == 5) then ! ! Results for integrals in n+2 dimensions with one Feynman parameters ! at the numerator: z2 ! res6 = 2.0_ki*b33(2,s_null) verif = czero verif(2:3) = f3p_np2(s_mat_p,b_ref,2) ! else if (choix == 6) then ! ! by default, mu2_scale_par = 1._ki ! take scalar triangle as example res6=A30(s_null) ! we have to reset the cache in order that the new value ! of mu2_scale_par will be effective. A call to preparesmatrix ! is sufficient. ! call preparesmatrix() ! ! we change the value of mu^2 ! mu2 = 34._ki lmu2 = log(mu2/mu2_scale_par) mu2_scale_par = mu2 res6a = A30(s_null) ! end if ! write (17,*) 'The kinematics is:' write (17,*) '' write (17,*) ' | ' write (17,*) ' | p1 ' write (17,*) ' | ' write (17,*) ' /\ ' write (17,*) ' / \ ' write (17,*) ' (1) / \ (3) ' write (17,*) ' / \ ' write (17,*) ' /--->----\ ' write (17,*) ' / (2) \ ' write (17,*) 'p2 / \ p3' write (17,*) '' write (17,*) 'p1+p2+p3 = 0' write (17,*) '' write (17,*) '(p1)^2 =',mass_sq_1 write (17,*) '(p2)^2 =',mass_sq_2 write (17,*) '(p3)^2 =',mass_sq_3 write (17,*) 'm1^2 =',mass_int_sq_1 write (17,*) 'm2^2 =',mass_int_sq_2 write (17,*) 'm3^2 =',mass_int_sq_3 write (17,*) 'mu^2 =',mu2_scale_par write (17,*) '' write (17,*) 'defining I_N^n= mu^(4-n) \int d^n k/(i*Pi^(n/2))*func(k,p_i)' write (17,*) '= r_Gam *(P2/eps^2+P1/eps+P0),' write (17,*) 'n = 4-2*eps,' write (17,*) 'r_Gam = Gamma(1+eps)*Gamma(1-eps)^2/Gamma(1-2eps)' write (17,*) 'the program gives numbers for P2,P1,P0' write (17,*) '' ! write (17,*) 'result=' write (17,'(" 1/epsilon^2 * (",e16.10,1x,"+ I*",1x,e16.10,")")') real(res6%a,ki),aimag(res6%a) write (17,'("+ 1/epsilon * (",e16.10,1x,"+ I*",1x,e16.10,")")') real(res6%b,ki),aimag(res6%b) write (17,'("+ 1 * (",e16.10,1x,"+ I*",1x,e16.10,")")') real(res6%c,ki),aimag(res6%c) write (17,*) '' write (6,*) 'result=' write (6,'(" 1/epsilon^2 * (",e16.10,1x,"+ I*",1x,e16.10,")")') real(res6%a,ki),aimag(res6%a) write (6,'("+ 1/epsilon * (",e16.10,1x,"+ I*",1x,e16.10,")")') real(res6%b,ki),aimag(res6%b) write (6,'("+ 1 * (",e16.10,1x,"+ I*",1x,e16.10,")")') real(res6%c,ki),aimag(res6%c) + write (6,*) 'result olo=' + write (6,'(" 1/epsilon^2 * (",e16.10,1x,"+ I*",1x,e16.10,")")') real(res_olo(2),ki),aimag(res_olo(2)) + write (6,'("+ 1/epsilon * (",e16.10,1x,"+ I*",1x,e16.10,")")') real(res_olo(1),ki),aimag(res_olo(1)) + write (6,'("+ 1 * (",e16.10,1x,"+ I*",1x,e16.10,")")') real(res_olo(0),ki),aimag(res_olo(0)) ! if ( choix < 6 ) then ! write (6,*) 'Check with dedicated function:' write (6,'(" 1/epsilon^2 * (",e16.10,1x,"+ I*",1x,e16.10,")")') verif(1) write (6,'("+ 1/epsilon * (",e16.10,1x,"+ I*",1x,e16.10,")")') verif(2) write (6,'("+ 1 * (",e16.10,1x,"+ I*",1x,e16.10,")")') verif(3) write (17,*) 'Check with dedicated function:' write (17,'(" 1/epsilon^2 * (",e16.10,1x,"+ I*",1x,e16.10,")")') verif(1) write (17,'("+ 1/epsilon * (",e16.10,1x,"+ I*",1x,e16.10,")")') verif(2) write (17,'("+ 1 * (",e16.10,1x,"+ I*",1x,e16.10,")")') verif(3) ! else if ( choix ==6 ) then ! write (17,*) 'The preceding result has been computed with mu^2=',mu02 write (17,*) ' ' write (17,*) 'Now setting by hand mu^2=',mu2 write (17,*) 'and expanding (',mu2,'/',mu02,')^epsilon around epsilon=0' write (17,'(" 1/epsilon^2 * (",e16.10,1x,"+ I*",1x,e16.10,")")') real(res6%a,ki),aimag(res6%a) write (17,'("+ 1/epsilon * (",e16.10,1x,"+ I*",1x,e16.10,")")') real(res6%b,ki)+ & &real(res6%a,ki)*lmu2,aimag(res6%b)+aimag(res6%a)*lmu2 write (17,'("+ 1 * (",e16.10,1x,"+ I*",1x,e16.10,")")') & &real(res6%c,ki) + lmu2*real(res6%b,ki) + lmu2**2*real(res6%a,ki)/2._ki,& &aimag(res6%c) + lmu2*aimag(res6%b) + lmu2**2*aimag(res6%a)/2._ki write (17,*) '' write (17,*) 'check with direct calculation using the global variable mu2_scale_par=',mu2 write (17,'(" 1/epsilon^2 * (",e16.10,1x,"+ I*",1x,e16.10,")")') real(res6a%a,ki),aimag(res6a%a) write (17,'("+ 1/epsilon * (",e16.10,1x,"+ I*",1x,e16.10,")")') real(res6a%b,ki),aimag(res6a%b) write (17,'("+ 1 * (",e16.10,1x,"+ I*",1x,e16.10,")")') real(res6a%c,ki),aimag(res6a%c) ! *********************************** write (6,*) ' ' write (6,*) 'The preceding result has been computed with mu^2=',mu02 write (6,*) 'Now setting by hand mu^2=',mu2 write (6,*) 'and expanding (',mu2,'/',mu02,')^epsilon around epsilon=0' write (6,'(" 1/epsilon^2 * (",e16.10,1x,"+ I*",1x,e16.10,")")') real(res6%a,ki),aimag(res6%a) write (6,'("+ 1/epsilon * (",e16.10,1x,"+ I*",1x,e16.10,")")') real(res6%b,ki) + & & real(res6%a,ki)*lmu2, aimag(res6%b)+aimag(res6%a)*lmu2 write (6,'("+ 1 * (",e16.10,1x,"+ I*",1x,e16.10,")")') & &real(res6%c,ki) + lmu2*real(res6%b,ki) + lmu2**2*real(res6%a,ki)/2._ki,& &aimag(res6%c) + lmu2*aimag(res6%b) + lmu2**2*aimag(res6%a)/2._ki ! write (6,*) '' write (6,*) 'check with direct calculation using the global variable mu2_scale_par=',mu2 write (6,'(" 1/epsilon^2 * (",e16.10,1x,"+ I*",1x,e16.10,")")') real(res6a%a,ki),aimag(res6a%a) write (6,'("+ 1/epsilon * (",e16.10,1x,"+ I*",1x,e16.10,")")') real(res6a%b,ki),aimag(res6a%b) write (6,'("+ 1 * (",e16.10,1x,"+ I*",1x,e16.10,")")') real(res6a%c,ki),aimag(res6a%c) ! write (6,*) ' ' ! else ! write (6,*) 'invalid choice, option number must be < 7' ! endif ! routine to free the cache and allocated memory ! call exitgolem95() ! close(17) close(19) ! end program main ! ! Index: 95/branches/golem95_without_olo_cmake/demos/CMakeLists.txt.in =================================================================== --- 95/branches/golem95_without_olo_cmake/demos/CMakeLists.txt.in (revision 169) +++ 95/branches/golem95_without_olo_cmake/demos/CMakeLists.txt.in (revision 170) @@ -1,23 +1,23 @@ cmake_minimum_required(VERSION 2.8) project(TestGolem) enable_language(Fortran) -set(demo_programs demo_3point demo_4point demo_5point demo_6point demo_4photon demo_a55_dets_sing demo_cmplx_masses demo_detg SusyLandau) +set(demo_programs demo_3point demo_4point demo_5point demo_6point demo_4photon demo_detg_3p demo_a55_dets_sing demo_cmplx_masses demo_detg SusyLandau) set(golemlib "-L@CMAKE_INSTALL_PREFIX@/lib -lgolem -lavh_olo") include_directories(@CMAKE_INSTALL_PREFIX@/include) # the targets demo_tens_rec and demo_LT are built outside from this loop foreach(name_program ${demo_programs}) add_executable(${name_program} "${name_program}.f90") target_link_libraries(${name_program} ${golemlib}) endforeach(name_program) add_executable(demo_tens_rec demo_tens_mod.f90 demo_tens_rec.f90) target_link_libraries(demo_tens_rec ${golemlib}) add_executable(demo_LT demo_LT.f) target_link_libraries(demo_LT ${golemlib}) Index: 95/branches/golem95_without_olo_cmake/src/integrals/four_point/CMakeLists.txt =================================================================== --- 95/branches/golem95_without_olo_cmake/src/integrals/four_point/CMakeLists.txt (revision 169) +++ 95/branches/golem95_without_olo_cmake/src/integrals/four_point/CMakeLists.txt (revision 170) @@ -1,11 +1,10 @@ include_directories(${my_include}) -#include_directories(${MY_INCLUDE}/module ${MY_INCLUDE}/kinematic ${MY_INCLUDE}/numerical ${MY_INCLUDE}/integrals/three_point ${CMAKE_SOURCE_DIR}/avh_olo-2.2.1) file( GLOB source_files *.f90 ) add_library(four_point OBJECT ${source_files}) -add_dependencies(four_point module kinematic numerical three_point) +add_dependencies(four_point module kinematic numerical three_point avh_olo_obj) Index: 95/branches/golem95_without_olo_cmake/src/form_factor/CMakeLists.txt =================================================================== --- 95/branches/golem95_without_olo_cmake/src/form_factor/CMakeLists.txt (revision 169) +++ 95/branches/golem95_without_olo_cmake/src/form_factor/CMakeLists.txt (revision 170) @@ -1,11 +1,10 @@ -#include_directories(${MY_INCLUDE}/module ${MY_INCLUDE}/kinematic ${MY_INCLUDE}/integrals/one_point ${MY_INCLUDE}/#integrals/two_point ${MY_INCLUDE}/integrals/three_point ${MY_INCLUDE}/integrals/four_point) include_directories(${my_include}) file( GLOB source_files *.f90 ) add_library(form_factor OBJECT ${source_files}) add_dependencies(form_factor module kinematic one_point two_point three_point four_point) Index: 95/branches/golem95_without_olo_cmake/src/module/CMakeLists.txt =================================================================== --- 95/branches/golem95_without_olo_cmake/src/module/CMakeLists.txt (revision 169) +++ 95/branches/golem95_without_olo_cmake/src/module/CMakeLists.txt (revision 170) @@ -1,11 +1,9 @@ -#include_directories(${GOLEM_SOURCE_DIR}/avh_olo-2.2.1) -#include_directories(${CMAKE_SOURCE_DIR}/avh_olo-2.2.1) include_directories(${my_include}) file( GLOB source_files *.f90 ) add_library(module OBJECT ${source_files}) -add_dependencies(module avh_olo) +add_dependencies(module avh_olo_obj)