Skip to content

Commit 59d1430

Browse files
authored
Merge pull request #143 from OpenSEMBA/dev
Dev
2 parents 22c9e4f + e61bc15 commit 59d1430

File tree

7 files changed

+36
-78
lines changed

7 files changed

+36
-78
lines changed

.gitignore

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,9 @@
2121
*.mod
2222
*.smod
2323

24+
# Python env
25+
venv/
26+
2427
# Compiled Static libraries
2528
*.lai
2629
*.la

src_main_pub/getargs.F90

Lines changed: 9 additions & 68 deletions
Original file line numberDiff line numberDiff line change
@@ -3,54 +3,21 @@
33
Module Getargs
44
USE NFDETYPES , ONLY: BUFSIZE
55
implicit none
6-
private
6+
private
77

88
public getcommandargument,commandargumentcount
99

1010
contains
1111

1212
subroutine getcommandargument(chain2,posic,argum,length,status)
13-
character (LEN=BUFSIZE) :: chain2,argum
14-
integer (kind=4) :: i,length,status,posic,n,comienzo,finale,j
15-
16-
!length is unused
17-
!first remove all multiple blanks
18-
do i=1,len(trim(adjustl(chain2)))
19-
if (chain2(i : i)==' ') then
20-
rebus: do j=i+1,len(trim(adjustl(chain2)))
21-
if (chain2(j : j)/=' ') then
22-
chain2(i+1 :)=chain2(j :)
23-
exit rebus
24-
endif
25-
end do rebus
26-
endif
27-
end do
13+
character (LEN=BUFSIZE) ::chain2, argum, argument
14+
integer (kind=4) :: length, status, posic
15+
integer (kind=4) :: n
2816

17+
CALL getarg(posic, argument)
18+
19+
argum = argument
2920
status=0
30-
comienzo=0
31-
finale=0
32-
chain2=' '//trim(adjustl(chain2))//' '
33-
n=0
34-
busqueda1 : do i=1,len(trim(adjustl(chain2)))+2
35-
if (chain2(i : i)==' ') n=n+1
36-
if (n==posic) then
37-
do j=i+1,len(trim(adjustl(chain2)))+2
38-
if (chain2(j : j)/=' ') comienzo=j
39-
exit busqueda1
40-
end do
41-
endif
42-
end do busqueda1
43-
44-
45-
busqueda2 : do i=comienzo,len(trim(adjustl(chain2)))+2
46-
if (chain2(i : i)==' ') then
47-
finale=i-1
48-
continue
49-
exit busqueda2
50-
endif
51-
end do busqueda2
52-
if (comienzo*finale==0) status=1
53-
argum=trim(adjustl(chain2(comienzo : finale)))
5421

5522
!100615 para evitar el crlf del .sh
5623
if ( (argum(1:1) ==char(10)) .or. (argum(1:1) ==char(13)) .or. (argum(1:1)==char( 0)) ) then
@@ -63,36 +30,10 @@ subroutine getcommandargument(chain2,posic,argum,length,status)
6330

6431
function commandargumentcount(chain2)
6532
character (LEN=BUFSIZE) :: chain2
66-
integer (kind=4) :: status,n,i,j,commandargumentcount
67-
68-
69-
!!if (chain2(1 : 5)=='-----') then
70-
!! n=command_argument_count()
71-
!!else
72-
!length is unused
73-
!first remove all multiple blanks
74-
do i=1,len(trim(adjustl(chain2)))
75-
if (chain2(i : i)==' ') then
76-
rebus: do j=i+1,len(trim(adjustl(chain2)))
77-
if (chain2(j : j)/=' ') then
78-
chain2(i+1 :)=chain2(j :)
79-
exit rebus
80-
endif
81-
end do rebus
82-
endif
83-
end do
84-
85-
86-
n=1
87-
do i=1,len(trim(adjustl(chain2)))
88-
if (chain2(i : i)==' ') then
89-
n=n+1
90-
endif
91-
end do
33+
integer (kind=4) :: status,n,commandargumentcount
34+
n = command_argument_count()
9235
status=0
93-
!!!!!!endif
9436
commandargumentcount=n
9537
return
9638
end function
97-
9839
end module

src_main_pub/interpreta_switches.F90

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -198,7 +198,7 @@ subroutine interpreta(l,statuse)
198198
!goto 668
199199
END IF
200200
l%opcionestotales=''
201-
do i=2,n
201+
do i=1,n
202202
CALL getcommandargument (l%chaininput,i,l%chain,l%length,statuse)
203203
IF (statuse /= 0) THEN
204204
CALL stoponerror (l%layoutnumber, l%size, 'Reading input',.true.)
@@ -211,7 +211,7 @@ subroutine interpreta(l,statuse)
211211

212212

213213
IF (n > 0) THEN
214-
i = 2 ! se empieza en 2 porque el primer argumento es siempre el nombre del ejecutable
214+
i = 1 ! se empieza en 1 porque el primer argumento es siempre el nombre del ejecutable
215215
DO while (i <= n)
216216
CALL getcommandargument (l%chaininput, i, l%chain, l%length, statuse)
217217
IF (statuse /= 0) THEN
@@ -1791,7 +1791,7 @@ subroutine buscaswitchficheroinput(l)
17911791

