高温氦气物性补全;三通四通能量计算bug修正
This commit is contained in:
1 parent
6fc9afe41d
commit
2b07d996cf
133 files changed
+5230
-253310
No files matched your search
@@ -7,6 +7,7 @@ import unittest
|
||||
import numpy as np
|
||||
from app.simulation.native_codegen.compiler import compile_native_program
|
||||
from app.simulation.native_codegen.build import build_native
|
||||
from app.simulation.native_codegen.result_storage import scan_blocks
|
||||
from tests.test_native_catalog import Circuit
|
||||
|
||||
FIXTURE=Path(__file__).parent/'fixtures/amesim-component-semantics-2404.json'
|
||||
@@ -19,16 +20,25 @@ class NativeFrictionReferenceTests(unittest.TestCase):
|
||||
for l,r in case['connections']:b.net.connect(*l,*r)
|
||||
program=compile_native_program(b.net)
|
||||
build=build_native(program)
|
||||
self.addCleanup(build.close)
|
||||
methods=('BDF','RK45') if case['name'] in ('friction_simple','friction_band') else ('BDF',)
|
||||
for method in methods:
|
||||
with self.subTest(case=case['name'],method=method),tempfile.TemporaryDirectory() as tmp:
|
||||
path=Path(tmp)/'result.json'
|
||||
state_path=Path(tmp)/'states.bin';output_path=Path(tmp)/'outputs.bin'
|
||||
subprocess.run([str(build.executable),'--method',method,'--stop','3','--sample-step','.001',
|
||||
'--max-step','.002','--rtol','1e-9','--timeout','30','--output',str(path)],
|
||||
'--max-step','.002','--rtol','1e-9','--timeout','30','--output',str(path),
|
||||
'--sample-file',str(state_path),'--output-block-file',str(output_path)],
|
||||
check=True,capture_output=True,timeout=45)
|
||||
result=json.loads(path.read_text())
|
||||
self.assertTrue(result['success'],result)
|
||||
self.assertEqual(result['simulatedUntil'],3)
|
||||
for blocks, columns in ((state_path,len(program.state_keys)+1),
|
||||
(output_path,len(program.variables)+1)):
|
||||
stored=scan_blocks(blocks,expected_columns=columns)
|
||||
self.assertGreater(stored['blocks'],1)
|
||||
self.assertEqual(stored['samples'],len(result['series']['time']))
|
||||
self.assertFalse(stored['incompleteTail'] or stored['corrupt'])
|
||||
for key,expected in case['series'].items():
|
||||
actual=np.interp(case['time'],result['series']['time'],result['series'][key])
|
||||
field=key.split('.')[-1]
|
||||
|
||||
Reference in new issue
Block a user