Skip to content

Commit ec5bcc8

Browse files
Merge pull request #245 from OpenSEMBA/244-unable-to-launch-json-file-on-basic-compilation
ReadMTLN: Use status signal to check if id was found in hash table
2 parents 28e69bb + e82deb5 commit ec5bcc8

File tree

8 files changed

+81
-40
lines changed

8 files changed

+81
-40
lines changed

.github/workflows/ubuntu.yml

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -46,14 +46,15 @@ jobs:
4646
# mtln: "Yes"
4747
# hdf: "Yes"
4848
# double-precision: "No"
49-
50-
- os: ubuntu-latest
51-
compiler: {name: 'nvidia-hpc', version: '24.5'}
52-
build-type: "Release"
53-
mpi: "No"
54-
mtln: "No"
55-
hdf: "No"
56-
double-precision: "No"
49+
50+
# Disable by lack of space on github action
51+
# - os: ubuntu-latest
52+
# compiler: {name: 'nvidia-hpc', version: '24.5'}
53+
# build-type: "Release"
54+
# mpi: "No"
55+
# mtln: "No"
56+
# hdf: "No"
57+
# double-precision: "No"
5758

5859
- os: ubuntu-latest # This is the only test with double precision.
5960
compiler: {name: 'intel', version: '2025.1'}

CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ if (CMAKE_SYSTEM_NAME MATCHES "Linux")
6060
set(CMAKE_CXX_FLAGS_RELEASE "-Ofast")
6161
set(CMAKE_Fortran_FLAGS_RELEASE "-Ofast")
6262

63-
set(CMAKE_Fortran_FLAGS_DEBUG "-g -O0")
63+
set(CMAKE_Fortran_FLAGS_DEBUG "-g -O0 -fno-inline -fcheck=all -fbacktrace")
6464

6565
elseif(CMAKE_Fortran_COMPILER_ID MATCHES "IntelLLVM")
6666
message(STATUS "Using IntelLLVM (ifx) flags")

src_json_parser/smbjson.F90

Lines changed: 44 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -2722,6 +2722,7 @@ function buildNode(termination_list, label, index, id) result(res)
27222722
type(polyline_t) :: polyline
27232723
type(aux_node_t) :: res
27242724
integer :: cable_index
2725+
integer :: stat
27252726
call this%core%get_child(termination_list, index, termination)
27262727

27272728
res%node%termination%termination_type = readTerminationType(termination)
@@ -2735,17 +2736,18 @@ function buildNode(termination_list, label, index, id) result(res)
27352736
res%node%side = label
27362737
res%node%conductor_in_cable = index
27372738

2738-
call elemIdToCable%get(key(id), value=cable_index)
2739+
call elemIdToCable%get(key(id), value=cable_index, stat=stat)
2740+
if (stat == 0) then
27392741
res%node%belongs_to_cable => mtln_res%cables(cable_index)%ptr
27402742

27412743
polyline = this%mesh%getPolyline(id)
2742-
2743-
if (label == TERMINAL_NODE_SIDE_INI) then
2744-
res%cId = polyline%coordIds(1)
2745-
res%relPos = this%mesh%getCoordinate(polyline%coordIds(1))
2746-
else if (label == TERMINAL_NODE_SIDE_END) then
2747-
res%cId = polyline%coordIds(ubound(polyline%coordIds,1))
2748-
res%relPos = this%mesh%getCoordinate(polyline%coordIds(ubound(polyline%coordIds,1)))
2744+
if (label == TERMINAL_NODE_SIDE_INI) then
2745+
res%cId = polyline%coordIds(1)
2746+
res%relPos = this%mesh%getCoordinate(polyline%coordIds(1))
2747+
else if (label == TERMINAL_NODE_SIDE_END) then
2748+
res%cId = polyline%coordIds(ubound(polyline%coordIds,1))
2749+
res%relPos = this%mesh%getCoordinate(polyline%coordIds(ubound(polyline%coordIds,1)))
2750+
end if
27492751
end if
27502752
end function
27512753

