Skip to content

Commit 2dce26c

Browse files
Merge branch 'feature/JINTRAC_userEDGE2D' into JINTRAC_develop
2 parents 4073c16 + a561ec0 commit 2dce26c

8 files changed

Lines changed: 76 additions & 40 deletions

File tree

‎CHANGELOG.md‎

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,32 @@
1414
# Changelog of EIRENE repository:
1515
---
1616

17+
## X. Bonnin - SOLPS_develop - bc2a2055bc9e2086dec38e452ccde59f31c62a4a
18+
19+
### Based on SOLPS_wide_grids - fed40a626b2730ec9a0fbf987833905f70237b8f
20+
21+
** Changes **
22+
23+
- Fixed X11 library location in PITAGORA host configuration files (with contribution from E. Tonello)
24+
- Pre-evaluated pkg-config statements to reduce compilation time
25+
- Cleaned up CMake configuration files
26+
- Fixed bug preventing correct compilation in debug mode
27+
- Made CMake build self-contained; improved compiler detection logic (ifx vs. ifort fallback)
28+
- Compile b2mod_dimensions.F as part of EIRENE library to ensure module availability (with contribution from S. Pinches)
29+
- Added IntelLLVM compiler and JSON-Fortran CMake package detection; added safeties for mis-specified graphical library paths
30+
- Added error message for OpenMP incompatibility with ifx compiler; made error non-fatal to allow 2025b toolchain builds to proceed
31+
- Fixed parallel-build race condition: generate version.f into build directory instead of source tree (with contribution from S. Pinches)
32+
- Increased minimum CMake version requirement to 3.10; removed CMake deprecation warnings
33+
- Corrected LaTeX syntax error in Manual
34+
- Fixed fort.44 wall-loading output title field sizes (with contribution from J. Lore)
35+
- Added JINTRAC coupling interface to the SOLPS-ITER/Eirene integration (with contribution from R. Futtersack)
36+
- Fixed W-0279 "Cannot inline - data type mismatch" compiler warnings with NVHPC 24.1: replaced AIMAG() intrinsic calls with Fortran 2003 %IM component selectors for complex variables in eirmod_photon.F
37+
- Eliminated remaining NVHPC 24.1 inliner warnings by moving EIRENE_ph_faddeeva2 from module-level to internal procedure of EIRENE_ph_lorvdw
38+
39+
No CI cases updated.
40+
41+
---
42+
1743
## X. Bonnin - SOLPS_wide_grids
1844

1945
### Based on SOLPS_event_limit - 99e131dfef3a448d0ccb512459f1a55bf211c6fd

‎config/Makefile‎

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -195,6 +195,8 @@ F90PATH=${INTDIR}:${SRCDIR}/broadcast:${SRCDIR}/modules
195195
FF90PATH=${INTDIR}:${SRCDIR}/broadcast:${SRCDIR}/modules
196196
VPATH=${FPATH}:${FFPATH}:${F90PATH}
197197

198+
$(shell awk 'FNR==1{if(!/^OBJS *=/){e=1;exit}} END{exit e}' \
199+
${OBJDIR}/LISTOBJ 2>/dev/null || rm -f ${OBJDIR}/LISTOBJ)
198200
include ${OBJDIR}/LISTOBJ
199201
include ${SRCEIR}/config/compile
200202
ifeq ($(shell [ -e ${SRCEIR}/config/config.${HOST_NAME}.${COMPILER}.local ] && echo yes || echo no ),yes)
@@ -640,14 +642,15 @@ ${SRCDIR}/git_version_Eirene.h: force
640642

641643
${OBJDIR}/dependencies: ${SRCDIR}/modules/.new_modules
642644
-mkdir -p ${OBJDIR}
643-
touch ${OBJDIR}/dependencies
645+
printf '# Dummy dependencies file for Eirene\n' > ${OBJDIR}/dependencies
644646
${MAKE} -f ${SRCEIR}/config/Makefile tags
645647
${MAKE} -f ${SRCEIR}/config/Makefile VERSION
646648
${MAKE} -f ${SRCEIR}/config/Makefile links
647649
${MAKE} -f ${SRCEIR}/config/Makefile local
648650
${MAKE} -f ${SRCEIR}/config/Makefile listobj
649651
${MAKE} -f ${SRCEIR}/config/Makefile depend
650652