17921792
IF (n > 0) THEN
17931793
num_nfdes=0
1794-
i = 2
1794+
i = 1
17951795
DO while (i <= n)
17961796
CALL getcommandargument (l%chain2, i, l%chain, l%length, statuse)
17971797
IF (statuse /= 0) THEN
@@ -1835,7 +1835,7 @@ subroutine buscaswitchficheroinput(l)
18351835
END DO
18361836
if (num_nfdes > 1) then
18371837
temp_numnfdes=0
1838-
i = 2 ! se empieza en 2 porque el primer argumento es siempre el nombre del ejecutable
1838+
i = 1 ! se empieza en 1 porque el primer argumento es siempre el nombre del ejecutable
18391839
DO while (i <= n)
18401840
CALL getcommandargument (l%chain2, i, l%chain, l%length, statuse)
18411841
IF (statuse /= 0) THEN
@@ -1924,7 +1924,7 @@ subroutine buscaswitchficheroinput(l)
19241924

19251925
temp_numnfdes=0
19261926
IF (n > 0) THEN
1927-
i = 2 ! se empieza en 2 porque el primer argumento es siempre el nombre del ejecutable
1927+
i = 1 ! se empieza en 1 porque el primer argumento es siempre el nombre del ejecutable
19281928
DO while (i <= n)
19291929
CALL getcommandargument (l%chain2, i, l%chain, l%length, statuse)
19301930
IF (statuse /= 0) THEN

src_main_pub/semba_fdtd.F90

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -333,7 +333,7 @@ PROGRAM SEMBA_FDTD_launcher
333333
!!!!!!!!!!!!!!!!!!!!!!!
334334
sgg%extraswitches=parser%switches
335335
!!!da preferencia a los switches por linea de comando
336-
CALL getcommandargument (l%chain2, 1, chaindummy, l%length, statuse)
336+
CALL getcommandargument (l%chain2, 0, chaindummy, l%length, statuse)
337337

338338
l%chain2=trim(adjustl(l%chain2))
339339
chaindummy=trim(adjustl(chaindummy))

src_pyWrapper/pyWrapper.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -296,7 +296,6 @@ def run(self):
296296

297297
os.chdir(self.getFolder())
298298
self.output = subprocess.run(self.run_command)
299-
300299
self._hasRun = True
301300
assert self.hasFinishedSuccessfully()
302301

test/pyWrapper/test_full_system.py

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
from utils import *
22
from typing import Dict
33
import os
4+
from sys import platform
45

56
@no_mtln_skip
67
@pytest.mark.mtln
@@ -431,8 +432,22 @@ def getPeakPulse(probe:Probe) -> Dict:
431432
np.testing.assert_almost_equal(getPeakPulse(rectilinearFrontProbe)['time'], getPeakPulse(noRectilinearFrontProbe)['time'], decimal=_TIME_TOLERANCE)
432433
np.testing.assert_almost_equal(getPeakPulse(rectilinearVertexProbe)['value'], getPeakPulse(noRectilinearVertexProbe)['value'], decimal=_FIELD_TOLERANCE)
433434
np.testing.assert_almost_equal(getPeakPulse(rectilinearVertexProbe)['time'], getPeakPulse(noRectilinearVertexProbe)['time'], decimal=_TIME_TOLERANCE)
434-
435-
436435

436+
def testCanExecuteFDTDFromFolderWithSpaces(tmp_path):
437+
projectRoot = os.getcwd()
438+
folderWitSpaces: str = os.path.join(tmp_path, "folder with spaces")
439+
os.mkdir(folderWitSpaces)
440+
if platform == 'win32':
441+
shutil.copy2(NGSPICE_DLL, folderWitSpaces)
442+
443+
sembaExecutable = SEMBA_EXE.split(os.path.sep)[-1]
444+
pathToExe: str = os.path.join(folderWitSpaces, sembaExecutable)
445+
shutil.copy2(SEMBA_EXE, pathToExe)
446+
print(pathToExe)
447+
448+
fn = CASES_FOLDER + "dielectric/dielectricTransmission.fdtd.json"
449+
solver = FDTD(fn, path_to_exe=pathToExe, run_in_folder=tmp_path)
450+
solver.run()
451+
assert (Probe(solver.getSolvedProbeFilenames("outside")[0]) is not None)
437452

438453

test/pyWrapper/utils.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@
3333
elif platform == "win32":
3434
SEMBA_EXE = os.path.join(os.getcwd(), 'build', 'bin', 'semba-fdtd.exe')
3535

36-
36+
NGSPICE_DLL = os.path.join(os.getcwd(), 'precompiled_libraries', 'windows-intel', 'ngspice', 'ngspice.dll')
3737
TEST_DATA_FOLDER = os.path.join(os.getcwd(), 'testData/')
3838
CASES_FOLDER = os.path.join(TEST_DATA_FOLDER, 'cases/')
3939
MODELS_FOLDER = os.path.join(TEST_DATA_FOLDER, 'models/')

0 commit comments

Comments
 (0)