@@ -3176,9 +3178,10 @@ function getPointerToParentCable(cables, id) result(res)
31763178
call elemIdToCable%check_key(key(id), mStat)
31773179
if (mStat /= 0) then
31783180
res => null()
3181+
else
3182+
call elemIdToCable%get(key(id), value=index)
3183+
res => cables(index)%ptr
31793184
end if
3180-
call elemIdToCable%get(key(id), value=index)
3181-
res => cables(index)%ptr
31823185
end function
31833186

31843187
function findConnectorWithId(conn_Id) result(res)
@@ -3480,29 +3483,54 @@ function buildSegments(j_cable, despl) result(res)
34803483
end do
34813484
end function
34823485

3486+
pure integer function clip(i, lo, hi)
3487+
integer, intent(in) :: i, lo, hi
3488+
clip = max(lo, min(i, hi))
3489+
end function clip
3490+
34833491
function getdualBoxYZ(segment, despl) result (res)
34843492
type(Desplazamiento), intent(in) :: despl
34853493
type(segment_t), intent(in) :: segment
34863494
type(box_2d_t) :: res
3487-
res%min = [-0.5*despl%desY(segment%y-1),-0.5*despl%desZ(segment%z-1)]
3488-
res%max = [ 0.5*despl%desY(segment%y), 0.5*despl%desZ(segment%z)]
3495+
integer :: y0, y1, z0, z1
3496+
3497+
y0 = clip(segment%y-1, 0, size(despl%desY)-1)
3498+
y1 = clip(segment%y, 0, size(despl%desY)-1)
3499+
z0 = clip(segment%z-1, 0, size(despl%desZ)-1)
3500+
z1 = clip(segment%z, 0, size(despl%desZ)-1)
3501+
3502+
res%min = [-0.5 * despl%desY(y0), -0.5 * despl%desZ(z0)]
3503+
res%max = [ 0.5 * despl%desY(y1), 0.5 * despl%desZ(z1)]
34893504
end function
34903505

34913506
function getdualBoxXY(segment, despl) result (res)
34923507
type(Desplazamiento), intent(in) :: despl
34933508
type(segment_t), intent(in) :: segment
34943509
type(box_2d_t) :: res
3495-
res%min = [-0.5*despl%desX(segment%x-1),-0.5*despl%desY(segment%y-1)]
3496-
res%max = [ 0.5*despl%desX(segment%x), 0.5*despl%desY(segment%y)]
3510+
integer :: x0, x1, y0, y1
3511+
3512+
x0 = clip(segment%x-1, 0, size(despl%desX)-1)
3513+
x1 = clip(segment%x, 0, size(despl%desX)-1)
3514+
y0 = clip(segment%y-1, 0, size(despl%desY)-1)
3515+
y1 = clip(segment%y, 0, size(despl%desY)-1)
3516+
3517+
res%min = [-0.5 * despl%desX(x0), -0.5 * despl%desY(y0)]
3518+
res%max = [ 0.5 * despl%desX(x1), 0.5 * despl%desY(y1)]
34973519
end function
34983520

34993521
function getdualBoxZX(segment, despl) result (res)
35003522
type(Desplazamiento), intent(in) :: despl
35013523
type(segment_t), intent(in) :: segment
35023524
type(box_2d_t) :: res
3503-
res%min = [-0.5*despl%desZ(segment%z-1),-0.5*despl%desX(segment%x-1)]
3504-
res%max = [ 0.5*despl%desZ(segment%z), 0.5*despl%desX(segment%x)]
3525+
integer :: z0, z1, x0, x1
3526+
3527+
z0 = clip(segment%z-1, 0, size(despl%desZ)-1)
3528+
z1 = clip(segment%z, 0, size(despl%desZ)-1)
3529+
x0 = clip(segment%x-1, 0, size(despl%desX)-1)
3530+
x1 = clip(segment%x, 0, size(despl%desX)-1)
35053531