653+
$(shell [ -s ${OBJDIR}/dependencies ] || rm -f ${OBJDIR}/dependencies)
651654
include ${OBJDIR}/dependencies
652655
ifeq ($(shell [ -e ${SRCEIR}/config/dependencies.local ] && echo yes || echo no ),yes)
653656
include ${SRCEIR}/config/dependencies.local

‎src/CMakeLists.txt‎

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -610,10 +610,12 @@ else()
610610
ARCHIVE_OUTPUT_DIRECTORY
611611
${PROJECT_BINARY_DIR}/../lib${CMAKE_BUILD_TYPE}
612612
OUTPUT_NAME ${EIRENE_LIBRARY_NAME}${EIRENE_POSTFIX})
613-
set_target_properties(eirene PROPERTIES
613+
if ( NOT B25_EIRENE )
614+
set_target_properties(eirene PROPERTIES
614615
RUNTIME_OUTPUT_DIRECTORY
615616
${PROJECT_BINARY_DIR}/../bin${CMAKE_BUILD_TYPE}
616617
OUTPUT_NAME ${EIRENE_EXECUTABLE_NAME}${EIRENE_POSTFIX})
618+
endif()
617619
endif()
618620

619621
# Adds optional local dependencies

‎src/assistant/eirmod_second_own.F‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ FUNCTION EIRENE_SECOND_OWN()
2424
real(dp) :: EIRENE_second_own
2525
real(dp) :: time
2626
#ifdef USE_OPENMP
27-
#ifndef NAGFOR
27+
#ifdef NAGFOR
2828
double precision, external :: omp_get_wtime
2929
#endif
3030
time=real(omp_get_wtime(),DP)
@@ -44,7 +44,7 @@ FUNCTION EIRENE_RESET_SECOND()
4444
implicit none
4545
real(dp) :: EIRENE_reset_second
4646
#ifdef USE_OPENMP
47-
#ifndef NAGFOR
47+
#ifdef NAGFOR
4848
double precision, external :: omp_get_wtime
4949
#endif
5050
start=real(omp_get_wtime(),DP)

‎src/main-routines/eirmod_eirene.F‎

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -151,11 +151,6 @@ RECURSIVE SUBROUTINE EIRENE_EIRENE (DT,NLMODE,NLLAST,ITNR,
151151
IF (MPI_INITIALIZE) THEN
152152
CALL EIRENE_MPI_INIT(IER)
153153
ENDIF
154-
#if ( defined(USE_EXT_OPENMP) && defined(USE_OPENMP) )
155-
WRITE(*,*) 'Cannot run Eirene with both '//
156-
. 'USE_EXT_OPENMP and USE_OPENMP simultaneously!'
157-
CALL EIRENE_EXIT_OWN(1)
158-
#endif
159154

160155
Cdmh MOVED CPU TIME AFTER MPI_INIT BECAUSE MPI CPU-TIME ROUTINE IS USED
161156
TIMI=EIRENE_SECOND_OWN()
@@ -167,6 +162,12 @@ RECURSIVE SUBROUTINE EIRENE_EIRENE (DT,NLMODE,NLLAST,ITNR,
167162
CALL EIRENE_DEFAULTS_USR
168163
CALL EIRENE_ALLOC_CPES(2)
169164

165+
#if ( defined(USE_EXT_OPENMP) && defined(USE_OPENMP) )
166+
WRITE(*,*) 'Cannot run Eirene with both '//
167+
. 'USE_EXT_OPENMP and USE_OPENMP simultaneously!'
168+
CALL EIRENE_EXIT_OWN(1)
169+
#endif
170+
170171
cdr this is currently done in COMPRT. Should be moved to PARMMOD, or somewhere else early enough
171172
c IUNIN = 1
172173
IUNIN = IUNIN + IFOFF

‎src/modules/eirmod_pressureloop.f90‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,7 @@ SUBROUTINE calculatePressureRatio(PFL)
7878
pressure = 0._DP
7979
DO i = 1, NATM
8080
IF (PDENA(i, PFL%cellRef) > EPS30) THEN
81-
pressure = pressure + EV_TO_J*1.D6*EDENA(i, PFL%cellRef)/1.5_DP - &
81+
pressure = pressure + EV_TO_J*1.D6*EDENA(i, PFL%cellRef)/1.5_DP - &
8282
ergVol2Pa*(VXDENA(i, PFL%cellRef)**2 + &
8383
VYDENA(i, PFL%cellRef)**2 + &
8484
VZDENA(i, PFL%cellRef)**2)/ &
@@ -91,7 +91,7 @@ SUBROUTINE calculatePressureRatio(PFL)
9191
!Molecules
9292
DO i =1, NMOL
9393
IF (PDENM(i, PFL%cellRef) > EPS30) THEN
94-
pressure = pressure + EV_TO_J*1.D6*EDENM(i, PFL%cellRef)/1.5_DP - &
94+
pressure = pressure + EV_TO_J*1.D6*EDENM(i, PFL%cellRef)/1.5_DP - &
9595
ergVol2Pa*(VXDENM(i, PFL%cellRef)**2 + &
9696
VYDENM(i, PFL%cellRef)**2 + &
9797
VZDENM(i, PFL%cellRef)**2)/ &

‎src/photons/eirmod_photon.F‎

Lines changed: 31 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -292,7 +292,7 @@ SUBROUTINE EIRENE_PH_GETCOEFF(kkin,isp,ity,icell,iipl,fac,res)
292292
call EIRENE_voigtprof(iipl,icell,dnd,drft,gam)
293293
xx=(e0-(e00+drft))/dnd
294294
yy=gam*0.5_dp/dnd
295-
fac = DBLE(EIRENE_PH_FADDEEVA(xx,yy,dnd))
295+
fac = REAL(EIRENE_PH_FADDEEVA(xx,yy,dnd), DP)
296296
case(4)
297297
c use wavelength scale
298298
c call EIRENE_lorvdwprof(icell,fwhm,shift,dvdw,.false.)
@@ -510,7 +510,7 @@ FUNCTION EIRENE_ZM_PROFILE(X, CTHETA2, DBZ, GAM,DND,
510510
! voigt
511511
xx = (x-(e00d+drft))/dnd
512512
yy=gam*0.5_dp/dnd
513-
val = DBLE(EIRENE_PH_FADDEEVA(xx,yy,dnd))
513+
val = REAL(EIRENE_PH_FADDEEVA(xx,yy,dnd), DP)
514514
c
515515
c next cases: perhaps from atoms point of view?
516516
c all taken out.
@@ -765,7 +765,7 @@ function EIRENE_zm_stark_doppler_profile(N,Te,Ti,T_g,B,
765765
! voigt
766766
c xx = (x-drft)/dnd
767767
c yy=gam*0.5_dp/dnd
768-
c val = DBLE(EIRENE_PH_FADDEEVA(xx,yy,dnd))
768+
c val = REAL(EIRENE_PH_FADDEEVA(xx,yy,dnd), DP)
769769

770770

771771
x(-1)=omega-2.*omega_plus
@@ -793,15 +793,15 @@ function EIRENE_zm_stark_doppler_profile(N,Te,Ti,T_g,B,
793793
! voigt
794794
xx = (x(i)-drft)/dnd
795795
yy=gam*0.5_dp/dnd
796-
val = DBLE(EIRENE_PH_FADDEEVA(xx,yy,dnd))
796+
val = REAL(EIRENE_PH_FADDEEVA(xx,yy,dnd), DP)
797797
ssum=ssum+val*ci(i)
798798
enddo
799799
ssum1=0.
800800
do i=5,8
801801
! voigt
802802
xx = (x(i)-drft)/dnd
803803
yy=gam*0.5_dp/dnd
804-
val = DBLE(EIRENE_PH_FADDEEVA(xx,yy,dnd))
804+
val = REAL(EIRENE_PH_FADDEEVA(xx,yy,dnd), DP)
805805
ssum1=ssum1+val*ci(i)
806806
enddo
807807
ssum=ssum*(.5+.5*ctheta2)
@@ -1846,26 +1846,6 @@ complex(dp) function EIRENE_ph_faddeeva(x,y,dnd) result(cres)
18461846
cres=EIRENE_ph_humlik(x,y)/(dnd*sqrt(pia))
18471847
return
18481848
end function EIRENE_ph_faddeeva
1849-
c
1850-
complex(dp) function EIRENE_ph_faddeeva2(x,y,icell,ipl)
1851-
. result(cres)
1852-
implicit none
1853-
real(dp), intent(in) :: x,y
1854-
integer, intent(in) :: icell,ipl
1855-
real(dp) :: u,v
1856-
logical :: flag
1857-
external :: eirene_exit_own
1858-
1859-
call EIRENE_ph_wofz(x,y,u,v,flag)
1860-
if(flag) then
1861-
write(iunout,*) 'PHOTON MODULE EIRMOD_(PH_FADDEEVA2):'
1862-
write(iunout,*) ' flag=',flag
1863-
call EIRENE_exit_own(1)
1864-
endif
1865-
! kind parameter added for better precision
1866-
cres=cmplx(u,v,dp)
1867-
return
1868-
end function EIRENE_ph_faddeeva2
18691849
18701850
real(dp) function EIRENE_ph_lorvdw(dx,fwhm,shift,dvdw,
18711851
. icell) result(res)
@@ -1897,16 +1877,39 @@ real(dp) function EIRENE_ph_lorvdw(dx,fwhm,shift,dvdw,
18971877
z1 = cmplx(-a, -1._dp,dp) * aa
18981878
!pb zz = cdsqrt(b*z1) *(0._dp,1._dp)
18991879
zz = sqrt(b*z1) *(0._dp,1._dp)
1900-
fad = EIRENE_ph_faddeeva2(dble(zz),aimag(zz),icell,0)
1880+
fad = EIRENE_ph_faddeeva2(zz%RE, zz%IM, icell, 0)
19011881
19021882
!pb sz1 = z1*cdsqrt(z1)
19031883
sz1 = z1*sqrt(z1)
19041884
z=sz1*fad
1905-
rvdw = AIMAG(z)*cpi
1885+
rvdw = real(AIMAG(z),DP)*cpi
19061886
19071887
res=res+rvdw
19081888
19091889
return
1890+
1891+
CONTAINS
1892+
1893+
complex(dp) function EIRENE_ph_faddeeva2(x,y,icell,ipl)
1894+
. result(cres)
1895+
implicit none
1896+
real(dp), intent(in) :: x,y
1897+
integer, intent(in) :: icell,ipl
1898+
real(dp) :: u,v
1899+
logical :: flag
1900+
external :: eirene_exit_own
1901+
1902+
call EIRENE_ph_wofz(x,y,u,v,flag)
1903+
if(flag) then
1904+
write(iunout,*) 'PHOTON MODULE EIRMOD_(PH_FADDEEVA2):'
1905+
write(iunout,*) ' flag=',flag
1906+
call EIRENE_exit_own(1)
1907+
endif
1908+
! kind parameter added for better precision
1909+
cres=cmplx(u,v,dp)
1910+
return
1911+
end function EIRENE_ph_faddeeva2
1912+
19101913
end function EIRENE_ph_lorvdw
19111914
19121915
c...............................................................................
@@ -2004,7 +2007,7 @@ function EIRENE_sam_zeeman_normal
20042007
do ipol = -1,1
20052008
ssum = ssum + strength(ipol)
20062009
if(r0 <= ssum) then
2007-
del = dbz*dble(ipol)
2010+
del = dbz*real(ipol,DP)
20082011
e00d = e00 + del
20092012
select case(iprof)
20102013
case(0)

‎src/startup-routines/find_param.f‎

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ SUBROUTINE EIRENE_FIND_PARAM(STANDARD_INPUT)
1010
. NLSPCSPT, NLSPCSPT_ATM, NLSPCSPT_MOL,
1111
. NLSPCSPT_ION, NLSPCSPT_PHOT, NLSPCSPT_PLS
1212
USE EIRMOD_COMPRT, ONLY: IUNIN, IUNOUT
13-
USE EIRMOD_CPES, ONLY: NPRS
13+
USE EIRMOD_CPES, ONLY: EIRENE_ALLOC_CPES, NPRS
1414
USE EIRMOD_CESTIM
1515

1616
IMPLICIT NONE
@@ -25,6 +25,7 @@ SUBROUTINE EIRENE_FIND_PARAM(STANDARD_INPUT)
2525
C UNIT NUMBER FOR INPUT FILE: MUST BE DIFFERENT FROM: 5,8,10,11,12
2626
C 13,14, AND 15
2727
C
28+
CALL EIRENE_ALLOC_CPES(2)
2829
IF (STANDARD_INPUT.EQ.0) THEN !XPB CALL FROM EIRENE_MAIN
2930
IF (NPRS.GT.1) THEN
3031
IUNIN=1+IFOFF !VK SWITCHING TO READING FROM FORT.1

0 commit comments

Comments
 (0)