From 617cbb8ae7198fb962b1b9989ef5601e0c77765e Mon Sep 17 00:00:00 2001 From: jcschaff Date: Thu, 22 Aug 2024 18:08:16 -0400 Subject: [PATCH] add FiniteVolume smoke test --- .gitignore | 2 + CMakeLists.txt | 4 + VCell/CMakeLists.txt | 13 ++ .../tests/smoke/SimID_1585623750_0_.functions | 19 +++ VCell/tests/smoke/SimID_1585623750_0_.fvinput | 157 ++++++++++++++++++ VCell/tests/smoke/SimID_1585623750_0_.hdf5 | Bin 0 -> 15872 bytes .../smoke/SimID_1585623750_0_.hdf5.expected | Bin 0 -> 15872 bytes .../smoke/SimID_1585623750_0_.log.expected | 3 + VCell/tests/smoke/SimID_1585623750_0_.mesh | 148 +++++++++++++++++ .../smoke/SimID_1585623750_0_.meshmetrics | 120 +++++++++++++ .../smoke/SimID_1585623750_0_.subdomains | 5 + VCell/tests/smoke/SimID_1585623750_0_.vcg | 128 ++++++++++++++ .../smoke/SimID_1585623750_0_00.zip.expected | Bin 0 -> 253624 bytes .../smoke/SimID_1585623750_0__0.simtask.xml | 155 +++++++++++++++++ VCell/tests/smoke/smoke.py | 94 +++++++++++ 15 files changed, 848 insertions(+) create mode 100644 VCell/tests/smoke/SimID_1585623750_0_.functions create mode 100644 VCell/tests/smoke/SimID_1585623750_0_.fvinput create mode 100644 VCell/tests/smoke/SimID_1585623750_0_.hdf5 create mode 100644 VCell/tests/smoke/SimID_1585623750_0_.hdf5.expected create mode 100644 VCell/tests/smoke/SimID_1585623750_0_.log.expected create mode 100644 VCell/tests/smoke/SimID_1585623750_0_.mesh create mode 100644 VCell/tests/smoke/SimID_1585623750_0_.meshmetrics create mode 100644 VCell/tests/smoke/SimID_1585623750_0_.subdomains create mode 100644 VCell/tests/smoke/SimID_1585623750_0_.vcg create mode 100644 VCell/tests/smoke/SimID_1585623750_0_00.zip.expected create mode 100644 VCell/tests/smoke/SimID_1585623750_0__0.simtask.xml create mode 100755 VCell/tests/smoke/smoke.py diff --git a/.gitignore b/.gitignore index b9c043b7..dfb71557 100644 --- a/.gitignore +++ b/.gitignore @@ -26,3 +26,5 @@ tests/__pycache__/ *.whl + +testFiles/output/ diff --git a/CMakeLists.txt b/CMakeLists.txt index bb050d33..a685fbab 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -189,6 +189,10 @@ find_package(HDF5 COMPONENTS HL CXX C) set(HDF_VERSION ${HDF5_VERSION}) ###### ${HDF5_HL_LIBRARIES} ${HDF5_CXX_LIBRARIES} +if (OPTION_TARGET_TESTS) + enable_testing() +endif () + add_subdirectory(VCellMessaging) add_subdirectory(VCellZipUtils) diff --git a/VCell/CMakeLists.txt b/VCell/CMakeLists.txt index fbd2bab8..468e98c3 100644 --- a/VCell/CMakeLists.txt +++ b/VCell/CMakeLists.txt @@ -243,5 +243,18 @@ endif() # add google tests if (OPTION_TARGET_TESTS) + enable_testing() + if (MINGW) + set(test_fvsolver_exe ${CMAKE_BINARY_DIR}/bin/${EXE_FILE}.exe) + set(python_cmd py) + else (MINGW) + set(test_fvsolver_exe ${CMAKE_BINARY_DIR}/bin/${EXE_FILE}) + set(python_cmd python3) + endif (MINGW) + set(test_dir ${CMAKE_CURRENT_SOURCE_DIR}/tests/smoke) + + # smoke test as a python script, for bash test example, see NFsim/tests/smoke + add_test(NAME ${EXE_FILE}_smoke COMMAND ${python_cmd} ${test_dir}/smoke.py ${test_fvsolver_exe} WORKING_DIRECTORY ${test_dir}) + add_subdirectory(tests) endif() \ No newline at end of file diff --git a/VCell/tests/smoke/SimID_1585623750_0_.functions b/VCell/tests/smoke/SimID_1585623750_0_.functions new file mode 100644 index 00000000..b7315341 --- /dev/null +++ b/VCell/tests/smoke/SimID_1585623750_0_.functions @@ -0,0 +1,19 @@ +##--------------------------------------------- +## /Users/jimschaff/.vcell/simdata/temp/SimID_1585623750_0_.functions +##--------------------------------------------- + +subdomain1::J_flux0; (2.0 * (RanC_cyt - RanC_nuc)); ; Volume_VariableType; false +subdomain1::J_r0; ((2.0 * RanC_cyt) - (1000.0 * Ran_cyt * C_cyt)); ; Volume_VariableType; false +subdomain1::KFlux_nm_cyt; 1.0; ; Volume_Region_VariableType; false +subdomain1::KFlux_nm_nuc; 1.0; ; Volume_Region_VariableType; false +subdomain1::RanC_cyt_init_uM; (1.0 + x); ; Volume_VariableType; false +subdomain0_subdomain1_membrane::s2; 0.0; ; Membrane_Region_VariableType; false +subdomain1::Size_cyt; vcRegionVolume('subdomain1'); ; Volume_Region_VariableType; false +subdomain0::Size_EC; vcRegionVolume('subdomain0'); ; Volume_Region_VariableType; false +subdomain1::Size_nm; vcRegionVolume('subdomain1'); ; Volume_Region_VariableType; false +subdomain1::Size_nuc; vcRegionVolume('subdomain1'); ; Volume_Region_VariableType; false +subdomain0_subdomain1_membrane::Size_pm; vcRegionArea('subdomain0_subdomain1_membrane'); ; Membrane_Region_VariableType; false +subdomain0_subdomain1_membrane::sobj_subdomain11_subdomain00_size; vcRegionArea('subdomain0_subdomain1_membrane'); ; Membrane_Region_VariableType; false +subdomain0::vobj_subdomain00_size; vcRegionVolume('subdomain0'); ; Volume_Region_VariableType; false +subdomain1::vobj_subdomain11_size; vcRegionVolume('subdomain1'); ; Volume_Region_VariableType; false + diff --git a/VCell/tests/smoke/SimID_1585623750_0_.fvinput b/VCell/tests/smoke/SimID_1585623750_0_.fvinput new file mode 100644 index 00000000..8dc82fe7 --- /dev/null +++ b/VCell/tests/smoke/SimID_1585623750_0_.fvinput @@ -0,0 +1,157 @@ +# Simulation Parameters +SIMULATION_PARAM_BEGIN +SOLVER SUNDIALS_PDE_SOLVER 1.0E-7 1.0E-9 0.1 +BASE_FILE_NAME /Users/jimschaff/.vcell/simdata/temp/SimID_1585623750_0_ +ENDING_TIME 0.01 +TIME_STEP 0.005 +KEEP_EVERY 1 +SIMULATION_PARAM_END + +# Model description: FEATURE name handle boundary_conditions +MODEL_BEGIN +FEATURE subdomain1 1 flux flux flux flux +FEATURE subdomain0 0 flux flux flux flux +MEMBRANE subdomain0_subdomain1_membrane subdomain1 subdomain0 flux flux flux flux +MODEL_END + +# Mesh file +MESH_BEGIN +VCG_FILE SimID_1585623750_0_.vcg +MESH_END + +# Variables : type name domain time_dependent_flag advection_flag grad_flag solve_whole_mesh_flag solve_regions +VARIABLE_BEGIN +VOLUME_PDE C_cyt subdomain1 false false false false subdomain1 +VOLUME_PDE Ran_cyt subdomain1 false false false false subdomain1 +VOLUME_PDE RanC_cyt subdomain1 false false false false subdomain1 +VOLUME_PDE RanC_nuc subdomain1 false false false false subdomain1 +VARIABLE_END + +POST_PROCESSING_BLOCK_BEGIN +POST_PROCESSING_BLOCK_END + +COMPARTMENT_BEGIN subdomain1 + +EQUATION_BEGIN RanC_cyt +INITIAL (1.0 + x); +RATE ( - ((2.0 * RanC_cyt) - (1000.0 * Ran_cyt * C_cyt)) - (2.0 * (RanC_cyt - RanC_nuc))); +DIFFUSION 10.0; +VELOCITY_X 0.0; +VELOCITY_Y 0.0; +BOUNDARY_XM 0.0; +BOUNDARY_XP 0.0; +BOUNDARY_YM 0.0; +BOUNDARY_YP 0.0; +EQUATION_END + +EQUATION_BEGIN Ran_cyt +INITIAL 0.0; +RATE ((2.0 * RanC_cyt) - (1000.0 * Ran_cyt * C_cyt)); +DIFFUSION 10.0; +VELOCITY_X 0.0; +VELOCITY_Y 0.0; +BOUNDARY_XM 0.0; +BOUNDARY_XP 0.0; +BOUNDARY_YM 0.0; +BOUNDARY_YP 0.0; +EQUATION_END + +EQUATION_BEGIN C_cyt +INITIAL 0.0; +RATE ((2.0 * RanC_cyt) - (1000.0 * Ran_cyt * C_cyt)); +DIFFUSION 10.0; +VELOCITY_X 0.0; +VELOCITY_Y 0.0; +BOUNDARY_XM 0.0; +BOUNDARY_XP 0.0; +BOUNDARY_YM 0.0; +BOUNDARY_YP 0.0; +EQUATION_END + +EQUATION_BEGIN RanC_nuc +INITIAL 4.5E-4; +RATE (2.0 * (RanC_cyt - RanC_nuc)); +DIFFUSION 10.0; +VELOCITY_X 0.0; +VELOCITY_Y 0.0; +BOUNDARY_XM 0.0; +BOUNDARY_XP 0.0; +BOUNDARY_YM 0.0; +BOUNDARY_YP 0.0; +EQUATION_END + +COMPARTMENT_END + +COMPARTMENT_BEGIN subdomain0 + +EQUATION_BEGIN C_cyt +INITIAL 0.0; +RATE 0.0; +DIFFUSION 0.0; +VELOCITY_X 0.0; +VELOCITY_Y 0.0; +BOUNDARY_XM 0.0; +BOUNDARY_XP 0.0; +BOUNDARY_YM 0.0; +BOUNDARY_YP 0.0; +EQUATION_END + +EQUATION_BEGIN Ran_cyt +INITIAL 0.0; +RATE 0.0; +DIFFUSION 0.0; +VELOCITY_X 0.0; +VELOCITY_Y 0.0; +BOUNDARY_XM 0.0; +BOUNDARY_XP 0.0; +BOUNDARY_YM 0.0; +BOUNDARY_YP 0.0; +EQUATION_END + +EQUATION_BEGIN RanC_cyt +INITIAL 0.0; +RATE 0.0; +DIFFUSION 0.0; +VELOCITY_X 0.0; +VELOCITY_Y 0.0; +BOUNDARY_XM 0.0; +BOUNDARY_XP 0.0; +BOUNDARY_YM 0.0; +BOUNDARY_YP 0.0; +EQUATION_END + +EQUATION_BEGIN RanC_nuc +INITIAL 0.0; +RATE 0.0; +DIFFUSION 0.0; +VELOCITY_X 0.0; +VELOCITY_Y 0.0; +BOUNDARY_XM 0.0; +BOUNDARY_XP 0.0; +BOUNDARY_YM 0.0; +BOUNDARY_YP 0.0; +EQUATION_END + +COMPARTMENT_END + + +MEMBRANE_BEGIN subdomain0_subdomain1_membrane subdomain1 subdomain0 + +JUMP_CONDITION_BEGIN RanC_cyt +FLUX subdomain1 0.0; +JUMP_CONDITION_END + +JUMP_CONDITION_BEGIN Ran_cyt +FLUX subdomain1 0.0; +JUMP_CONDITION_END + +JUMP_CONDITION_BEGIN C_cyt +FLUX subdomain1 0.0; +JUMP_CONDITION_END + +JUMP_CONDITION_BEGIN RanC_nuc +FLUX subdomain1 0.0; +JUMP_CONDITION_END + +MEMBRANE_END + diff --git a/VCell/tests/smoke/SimID_1585623750_0_.hdf5 b/VCell/tests/smoke/SimID_1585623750_0_.hdf5 new file mode 100644 index 0000000000000000000000000000000000000000..bde497a56784bc5726d02ac9a221ec111060b462 GIT binary patch literal 15872 zcmeHMUu+ab7@ys1?Qw0fph+t+a#kfxG^SUse@HAlrPS63usI3=v^mbp^}42aM|xX= ziuU54n>l0i{G;hu=d+PkR*xy zP+)y>BotRWy8^><;FY1!4ke(-aYYWILA6kOZp2;7ddKz`w;~&+annugmafCvvE_m# zDj0^j;C(-8+#og=B001{tIbCcmc|?C3`QqmRBT{OzwpZA$MEwOCDzdAfaWAn7%c1u~ zfZq2o{U+R}e(J{EJ8GKGvwmC!1~pj$RH-q-34*c6et)As8i<6n@rTqJs=svo zPJi$<#UD5j8V-c9geIm}-@0W@b`s12unzzdMkzYMMBhkMRWzCbjq2j=8|-mLi2%u;{M&pw;2@tJvG zPWYP5@fF1XTCDMzd0oXD3NMKlf8ouaA&@2Vb4WE&~u=-Sd%at7bFMa=v1cue8kPnjC~pj469GyzlfdwXCyGJzI^ea?-l5~BfZC=?c{^YnZ5ci z-BX$4=;IbD`UfuDd4F~=W4_oOe81+<^PgmW_BWvSN1!>o9K9c^X~`~E8ne`z%+S_= zer>7__8*@4d*R3}`1xn3tRn5>(06gPXZp={X|S^M>dofI;Ky^gPg}b38xK!)|Ngon z;r3k#k1tO17BRqi;C8_6fcpWD13V7!IKbloj{`go@HoKZ0FMJa4iq*H6z{teXvce* zzzwPYZ{MAY$4BCx;3H$Rc!x8<8Q=_X2JRaMj^1`%Juz`oy5u@jeS6CoY+U-~MCa3! z(&)}T7k#a#C9C=H>4okW#%f_xV&;H<{VnKwZuOtX!Y;Tsy8ZHBH{9_0+s}M;YII8a zVeO+YKfC!byw<;=Pxc;@-kROb`FdCB$VhpF$+ X9EI!4qQ8Bz_d6*zcH?^Gwpr;vy*qY* literal 0 HcmV?d00001 diff --git a/VCell/tests/smoke/SimID_1585623750_0_.hdf5.expected b/VCell/tests/smoke/SimID_1585623750_0_.hdf5.expected new file mode 100644 index 0000000000000000000000000000000000000000..bde497a56784bc5726d02ac9a221ec111060b462 GIT binary patch literal 15872 zcmeHMUu+ab7@ys1?Qw0fph+t+a#kfxG^SUse@HAlrPS63usI3=v^mbp^}42aM|xX= ziuU54n>l0i{G;hu=d+PkR*xy zP+)y>BotRWy8^><;FY1!4ke(-aYYWILA6kOZp2;7ddKz`w;~&+annugmafCvvE_m# zDj0^j;C(-8+#og=B001{tIbCcmc|?C3`QqmRBT{OzwpZA$MEwOCDzdAfaWAn7%c1u~ zfZq2o{U+R}e(J{EJ8GKGvwmC!1~pj$RH-q-34*c6et)As8i<6n@rTqJs=svo zPJi$<#UD5j8V-c9geIm}-@0W@b`s12unzzdMkzYMMBhkMRWzCbjq2j=8|-mLi2%u;{M&pw;2@tJvG zPWYP5@fF1XTCDMzd0oXD3NMKlf8ouaA&@2Vb4WE&~u=-Sd%at7bFMa=v1cue8kPnjC~pj469GyzlfdwXCyGJzI^ea?-l5~BfZC=?c{^YnZ5ci z-BX$4=;IbD`UfuDd4F~=W4_oOe81+<^PgmW_BWvSN1!>o9K9c^X~`~E8ne`z%+S_= zer>7__8*@4d*R3}`1xn3tRn5>(06gPXZp={X|S^M>dofI;Ky^gPg}b38xK!)|Ngon z;r3k#k1tO17BRqi;C8_6fcpWD13V7!IKbloj{`go@HoKZ0FMJa4iq*H6z{teXvce* zzzwPYZ{MAY$4BCx;3H$Rc!x8<8Q=_X2JRaMj^1`%Juz`oy5u@jeS6CoY+U-~MCa3! z(&)}T7k#a#C9C=H>4okW#%f_xV&;H<{VnKwZuOtX!Y;Tsy8ZHBH{9_0+s}M;YII8a zVeO+YKfC!byw<;=Pxc;@-kROb`FdCB$VhpF$+ X9EI!4qQ8Bz_d6*zcH?^Gwpr;vy*qY* literal 0 HcmV?d00001 diff --git a/VCell/tests/smoke/SimID_1585623750_0_.log.expected b/VCell/tests/smoke/SimID_1585623750_0_.log.expected new file mode 100644 index 00000000..a700fb1c --- /dev/null +++ b/VCell/tests/smoke/SimID_1585623750_0_.log.expected @@ -0,0 +1,3 @@ + 0 SimID_1585623750_0_0000.sim SimID_1585623750_0_00.zip 0 + 1 SimID_1585623750_0_0001.sim SimID_1585623750_0_00.zip 0.005 + 2 SimID_1585623750_0_0002.sim SimID_1585623750_0_00.zip 0.01 diff --git a/VCell/tests/smoke/SimID_1585623750_0_.mesh b/VCell/tests/smoke/SimID_1585623750_0_.mesh new file mode 100644 index 00000000..6420eed5 --- /dev/null +++ b/VCell/tests/smoke/SimID_1585623750_0_.mesh @@ -0,0 +1,148 @@ +Version 1.2 +CartesianMesh { + // X Y Z + Size 51 51 1 + Extent 10 10 1 + Origin 0 0 0 + + VolumeRegionsMapSubvolume { + 2 + //VolRegID SubvolID Volume + 0 0 72.119999999999877 //subdomain0 + 1 1 27.879999999999583 //subdomain1 + } + + MembraneRegionsMapVolumeRegion { + 1 + //MemRegID VolReg1 VolReg2 Surface + 0 1 0 18.471391535623798 + } + + VolumeElementsMapVolumeRegion { + 2601 Compressed + 789CEDD6D11100100C0451FA6F5A0306397166D84D01EFEF26A51011DDAE76EFBC902B8D8D0C672E + EC4BEBC68EE3506286E6C40DC571289A1175505050FE545E5A4BCDD172182EC5F3C3AC4A39398C91 + 444474BF06C24102BA + } + + MembraneElements { + 116 + //Indx Vol1 Vol2 Conn0 Conn1 Conn2 Conn3 MemRegID + 0 581 530 1 12 -1 -1 0 + 1 582 531 2 0 -1 -1 0 + 2 583 532 3 1 -1 -1 0 + 3 584 533 4 2 -1 -1 0 + 4 585 534 5 3 -1 -1 0 + 5 586 535 6 4 -1 -1 0 + 6 587 536 7 5 -1 -1 0 + 7 588 537 8 6 -1 -1 0 + 8 589 538 9 7 -1 -1 0 + 9 590 539 10 8 -1 -1 0 + 10 591 540 14 9 -1 -1 0 + 11 630 579 13 17 -1 -1 0 + 12 581 580 13 0 -1 -1 0 + 13 631 580 12 11 -1 -1 0 + 14 591 592 15 10 -1 -1 0 + 15 643 592 16 14 -1 -1 0 + 16 644 593 19 15 -1 -1 0 + 17 630 629 18 11 -1 -1 0 + 18 680 629 17 22 -1 -1 0 + 19 644 645 20 16 -1 -1 0 + 20 696 645 24 19 -1 -1 0 + 21 729 678 23 27 -1 -1 0 + 22 680 679 23 18 -1 -1 0 + 23 730 679 22 21 -1 -1 0 + 24 696 697 25 20 -1 -1 0 + 25 748 697 26 24 -1 -1 0 + 26 749 698 29 25 -1 -1 0 + 27 729 728 28 21 -1 -1 0 + 28 779 728 27 31 -1 -1 0 + 29 749 750 30 26 -1 -1 0 + 30 801 750 32 29 -1 -1 0 + 31 779 778 33 28 -1 -1 0 + 32 801 802 35 30 -1 -1 0 + 33 830 829 34 31 -1 -1 0 + 34 880 829 33 37 -1 -1 0 + 35 852 853 36 32 -1 -1 0 + 36 904 853 39 35 -1 -1 0 + 37 880 879 38 34 -1 -1 0 + 38 930 879 37 41 -1 -1 0 + 39 904 905 40 36 -1 -1 0 + 40 956 905 42 39 -1 -1 0 + 41 930 929 43 38 -1 -1 0 + 42 956 957 45 40 -1 -1 0 + 43 981 980 44 41 -1 -1 0 + 44 1031 980 43 47 -1 -1 0 + 45 1007 1008 46 42 -1 -1 0 + 46 1059 1008 48 45 -1 -1 0 + 47 1031 1030 49 44 -1 -1 0 + 48 1059 1060 50 46 -1 -1 0 + 49 1082 1081 51 47 -1 -1 0 + 50 1110 1111 52 48 -1 -1 0 + 51 1133 1132 53 49 -1 -1 0 + 52 1161 1162 54 50 -1 -1 0 + 53 1184 1183 55 51 -1 -1 0 + 54 1212 1213 56 52 -1 -1 0 + 55 1235 1234 57 53 -1 -1 0 + 56 1263 1264 58 54 -1 -1 0 + 57 1286 1285 59 55 -1 -1 0 + 58 1314 1315 60 56 -1 -1 0 + 59 1337 1336 61 57 -1 -1 0 + 60 1365 1366 62 58 -1 -1 0 + 61 1388 1387 63 59 -1 -1 0 + 62 1416 1417 64 60 -1 -1 0 + 63 1439 1438 65 61 -1 -1 0 + 64 1467 1468 66 62 -1 -1 0 + 65 1490 1489 67 63 -1 -1 0 + 66 1518 1519 69 64 -1 -1 0 + 67 1541 1540 68 65 -1 -1 0 + 68 1541 1592 71 67 -1 -1 0 + 69 1569 1570 70 66 -1 -1 0 + 70 1569 1620 69 72 -1 -1 0 + 71 1593 1592 73 68 -1 -1 0 + 72 1619 1620 75 70 -1 -1 0 + 73 1644 1643 74 71 -1 -1 0 + 74 1644 1695 77 73 -1 -1 0 + 75 1670 1671 76 72 -1 -1 0 + 76 1670 1721 75 79 -1 -1 0 + 77 1696 1695 78 74 -1 -1 0 + 78 1696 1747 81 77 -1 -1 0 + 79 1720 1721 80 76 -1 -1 0 + 80 1720 1771 79 82 -1 -1 0 + 81 1748 1747 83 78 -1 -1 0 + 82 1770 1771 85 80 -1 -1 0 + 83 1799 1798 84 81 -1 -1 0 + 84 1799 1850 87 83 -1 -1 0 + 85 1821 1822 86 82 -1 -1 0 + 86 1821 1872 85 91 -1 -1 0 + 87 1851 1850 88 84 -1 -1 0 + 88 1851 1902 89 87 -1 -1 0 + 89 1852 1903 93 88 -1 -1 0 + 90 1870 1921 92 95 -1 -1 0 + 91 1871 1872 92 86 -1 -1 0 + 92 1871 1922 91 90 -1 -1 0 + 93 1904 1903 94 89 -1 -1 0 + 94 1904 1955 97 93 -1 -1 0 + 95 1920 1921 96 90 -1 -1 0 + 96 1920 1971 95 101 -1 -1 0 + 97 1956 1955 98 94 -1 -1 0 + 98 1956 2007 99 97 -1 -1 0 + 99 1957 2008 103 98 -1 -1 0 + 100 1969 2020 102 114 -1 -1 0 + 101 1970 1971 102 96 -1 -1 0 + 102 1970 2021 101 100 -1 -1 0 + 103 2009 2008 104 99 -1 -1 0 + 104 2009 2060 105 103 -1 -1 0 + 105 2010 2061 106 104 -1 -1 0 + 106 2011 2062 107 105 -1 -1 0 + 107 2012 2063 108 106 -1 -1 0 + 108 2013 2064 109 107 -1 -1 0 + 109 2014 2065 110 108 -1 -1 0 + 110 2015 2066 111 109 -1 -1 0 + 111 2016 2067 112 110 -1 -1 0 + 112 2017 2068 113 111 -1 -1 0 + 113 2018 2069 115 112 -1 -1 0 + 114 2019 2020 115 100 -1 -1 0 + 115 2019 2070 114 113 -1 -1 0 + } +} diff --git a/VCell/tests/smoke/SimID_1585623750_0_.meshmetrics b/VCell/tests/smoke/SimID_1585623750_0_.meshmetrics new file mode 100644 index 00000000..3564b35d --- /dev/null +++ b/VCell/tests/smoke/SimID_1585623750_0_.meshmetrics @@ -0,0 +1,120 @@ +MembraneElements { +116 +Index RegionIndex X Y Z Area Nx Ny Nz +0 0 4 2.1000000000000001 0.5 0.1576600448900663 0.31622776601683805 0.94868329805051377 0 +1 0 4.2000000000000002 2.1000000000000001 0.5 0.19310372521920716 0.25084130827922091 0.96802822172742919 0 +2 0 4.4000000000000004 2.1000000000000001 0.5 0.19572845137701056 0.21169969595797161 0.97733476287877041 0 +3 0 4.6000000000000005 2.1000000000000001 0.5 0.19800882094883634 0.12724528989938305 0.99187128005524083 0 +4 0 4.8000000000000007 2.1000000000000001 0.5 0.19950347360150952 0.042438147897979769 0.99909909598747471 0 +5 0 5 2.1000000000000001 0.5 0.19990990959874749 1.4018682666819418e-17 1 0 +6 0 5.2000000000000002 2.1000000000000001 0.5 0.19950347360150952 -0.042438147897979867 0.99909909598747471 0 +7 0 5.4000000000000004 2.1000000000000001 0.5 0.19800882094883634 -0.12724528989938308 0.99187128005524083 0 +8 0 5.6000000000000005 2.1000000000000001 0.5 0.19572845137701056 -0.21169969595797153 0.97733476287877041 0 +9 0 5.8000000000000007 2.1000000000000001 0.5 0.19310372521920716 -0.2508413082792208 0.96802822172742919 0 +10 0 6 2.1000000000000001 0.5 0.1576600448900663 -0.31622776601683777 0.94868329805051388 0 +11 0 3.6000000000000001 2.3000000000000003 0.5 0.16092854191265982 0.39752916315578052 0.91758954028512374 0 +12 0 3.9000000000000004 2.2000000000000002 0.5 0.12341678847597956 -0.28780607997286867 -0.95768870742567014 0 +13 0 3.8000000000000003 2.3000000000000003 0.5 0.15467381216523363 0.32983009295532012 0.94404031152334 0 +14 0 6.0999999999999996 2.2000000000000002 0.5 0.12341678847597957 -0.28780607997286872 0.95768870742567014 0 +15 0 6.2000000000000002 2.3000000000000003 0.5 0.15467381216523363 -0.32983009295532018 0.94404031152334 0 +16 0 6.4000000000000004 2.3000000000000003 0.5 0.16092854191265982 -0.39752916315578068 0.91758954028512374 0 +17 0 3.5 2.4000000000000004 0.5 0.13155667624213047 -0.43935144615960892 -0.89831526022742159 0 +18 0 3.4000000000000004 2.5 0.5 0.1339314234199373 0.5504910087462066 0.83484109223826775 0 +19 0 6.5 2.4000000000000004 0.5 0.13155667624213047 -0.4393514461596088 0.8983152602274217 0 +20 0 6.6000000000000005 2.5 0.5 0.1339314234199373 -0.5504910087462066 0.83484109223826775 0 +21 0 3 2.7000000000000002 0.5 0.14600154314582386 0.65727466833508164 0.75365111979284449 0 +22 0 3.3000000000000003 2.6000000000000001 0.5 0.13647423613795884 -0.56959483776260145 -0.82192561755562521 0 +23 0 3.2000000000000002 2.7000000000000002 0.5 0.14170769337734293 0.65520174136012899 0.75545395499570633 0 +24 0 6.7000000000000011 2.6000000000000001 0.5 0.13647423613795884 -0.56959483776260156 0.8219256175556251 0 +25 0 6.8000000000000007 2.7000000000000002 0.5 0.14170769337734293 -0.65520174136012899 0.75545395499570622 0 +26 0 7 2.7000000000000002 0.5 0.14600154314582386 -0.6572746683350813 0.75365111979284483 0 +27 0 2.9000000000000004 2.8000000000000003 0.5 0.13627375623990445 -0.65727466833508152 -0.75365111979284449 0 +28 0 2.8000000000000003 2.9000000000000004 0.5 0.13627375623990445 0.75365111979284449 0.65727466833508152 0 +29 0 7.0999999999999996 2.8000000000000003 0.5 0.13627375623990445 -0.65727466833508119 0.75365111979284483 0 +30 0 7.2000000000000002 2.9000000000000004 0.5 0.13627375623990448 -0.75365111979284438 0.65727466833508186 0 +31 0 2.7000000000000002 3 0.5 0.14600154314582386 -0.75365111979284449 -0.65727466833508164 0 +32 0 7.3000000000000007 3 0.5 0.14600154314582386 -0.75365111979284438 0.65727466833508186 0 +33 0 2.7000000000000002 3.2000000000000002 0.5 0.14170769337734293 -0.75545395499570633 -0.65520174136012899 0 +34 0 2.6000000000000001 3.3000000000000003 0.5 0.13647423613795884 0.82192561755562521 0.56959483776260145 0 +35 0 7.3000000000000007 3.2000000000000002 0.5 0.14170769337734293 -0.75545395499570644 0.65520174136012888 0 +36 0 7.4000000000000004 3.3000000000000003 0.5 0.13647423613795884 -0.82192561755562521 0.56959483776260122 0 +37 0 2.5 3.4000000000000004 0.5 0.1339314234199373 -0.83484109223826775 -0.5504910087462066 0 +38 0 2.4000000000000004 3.5 0.5 0.13155667624213047 0.89831526022742159 0.43935144615960892 0 +39 0 7.5 3.4000000000000004 0.5 0.1339314234199373 -0.83484109223826786 0.55049100874620649 0 +40 0 7.6000000000000005 3.5 0.5 0.13155667624213049 -0.89831526022742147 0.43935144615960914 0 +41 0 2.3000000000000003 3.6000000000000001 0.5 0.16092854191265982 -0.91758954028512374 -0.39752916315578052 0 +42 0 7.7000000000000011 3.6000000000000001 0.5 0.16092854191265984 -0.91758954028512374 0.39752916315578052 0 +43 0 2.3000000000000003 3.8000000000000003 0.5 0.15467381216523363 -0.94404031152334 -0.32983009295532012 0 +44 0 2.2000000000000002 3.9000000000000004 0.5 0.12341678847597956 0.95768870742567014 0.28780607997286867 0 +45 0 7.7000000000000011 3.8000000000000003 0.5 0.15467381216523363 -0.94404031152334 0.32983009295532018 0 +46 0 7.8000000000000007 3.9000000000000004 0.5 0.12341678847597955 -0.95768870742567014 0.28780607997286856 0 +47 0 2.1000000000000001 4 0.5 0.1576600448900663 -0.94868329805051377 -0.31622776601683805 0 +48 0 7.9000000000000004 4 0.5 0.1576600448900663 -0.94868329805051388 0.31622776601683789 0 +49 0 2.1000000000000001 4.2000000000000002 0.5 0.19310372521920716 -0.96802822172742919 -0.25084130827922091 0 +50 0 7.9000000000000004 4.2000000000000002 0.5 0.19310372521920716 -0.96802822172742919 0.25084130827922091 0 +51 0 2.1000000000000001 4.4000000000000004 0.5 0.19572845137701056 -0.97733476287877041 -0.21169969595797161 0 +52 0 7.9000000000000004 4.4000000000000004 0.5 0.19572845137701056 -0.97733476287877041 0.21169969595797161 0 +53 0 2.1000000000000001 4.6000000000000005 0.5 0.19800882094883634 -0.99187128005524083 -0.12724528989938305 0 +54 0 7.9000000000000004 4.6000000000000005 0.5 0.19800882094883634 -0.99187128005524083 0.12724528989938338 0 +55 0 2.1000000000000001 4.8000000000000007 0.5 0.19950347360150952 -0.99909909598747471 -0.042438147897979769 0 +56 0 7.9000000000000004 4.8000000000000007 0.5 0.19950347360150952 -0.99909909598747471 0.042438147897979936 0 +57 0 2.1000000000000001 5 0.5 0.19990990959874749 -1 -1.4018682666819418e-17 0 +58 0 7.9000000000000004 5 0.5 0.19990990959874749 -1 1.4018682666819418e-17 0 +59 0 2.1000000000000001 5.2000000000000002 0.5 0.19950347360150952 -0.99909909598747471 0.042438147897979867 0 +60 0 7.9000000000000004 5.2000000000000002 0.5 0.19950347360150952 -0.99909909598747471 -0.042438147897980033 0 +61 0 2.1000000000000001 5.4000000000000004 0.5 0.19800882094883634 -0.99187128005524083 0.12724528989938308 0 +62 0 7.9000000000000004 5.4000000000000004 0.5 0.19800882094883634 -0.99187128005524083 -0.12724528989938341 0 +63 0 2.1000000000000001 5.6000000000000005 0.5 0.19572845137701056 -0.97733476287877041 0.21169969595797153 0 +64 0 7.9000000000000004 5.6000000000000005 0.5 0.19572845137701056 -0.97733476287877041 -0.21169969595797153 0 +65 0 2.1000000000000001 5.8000000000000007 0.5 0.19310372521920716 -0.96802822172742919 0.2508413082792208 0 +66 0 7.9000000000000004 5.8000000000000007 0.5 0.19310372521920716 -0.96802822172742919 -0.2508413082792208 0 +67 0 2.1000000000000001 6 0.5 0.1576600448900663 -0.94868329805051388 0.31622776601683777 0 +68 0 2.2000000000000002 6.0999999999999996 0.5 0.12341678847597957 -0.95768870742567014 0.28780607997286872 0 +69 0 7.9000000000000004 6 0.5 0.1576600448900663 -0.94868329805051399 -0.31622776601683766 0 +70 0 7.8000000000000007 6.0999999999999996 0.5 0.12341678847597956 0.95768870742567014 0.28780607997286856 0 +71 0 2.3000000000000003 6.2000000000000002 0.5 0.15467381216523363 -0.94404031152334 0.32983009295532018 0 +72 0 7.7000000000000011 6.2000000000000002 0.5 0.15467381216523363 -0.94404031152333989 -0.32983009295532018 0 +73 0 2.3000000000000003 6.4000000000000004 0.5 0.16092854191265982 -0.91758954028512374 0.39752916315578068 0 +74 0 2.4000000000000004 6.5 0.5 0.13155667624213047 -0.8983152602274217 0.4393514461596088 0 +75 0 7.7000000000000011 6.4000000000000004 0.5 0.16092854191265982 -0.91758954028512374 -0.3975291631557808 0 +76 0 7.6000000000000005 6.5 0.5 0.13155667624213047 0.89831526022742159 0.43935144615960892 0 +77 0 2.5 6.6000000000000005 0.5 0.1339314234199373 -0.83484109223826775 0.5504910087462066 0 +78 0 2.6000000000000001 6.7000000000000011 0.5 0.13647423613795884 -0.8219256175556251 0.56959483776260156 0 +79 0 7.5 6.6000000000000005 0.5 0.13393142341993733 -0.83484109223826786 -0.55049100874620649 0 +80 0 7.4000000000000004 6.7000000000000011 0.5 0.13647423613795889 0.8219256175556251 0.56959483776260156 0 +81 0 2.7000000000000002 6.8000000000000007 0.5 0.14170769337734293 -0.75545395499570622 0.65520174136012899 0 +82 0 7.3000000000000007 6.8000000000000007 0.5 0.14170769337734296 -0.75545395499570644 -0.65520174136012888 0 +83 0 2.7000000000000002 7 0.5 0.14600154314582386 -0.75365111979284483 0.6572746683350813 0 +84 0 2.8000000000000003 7.0999999999999996 0.5 0.13627375623990445 -0.75365111979284483 0.65727466833508119 0 +85 0 7.3000000000000007 7 0.5 0.14600154314582386 -0.75365111979284449 -0.65727466833508152 0 +86 0 7.2000000000000002 7.0999999999999996 0.5 0.13627375623990445 0.7536511197928446 0.65727466833508141 0 +87 0 2.9000000000000004 7.2000000000000002 0.5 0.13627375623990448 -0.65727466833508186 0.75365111979284438 0 +88 0 3 7.3000000000000007 0.5 0.14600154314582386 -0.65727466833508186 0.75365111979284438 0 +89 0 3.2000000000000002 7.3000000000000007 0.5 0.14170769337734293 -0.65520174136012888 0.75545395499570644 0 +90 0 6.8000000000000007 7.3000000000000007 0.5 0.14170769337734296 0.65520174136012888 0.75545395499570644 0 +91 0 7.0999999999999996 7.2000000000000002 0.5 0.13627375623990445 -0.65727466833508141 -0.7536511197928446 0 +92 0 7 7.3000000000000007 0.5 0.14600154314582386 0.65727466833508152 0.75365111979284449 0 +93 0 3.3000000000000003 7.4000000000000004 0.5 0.13647423613795884 -0.56959483776260122 0.82192561755562521 0 +94 0 3.4000000000000004 7.5 0.5 0.1339314234199373 -0.55049100874620649 0.83484109223826786 0 +95 0 6.7000000000000011 7.4000000000000004 0.5 0.13647423613795889 -0.56959483776260156 -0.8219256175556251 0 +96 0 6.6000000000000005 7.5 0.5 0.13393142341993733 0.55049100874620649 0.83484109223826786 0 +97 0 3.5 7.6000000000000005 0.5 0.13155667624213049 -0.43935144615960914 0.89831526022742147 0 +98 0 3.6000000000000001 7.7000000000000011 0.5 0.16092854191265984 -0.39752916315578052 0.91758954028512374 0 +99 0 3.8000000000000003 7.7000000000000011 0.5 0.15467381216523363 -0.32983009295532018 0.94404031152334 0 +100 0 6.2000000000000002 7.7000000000000011 0.5 0.15467381216523363 0.32983009295532018 0.94404031152333989 0 +101 0 6.5 7.6000000000000005 0.5 0.13155667624213047 -0.43935144615960892 -0.89831526022742159 0 +102 0 6.4000000000000004 7.7000000000000011 0.5 0.16092854191265982 0.3975291631557808 0.91758954028512374 0 +103 0 3.9000000000000004 7.8000000000000007 0.5 0.12341678847597955 -0.28780607997286856 0.95768870742567014 0 +104 0 4 7.9000000000000004 0.5 0.1576600448900663 -0.31622776601683789 0.94868329805051388 0 +105 0 4.2000000000000002 7.9000000000000004 0.5 0.19310372521920716 -0.25084130827922091 0.96802822172742919 0 +106 0 4.4000000000000004 7.9000000000000004 0.5 0.19572845137701056 -0.21169969595797161 0.97733476287877041 0 +107 0 4.6000000000000005 7.9000000000000004 0.5 0.19800882094883634 -0.12724528989938338 0.99187128005524083 0 +108 0 4.8000000000000007 7.9000000000000004 0.5 0.19950347360150952 -0.042438147897979936 0.99909909598747471 0 +109 0 5 7.9000000000000004 0.5 0.19990990959874749 -1.4018682666819418e-17 1 0 +110 0 5.2000000000000002 7.9000000000000004 0.5 0.19950347360150952 0.042438147897980033 0.99909909598747471 0 +111 0 5.4000000000000004 7.9000000000000004 0.5 0.19800882094883634 0.12724528989938341 0.99187128005524083 0 +112 0 5.6000000000000005 7.9000000000000004 0.5 0.19572845137701056 0.21169969595797153 0.97733476287877041 0 +113 0 5.8000000000000007 7.9000000000000004 0.5 0.19310372521920716 0.2508413082792208 0.96802822172742919 0 +114 0 6.0999999999999996 7.8000000000000007 0.5 0.12341678847597956 -0.28780607997286856 -0.95768870742567014 0 +115 0 6 7.9000000000000004 0.5 0.1576600448900663 0.31622776601683766 0.94868329805051399 0 +} \ No newline at end of file diff --git a/VCell/tests/smoke/SimID_1585623750_0_.subdomains b/VCell/tests/smoke/SimID_1585623750_0_.subdomains new file mode 100644 index 00000000..f864bb11 --- /dev/null +++ b/VCell/tests/smoke/SimID_1585623750_0_.subdomains @@ -0,0 +1,5 @@ +# CompartmentSubDomain name, handle +# MembraneSubDomain name, inside compartment name, handle, outside compartment name, handle +CompartmentSubDomain, subdomain1, 1 +CompartmentSubDomain, subdomain0, 0 +MembraneSubDomain, subdomain0_subdomain1_membrane, subdomain1, 1, subdomain0, 0 diff --git a/VCell/tests/smoke/SimID_1585623750_0_.vcg b/VCell/tests/smoke/SimID_1585623750_0_.vcg new file mode 100644 index 00000000..9f89452a --- /dev/null +++ b/VCell/tests/smoke/SimID_1585623750_0_.vcg @@ -0,0 +1,128 @@ +name Geometry1608955162 +dimension 2 +size 10.0 10.0 +origin 0.0 0.0 +volumeRegions 2 +subdomain00 72.11999999999999 0 +subdomain11 27.88 1 +membraneRegions 1 +membrane_subdomain00_subdomain11 18.75734357308505 1 0 +volumeSamples 51 51 +789CEDD6D11100100C0451FA6F5A0306397166D84D01EFEF26A51011DDAE76EFBC902B8D8D0C672EEC4BEBC68EE3506286E6C40DC571289A1175505050FE545E5A4BCDD172182EC5F3C3AC4A39398C91444474BF06C24102BA +cells 116 +0 530 581 0.1620535100894932 4.053100189278201 2.153100189278201 5.0 0.2718090395465309 0.962351207211168 0.0 +1 531 582 0.17922797450101335 4.22000366773106 2.1200036677310585 5.0 0.12356014301545262 0.9923370853989086 0.0 +2 532 583 0.19286842463761217 4.405296656217725 2.1052966562177247 5.0 0.03768677469425233 0.9992896011733259 0.0 +3 533 584 0.1985224296849064 4.600920806604385 2.100920806604384 5.0 0.007470744560612548 0.9999720935984714 0.0 +4 534 585 0.1998293054058975 4.800093867643376 2.100093867643375 5.0 8.545671514118731E-4 0.9999996348574253 0.0 +5 535 586 0.19998303227353897 5.0 2.1000084838632307 5.0 0.0 1.0 0.0 +6 536 587 0.19982930540589838 5.199906132356626 2.100093867643375 5.0 -8.545671514118693E-4 0.9999996348574253 0.0 +7 537 588 0.1985224296849064 5.399079193395617 2.100920806604384 5.0 -0.007470744560612548 0.9999720935984714 0.0 +8 538 589 0.19286842463761217 5.594703343782276 2.1052966562177247 5.0 -0.03768677469425233 0.9992896011733259 0.0 +9 539 590 0.1792279745010125 5.779996332268942 2.1200036677310585 5.0 -0.12356014301545322 0.9923370853989085 0.0 +10 540 591 0.16205351008949234 5.946899810721799 2.153100189278201 5.0 -0.27180903954653235 0.9623512072111676 0.0 +11 579 630 0.14693727343815555 3.637561996872243 2.3375619968722434 5.0 0.48863891709688895 0.872486108026013 0.0 +12 580 581 0.15204150137885475 3.9053862819294847 2.2053862819294845 5.0 0.3980793126949183 0.9173510019639929 0.0 +13 580 631 0.14936574143087963 3.768655465949866 2.268655465949866 5.0 0.4419607269938355 0.8970344005639251 0.0 +14 592 591 0.15204150137885558 6.094613718070516 2.2053862819294845 5.0 -0.39807931269491614 0.9173510019639938 0.0 +15 592 643 0.14936574143087925 6.231344534050136 2.268655465949866 5.0 -0.4419607269938367 0.8970344005639246 0.0 +16 593 644 0.14693727343815594 6.362438003127758 2.3375619968722434 5.0 -0.4886389170968877 0.8724861080260138 0.0 +17 629 630 0.14357072470788254 3.5147112534449496 2.41471125344495 5.0 0.5746244099504347 0.8184172453517305 0.0 +18 629 680 0.1424213881882999 3.400004241931615 2.5000042419316157 5.0 0.6184937186923493 0.7857897428308092 0.0 +19 645 644 0.1435707247078829 6.485288746555051 2.41471125344495 5.0 -0.5746244099504333 0.8184172453517317 0.0 +20 645 696 0.14242138818829958 6.599995758068386 2.5000042419316157 5.0 -0.6184937186923508 0.785789742830808 0.0 +21 678 729 0.1458545882010359 3.0375619968722427 2.737561996872243 5.0 0.5126029411868405 0.8586257768589298 0.0 +22 679 680 0.14352724170990003 3.2853868561300414 2.5853868561300413 5.0 0.5760473998521798 0.817416291202679 0.0 +23 679 730 0.14631975496160807 3.1634526773755165 2.663452677375516 5.0 0.5020043131925671 0.86486511638293 0.0 +24 697 696 0.14352724170990003 6.714613143869959 2.5853868561300413 5.0 -0.5760473998521798 0.817416291202679 0.0 +25 697 748 0.14631975496160807 6.836547322624485 2.663452677375516 5.0 -0.5020043131925671 0.86486511638293 0.0 +26 698 749 0.1458545882010359 6.962438003127758 2.737561996872243 5.0 -0.5126029411868405 0.8586257768589298 0.0 +27 728 729 0.14213657216332456 2.9199098000876837 2.819909800087683 5.0 0.6327021551504655 0.7743952368577407 0.0 +28 728 779 0.14213657216332456 2.8199098000876837 2.9199098000876837 5.0 0.7743952368577407 0.6327021551504655 0.0 +29 750 749 0.14213657216332456 7.080090199912317 2.819909800087683 5.0 -0.6327021551504655 0.7743952368577407 0.0 +30 750 801 0.14213657216332456 7.180090199912318 2.9199098000876837 5.0 -0.7743952368577407 0.6327021551504655 0.0 +31 778 779 0.1458545882010359 2.737561996872243 3.037561996872243 5.0 0.8586257768589298 0.5126029411868405 0.0 +32 802 801 0.1458545882010359 7.262438003127758 3.037561996872243 5.0 -0.8586257768589298 0.5126029411868405 0.0 +33 829 830 0.14631975496160807 2.663452677375516 3.163452677375516 5.0 0.86486511638293 0.5020043131925671 0.0 +34 829 880 0.14352724170990003 2.5853868561300413 3.2853868561300414 5.0 0.817416291202679 0.5760473998521798 0.0 +35 853 852 0.1463197549616083 7.336547322624485 3.163452677375516 5.0 -0.8648651163829286 0.5020043131925694 0.0 +36 853 904 0.1435272417098995 7.41461314386996 3.2853868561300414 5.0 -0.817416291202682 0.5760473998521757 0.0 +37 879 880 0.14242138818830027 2.5000042419316157 3.4000042419316157 5.0 0.7857897428308103 0.6184937186923477 0.0 +38 879 930 0.14357072470788218 2.41471125344495 3.5147112534449496 5.0 0.8184172453517294 0.5746244099504361 0.0 +39 905 904 0.1424213881883011 7.499995758068385 3.4000042419316157 5.0 -0.7857897428308058 0.6184937186923535 0.0 +40 905 956 0.14357072470788193 7.585288746555052 3.5147112534449496 5.0 -0.818417245351731 0.5746244099504341 0.0 +41 929 930 0.14693727343815555 2.3375619968722434 3.6375619968722432 5.0 0.872486108026013 0.48863891709688895 0.0 +42 957 956 0.14693727343815532 7.6624380031277575 3.6375619968722432 5.0 -0.8724861080260142 0.48863891709688667 0.0 +43 980 981 0.14936574143087963 2.268655465949866 3.7686554659498657 5.0 0.8970344005639251 0.4419607269938355 0.0 +44 980 1031 0.15204150137885475 2.2053862819294845 3.9053862819294842 5.0 0.9173510019639929 0.3980793126949183 0.0 +45 1008 1007 0.14936574143087983 7.731344534050136 3.7686554659498657 5.0 -0.8970344005639239 0.44196072699383787 0.0 +46 1008 1059 0.15204150137885442 7.794613718070517 3.9053862819294847 5.0 -0.9173510019639949 0.39807931269491337 0.0 +47 1030 1031 0.16205351008949234 2.153100189278201 4.053100189278201 5.0 0.9623512072111676 0.27180903954653235 0.0 +48 1060 1059 0.16205351008949234 7.8468998107217995 4.053100189278201 5.0 -0.9623512072111676 0.27180903954653235 0.0 +49 1081 1082 0.17922797450101335 2.1200036677310585 4.220003667731058 5.0 0.9923370853989086 0.12356014301545262 0.0 +50 1111 1110 0.1792279745010133 7.8799963322689415 4.220003667731058 5.0 -0.992337085398909 0.12356014301545017 0.0 +51 1132 1133 0.19286842463761217 2.1052966562177247 4.405296656217725 5.0 0.9992896011733259 0.03768677469425233 0.0 +52 1162 1161 0.19286842463761217 7.894703343782275 4.405296656217725 5.0 -0.9992896011733259 0.03768677469425233 0.0 +53 1183 1184 0.1985224296849073 2.100920806604384 4.6009208066043845 5.0 0.9999720935984714 0.007470744560612514 0.0 +54 1213 1212 0.1985224296849073 7.899079193395616 4.6009208066043845 5.0 -0.9999720935984714 0.007470744560616989 0.0 +55 1234 1235 0.19982930540589838 2.100093867643375 4.800093867643376 5.0 0.9999996348574253 8.545671514118693E-4 0.0 +56 1264 1263 0.19982930540589838 7.899906132356625 4.800093867643376 5.0 -0.9999996348574253 8.54567151409647E-4 0.0 +57 1285 1286 0.19998303227353809 2.1000084838632307 5.000000000000001 5.0 1.0 -0.0 0.0 +58 1315 1314 0.19998303227353809 7.89999151613677 5.000000000000001 5.0 -1.0 0.0 0.0 +59 1336 1337 0.19982930540589838 2.100093867643375 5.199906132356626 5.0 0.9999996348574253 -8.545671514118693E-4 0.0 +60 1366 1365 0.19982930540589838 7.899906132356625 5.199906132356626 5.0 -0.9999996348574253 -8.54567151409647E-4 0.0 +61 1387 1388 0.1985224296849064 2.100920806604384 5.399079193395616 5.0 0.9999720935984714 -0.007470744560612548 0.0 +62 1417 1416 0.1985224296849064 7.899079193395616 5.399079193395616 5.0 -0.9999720935984714 -0.007470744560617022 0.0 +63 1438 1439 0.19286842463761217 2.1052966562177247 5.594703343782276 5.0 0.9992896011733259 -0.03768677469425233 0.0 +64 1468 1467 0.19286842463761217 7.894703343782275 5.594703343782276 5.0 -0.9992896011733259 -0.03768677469425233 0.0 +65 1489 1490 0.17922797450101335 2.1200036677310585 5.779996332268942 5.0 0.9923370853989086 -0.12356014301545262 0.0 +66 1519 1518 0.1792279745010133 7.8799963322689415 5.779996332268942 5.0 -0.992337085398909 -0.12356014301545017 0.0 +67 1540 1541 0.16205351008949234 2.153100189278201 5.9468998107218 5.0 0.9623512072111676 -0.27180903954653235 0.0 +68 1592 1541 0.15204150137885558 2.2053862819294845 6.094613718070517 5.0 0.9173510019639938 -0.39807931269491614 0.0 +69 1570 1569 0.16205351008949234 7.8468998107217995 5.9468998107218 5.0 -0.9623512072111676 -0.27180903954653235 0.0 +70 1620 1569 0.15204150137885525 7.794613718070517 6.094613718070517 5.0 -0.9173510019639958 -0.3980793126949112 0.0 +71 1592 1593 0.14936574143087925 2.268655465949866 6.231344534050136 5.0 0.8970344005639246 -0.4419607269938367 0.0 +72 1620 1619 0.14936574143087944 7.731344534050136 6.231344534050136 5.0 -0.8970344005639234 -0.4419607269938391 0.0 +73 1643 1644 0.14693727343815516 2.3375619968722434 6.3624380031277585 5.0 0.8724861080260123 -0.4886389170968903 0.0 +74 1695 1644 0.1435707247078829 2.41471125344495 6.485288746555051 5.0 0.8184172453517317 -0.5746244099504333 0.0 +75 1671 1670 0.14693727343815494 7.6624380031277575 6.3624380031277585 5.0 -0.8724861080260135 -0.48863891709688795 0.0 +76 1721 1670 0.14357072470788265 7.585288746555052 6.485288746555051 5.0 -0.818417245351733 -0.5746244099504312 0.0 +77 1695 1696 0.14242138818829958 2.5000042419316157 6.599995758068386 5.0 0.785789742830808 -0.6184937186923508 0.0 +78 1747 1696 0.14352724170990078 2.5853868561300413 6.714613143869959 5.0 0.817416291202681 -0.5760473998521768 0.0 +79 1721 1720 0.14242138818830039 7.499995758068385 6.599995758068386 5.0 -0.7857897428308035 -0.6184937186923566 0.0 +80 1771 1720 0.14352724170990025 7.41461314386996 6.714613143869959 5.0 -0.8174162912026839 -0.5760473998521727 0.0 +81 1747 1748 0.14631975496160807 2.663452677375516 6.836547322624485 5.0 0.86486511638293 -0.5020043131925671 0.0 +82 1771 1770 0.1463197549616083 7.336547322624485 6.836547322624485 5.0 -0.8648651163829286 -0.5020043131925694 0.0 +83 1798 1799 0.14585458820103514 2.737561996872243 6.962438003127758 5.0 0.8586257768589282 -0.5126029411868431 0.0 +84 1850 1799 0.14213657216332456 2.8199098000876837 7.080090199912317 5.0 0.7743952368577407 -0.6327021551504655 0.0 +85 1822 1821 0.14585458820103514 7.262438003127757 6.962438003127758 5.0 -0.8586257768589282 -0.5126029411868431 0.0 +86 1872 1821 0.14213657216332456 7.180090199912318 7.080090199912317 5.0 -0.7743952368577407 -0.6327021551504655 0.0 +87 1850 1851 0.14213657216332456 2.9199098000876837 7.180090199912318 5.0 0.6327021551504655 -0.7743952368577407 0.0 +88 1902 1851 0.1458545882010359 3.0375619968722427 7.262438003127757 5.0 0.5126029411868405 -0.8586257768589298 0.0 +89 1903 1852 0.1463197549616083 3.1634526773755165 7.336547322624485 5.0 0.5020043131925694 -0.8648651163829286 0.0 +90 1921 1870 0.1463197549616083 6.836547322624485 7.336547322624485 5.0 -0.5020043131925694 -0.8648651163829286 0.0 +91 1872 1871 0.14213657216332456 7.080090199912317 7.180090199912318 5.0 -0.6327021551504655 -0.7743952368577407 0.0 +92 1922 1871 0.1458545882010359 6.962438003127758 7.262438003127758 5.0 -0.5126029411868405 -0.8586257768589298 0.0 +93 1903 1904 0.1435272417098995 3.2853868561300414 7.414613143869959 5.0 0.5760473998521757 -0.817416291202682 0.0 +94 1955 1904 0.14242138818830075 3.400004241931615 7.499995758068385 5.0 0.618493718692355 -0.7857897428308046 0.0 +95 1921 1920 0.1435272417098995 6.714613143869959 7.414613143869959 5.0 -0.5760473998521757 -0.817416291202682 0.0 +96 1971 1920 0.14242138818830039 6.599995758068386 7.499995758068385 5.0 -0.6184937186923566 -0.7857897428308035 0.0 +97 1955 1956 0.1435707247078823 3.5147112534449496 7.585288746555052 5.0 0.5746244099504326 -0.8184172453517321 0.0 +98 2007 1956 0.14693727343815532 3.637561996872243 7.6624380031277575 5.0 0.48863891709688667 -0.8724861080260142 0.0 +99 2008 1957 0.14936574143087983 3.768655465949866 7.731344534050136 5.0 0.44196072699383787 -0.8970344005639239 0.0 +100 2020 1969 0.14936574143087944 6.231344534050136 7.731344534050136 5.0 -0.4419607269938391 -0.8970344005639234 0.0 +101 1971 1970 0.14357072470788265 6.485288746555051 7.585288746555052 5.0 -0.5746244099504312 -0.818417245351733 0.0 +102 2021 1970 0.1469372734381557 6.362438003127758 7.6624380031277575 5.0 -0.48863891709688545 -0.872486108026015 0.0 +103 2008 2009 0.15204150137885442 3.9053862819294842 7.794613718070517 5.0 0.39807931269491337 -0.9173510019639949 0.0 +104 2060 2009 0.16205351008949345 4.053100189278201 7.8468998107217995 5.0 0.271809039546536 -0.9623512072111665 0.0 +105 2061 2010 0.1792279745010133 4.22000366773106 7.879996332268942 5.0 0.12356014301545017 -0.992337085398909 0.0 +106 2062 2011 0.19286842463761217 4.405296656217725 7.894703343782276 5.0 0.03768677469425233 -0.9992896011733259 0.0 +107 2063 2012 0.1985224296849064 4.600920806604385 7.899079193395617 5.0 0.007470744560617022 -0.9999720935984714 0.0 +108 2064 2013 0.1998293054058975 4.800093867643376 7.899906132356627 5.0 8.545671514096507E-4 -0.9999996348574253 0.0 +109 2065 2014 0.19998303227353897 5.0 7.899991516136771 5.0 -0.0 -1.0 0.0 +110 2066 2015 0.19982930540589838 5.199906132356626 7.899906132356627 5.0 -8.54567151409647E-4 -0.9999996348574253 0.0 +111 2067 2016 0.1985224296849064 5.399079193395617 7.899079193395617 5.0 -0.007470744560617022 -0.9999720935984714 0.0 +112 2068 2017 0.19286842463761217 5.594703343782276 7.894703343782276 5.0 -0.03768677469425233 -0.9992896011733259 0.0 +113 2069 2018 0.1792279745010124 5.779996332268942 7.879996332268942 5.0 -0.12356014301545078 -0.9923370853989089 0.0 +114 2020 2019 0.15204150137885525 6.094613718070516 7.794613718070517 5.0 -0.3980793126949112 -0.9173510019639958 0.0 +115 2070 2019 0.1620535100894926 5.946899810721799 7.8468998107217995 5.0 -0.27180903954653746 -0.9623512072111662 0.0 diff --git a/VCell/tests/smoke/SimID_1585623750_0_00.zip.expected b/VCell/tests/smoke/SimID_1585623750_0_00.zip.expected new file mode 100644 index 0000000000000000000000000000000000000000..f11190efc48edde78bc06debf592e546d4d51411 GIT binary patch literal 253624 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⁢>Cf+%X_|fF|HwepyWCmx+AyOA?)5EcoV^C4BSC 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 TRf_r!B=DmUuQwh@;J^O`?l)wn literal 0 HcmV?d00001 diff --git a/VCell/tests/smoke/SimID_1585623750_0__0.simtask.xml b/VCell/tests/smoke/SimID_1585623750_0__0.simtask.xml new file mode 100644 index 00000000..caace01d --- /dev/null +++ b/VCell/tests/smoke/SimID_1585623750_0__0.simtask.xml @@ -0,0 +1,155 @@ + + + 96485.3321 + 9.64853321E-5 + 1.0E-9 + 6.02214179E11 + 3.141592653589793 + 8314.46261815 + 300.0 + 1.0 + 1.0 + 10.0 + 0.0 + 1000.0 + 2.0 + 2.0 + 0.001660538783162726 + 1000.0 + 1.0 + 10.0 + 0.0 + 10.0 + 10.0 + 4.5E-4 + 0.0 + 0.0 + 0.0 + 1.0 + 1.0 + 1.0 + + + + + (kfl * (RanC_cyt - RanC_nuc)) + ((Kf * RanC_cyt) - ((Kr * Ran_cyt) * C_cyt)) + (AreaPerUnitArea_pm * s2_init_molecules_um_2) + (AreaPerUnitVolume_nm / VolumePerUnitVolume_cyt) + (AreaPerUnitVolume_nm / VolumePerUnitVolume_nuc) + (1.0 + x) + (K_s2_total / AreaPerUnitArea_pm) + (VolumePerUnitVolume_cyt * vcRegionVolume('subdomain1')) + (VolumePerUnitVolume_EC * vcRegionVolume('subdomain0')) + (AreaPerUnitVolume_nm * vcRegionVolume('subdomain1')) + (VolumePerUnitVolume_nuc * vcRegionVolume('subdomain1')) + (AreaPerUnitArea_pm * vcRegionArea('subdomain0_subdomain1_membrane')) + vcRegionArea('subdomain0_subdomain1_membrane') + vcRegionVolume('subdomain0') + vcRegionVolume('subdomain1') + + + + + + + + + ( - J_r0 - (KFlux_nm_cyt * J_flux0)) + RanC_cyt_diffusionRate + RanC_cyt_init_uM + + + J_r0 + Ran_cyt_diffusionRate + Ran_cyt_init_uM + + + J_r0 + C_cyt_diffusionRate + C_cyt_init_uM + + + (KFlux_nm_nuc * J_flux0) + RanC_nuc_diffusionRate + RanC_nuc_init_uM + + + + + + + + + + + + + + + + + + + 0.0 + 0.0 + + + 0.0 + 0.0 + + + 0.0 + 0.0 + + + 0.0 + 0.0 + + + + + + + + + + + + + + + 2 + + 1 + + + + + + + + + + + + + + + ((((x - 5.0) ^ 2.0) + ((y - 5.0) ^ 2.0)) < (3.0 ^ 2.0)) + + + 1.0 + + + + + + + + + + + + + \ No newline at end of file diff --git a/VCell/tests/smoke/smoke.py b/VCell/tests/smoke/smoke.py new file mode 100755 index 00000000..6ef3937a --- /dev/null +++ b/VCell/tests/smoke/smoke.py @@ -0,0 +1,94 @@ +#!/usr/bin/env python3 + +import os +import posixpath +import subprocess +import sys +from pathlib import Path + +import h5py + +def compare_hdf5_structure(file1: Path, file2: Path) -> bool: + def compare_groups(group1, group2): + # Compare group keys + if set(group1.keys()) != set(group2.keys()): + return False + + # Compare attributes + if set(group1.attrs.keys()) != set(group2.attrs.keys()): + return False + for key in group1.attrs.keys(): + if group1.attrs[key] != group2.attrs[key]: + return False + + # Recursively compare sub-groups and datasets + for key in group1.keys(): + item1 = group1[key] + item2 = group2[key] + if isinstance(item1, h5py.Group) and isinstance(item2, h5py.Group): + if not compare_groups(item1, item2): + return False + elif isinstance(item1, h5py.Dataset) and isinstance(item2, h5py.Dataset): + if item1.shape != item2.shape or item1.dtype != item2.dtype: + return False + else: + return False + return True + + with h5py.File(file1, 'r') as f1, h5py.File(file2, 'r') as f2: + return compare_groups(f1, f2) + + +# get the directory of this script +test_dir = os.path.dirname(os.path.realpath(__file__)) +# in the path replace \ with /, D:\ with /d/ +test_dir = test_dir.replace("\\", "/") +# tell os.path.join to use / as the path separator +os.path.sep = "/" +exe = sys.argv[1] + +print(f"test_dir: {test_dir}") +print(f"exe: {exe}") + +fv_input_file = posixpath.join(test_dir, "SimID_1585623750_0_.fvinput") +vcg_input_file = posixpath.join(test_dir, "SimID_1585623750_0_.vcg") +output_file = posixpath.join(test_dir, "SimID_1585623750_0_.hdf5") +expected_output_file = posixpath.join(test_dir, "SimID_1585623750_0_.hdf5.expected") + +if not posixpath.exists(exe): + print(f"FiniteVolume_x64 executable {exe} not found. Exiting...") + sys.exit(1) + +if not posixpath.exists(fv_input_file): + print(f".fvinput input file {fv_input_file} not found. Exiting...") + sys.exit(1) + +if not posixpath.exists(vcg_input_file): + print(f".vcg input file {vcg_input_file} not found. Exiting...") + sys.exit(1) + +if not posixpath.exists(expected_output_file): + print(f"Expected output file {expected_output_file} not found. Exiting...") + sys.exit(1) + +command = [exe, fv_input_file, vcg_input_file] +print(" ".join(command)) + +try: + subprocess.check_call(command) +except subprocess.CalledProcessError: + print("FiniteVolume_x64 failed to run. Exiting...") + sys.exit(1) + +# verify that the output files exist +if not os.path.isfile(output_file): + print(f"Output file {output_file} not found. Exiting...") + sys.exit(1) + +# verify that the output files match the expected output files +if not compare_hdf5_structure(file1=Path(output_file), file2=Path(expected_output_file)): + print(f"Output file {output_file} does not match expected output {expected_output_file}. Exiting...") + sys.exit(1) + +print("FiniteVolume_x64 solver completed and solution matched expected output. Exiting...") +sys.exit(0)