3532+
res%min = [-0.5 * despl%desZ(z0), -0.5 * despl%desX(x0)]
3533+
res%max = [ 0.5 * despl%desZ(z1), 0.5 * despl%desX(x1)]
35063534
end function
35073535

35083536
function buildStepSize(segments, despl) result(res)

test/observation/observation_testingTools.F90

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,11 @@ subroutine check_shape_real(arr, n_expected, test_err, name)
5959
integer, allocatable :: shp(:)
6060
character(len=:), allocatable :: nm
6161

62-
nm = merge(name, "array", present(name))
62+
if (present(name)) then
63+
nm = trim(adjustl(name))
64+
else
65+
nm = "array"
66+
end if
6367

6468
rank_arr = rank(arr)
6569
shp = shape(arr)
@@ -82,7 +86,11 @@ subroutine check_shape_complex(arr, n_expected, test_err, name)
8286
integer, allocatable :: shp(:)
8387
character(len=:), allocatable :: nm
8488

85-
nm = merge(name, "array", present(name))
89+
if (present(name)) then
90+
nm = trim(adjustl(name))
91+
else
92+
nm = "array"
93+
end if
8694

8795
rank_arr = rank(arr)
8896
shp = shape(arr)
@@ -105,7 +113,11 @@ subroutine check_size(arr, n_expected, test_err, name)
105113
integer :: siz
106114
character(len=:), allocatable :: nm
107115

108-
nm = merge(name, "array", present(name))
116+
if (present(name)) then
117+
nm = trim(adjustl(name))
118+
else
119+
nm = "array"
120+
end if
109121

110122
rank_arr = rank(arr)
111123
siz = size(arr)
@@ -200,7 +212,7 @@ function create_base_sgg() result(sgg)
200212
type(SGGFDTDINFO) :: sgg
201213

202214
sgg%NumMedia = 3
203-
allocate(sgg%Med(1:sgg%NumMedia))
215+
allocate(sgg%Med(0:sgg%NumMedia))
204216
sgg%Med = create_basic_media()
205217
sgg%NumberRequest = 1
206218
sgg%dt = 0.1_RKIND_tiempo

test/observation/test_observation_init.F90

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ integer function test_init_time_movie_observation() bind(C) result(err)
2929
ThereAreWires = .false.
3030
ThereAreFarFields = .false.
3131

32-
initialtimestep = 0
32+
initialtimestep = 1
3333
lastexecutedtime = 0.0_RKIND_tiempo
3434

3535
SINPML_fullsize = create_limit_t(0,4,0,4,0,4,3,3,3)

test/observation/test_observation_update.F90

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ integer function test_update_time_movie_observation() bind(C) result(err)
3131
ThereAreWires = .false.
3232
ThereAreFarFields = .false.
3333

34-
initialtimestep = 0
34+
initialtimestep = 1
3535
lastexecutedtime = 0.0_RKIND_tiempo
3636

3737
SINPML_fullsize = create_limit_t(0,4,0,4,0,4,3,3,3)

test/smbjson/test_read_mtln.F90

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -129,7 +129,7 @@ function expectedProblemDescription() result (expected)
129129
! cable 1 - wire
130130
allocate(unshielded_multiwire_t :: expected%mtln%cables(1)%ptr)
131131
ptr => expected%mtln%cables(1)%ptr
132-
call initializeCablePULParameters(ptr)
132+
call initializeCablePULParameters(ptr, n=1)
133133
select type(ptr)
134134
type is (unshielded_multiwire_t)
135135
ptr%name = "line_0_0"
@@ -156,7 +156,7 @@ function expectedProblemDescription() result (expected)
156156
! cable 2 - shieldedMultiwire
157157
allocate(shielded_multiwire_t :: expected%mtln%cables(2)%ptr)
158158
ptr => expected%mtln%cables(2)%ptr
159-
call initializeCablePULParameters(ptr)
159+
call initializeCablePULParameters(ptr, n=1)
160160
select type(ptr)
161161
type is (shielded_multiwire_t)
162162
ptr%name = "line_1_0"
@@ -244,7 +244,7 @@ function expectedProblemDescription() result (expected)
244244
! cable 4 - wire
245245
allocate(unshielded_multiwire_t :: expected%mtln%cables(4)%ptr)
246246
ptr => expected%mtln%cables(4)%ptr
247-
call initializeCablePULParameters(ptr)
247+
call initializeCablePULParameters(ptr, n=1)
248248
select type(ptr)
249249
type is (unshielded_multiwire_t)
250250
ptr%name = "line_0_1"
@@ -272,7 +272,7 @@ function expectedProblemDescription() result (expected)
272272
! cable 5 - shieldedMultiwire
273273
allocate(shielded_multiwire_t :: expected%mtln%cables(5)%ptr)
274274
ptr => expected%mtln%cables(5)%ptr
275-
call initializeCablePULParameters(ptr)
275+
call initializeCablePULParameters(ptr, n=1)
276276
select type(ptr)
277277
type is (shielded_multiwire_t)
278278
ptr%name = "line_1_1"
@@ -346,7 +346,7 @@ function expectedProblemDescription() result (expected)
346346
! cable 7 - wire
347347
allocate(unshielded_multiwire_t :: expected%mtln%cables(7)%ptr)
348348
ptr => expected%mtln%cables(7)%ptr
349-
call initializeCablePULParameters(ptr)
349+
call initializeCablePULParameters(ptr, n=1)
350350
select type(ptr)
351351
type is (unshielded_multiwire_t)
352352
ptr%name = "line_0_2"
@@ -374,7 +374,7 @@ function expectedProblemDescription() result (expected)
374374
! cable 8 - shieldedMultiwire
375375
allocate(shielded_multiwire_t :: expected%mtln%cables(8)%ptr)
376376
ptr => expected%mtln%cables(8)%ptr
377-
call initializeCablePULParameters(ptr)
377+
call initializeCablePULParameters(ptr, n=1)
378378
select type(ptr)
379379
type is (shielded_multiwire_t)
380380
ptr%name = "line_1_2"
@@ -408,7 +408,7 @@ function expectedProblemDescription() result (expected)
408408
! cable 9 - shieldedMultiwire
409409
allocate(shielded_multiwire_t :: expected%mtln%cables(9)%ptr)
410410
ptr => expected%mtln%cables(9)%ptr
411-
call initializeCablePULParameters(ptr,6)
411+
call initializeCablePULParameters(ptr,n=6)
412412
select type(ptr)
413413
type is (shielded_multiwire_t)
414414
ptr%name = "line_2_5"

test/smbjson/test_read_shieldedPair.F90

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -101,7 +101,7 @@ function expectedProblemDescription() result (expected)
101101
allocate(expected%mtln%cables(2))
102102
! cable 1 - wire
103103
allocate(unshielded_multiwire_t :: expected%mtln%cables(1)%ptr)
104-
call initializeCablePULParameters(expected%mtln%cables(1)%ptr)
104+
call initializeCablePULParameters(expected%mtln%cables(1)%ptr, n=1)
105105
ptr => expected%mtln%cables(1)%ptr
106106
select type(ptr)
107107
type is(unshielded_multiwire_t)
@@ -134,7 +134,7 @@ function expectedProblemDescription() result (expected)
134134
end select
135135
! cable 2 - shieldedMultiwire
136136
allocate(shielded_multiwire_t :: expected%mtln%cables(2)%ptr)
137-
call initializeCablePULParameters(expected%mtln%cables(2)%ptr)
137+
call initializeCablePULParameters(expected%mtln%cables(2)%ptr, n=2)
138138
ptr => expected%mtln%cables(2)%ptr
139139
select type(ptr)
140140
type is(shielded_multiwire_t)

0 commit comments

Comments
 (0)