-
Couldn't load subscription status.
- Fork 1
Regress Script Flow Chart
Matt Thompson edited this page Oct 21, 2025
·
5 revisions
This page details the process in gcm_regress.j. In the below diagram we will assume:
-
NX: 4 -
NY: 24 -
cap_restart:20150414 210000
flowchart TD
Start([Start: 20150414 210000<br/>from cap_restart]) --> InitRestarts[Copy Initial Restarts<br/>from EXPDIR]
InitRestarts --> SetDurations[Set Test Durations:<br/>step1=12hrs<br/>step2=6hrs<br/>step3=6hrs<br/>step4=6hrs<br/>step5=6hrs]
SetDurations --> CaptureLayout[Capture Original Layout:<br/>NX0 = 4<br/>NY0 = 24]
CaptureLayout --> CheckStartStop{RUN_STARTSTOP<br/>== TRUE?}
%% Test 1: 12-hour run
CheckStartStop -->|Yes| Test1Prep[TEST 1 PREP:<br/>CAP.rc JOB_SGMT → 00000000 120000<br/>NX = 4, NY = 24<br/>Use Initial Restarts]
Test1Prep --> Test1Run[RUN TEST 1:<br/>12 hours at 4 x 24<br/>Start: 20150414 210000<br/>End: 20150415 090000<br/>]
Test1Run --> Test1Save[Save checkpoints:<br/>*.20150415_090000.1<br/>nymde1=20150415 nhmse1=090000]
%% Test 2: 6-hour run from beginning
Test1Save --> Test2Prep
CheckStartStop -->|No| Test2Prep[TEST 2 PREP:<br/>CAP.rc JOB_SGMT → 00000000 060000<br/>cap_restart: 20150414 210000<br/>Restore AGCM.rc, HISTORY.rc<br/>Re-copy Initial Restarts from EXPDIR<br/>NX = 4, NY = 24]
Test2Prep --> Test2Run[RUN TEST 2 BASELINE:<br/>6 hours at 4 x 24<br/>Start: 20150414 210000<br/>End: 20150415 030000<br/>Use Initial Restarts]
Test2Run --> Test2Save[Save checkpoints:<br/>*.20150415_030000.2<br/>nymde2=20150415 nhmse2=030000]
Test2Save --> MoveToInput[Copy .2 checkpoints<br/> as restarts<br/>for Test 3]
%% Test 3: Continue from Test 2
MoveToInput --> CheckSS2{RUN_STARTSTOP<br/>== TRUE?}
CheckSS2 -->|Yes| Test3Prep[TEST 3 PREP:<br/>CAP.rc JOB_SGMT → 00000000 060000<br/>cap_restart: 20150415 030000<br/>NX = 4, NY = 24<br/>Use .2 restarts as input]
Test3Prep --> Test3Run[RUN TEST 3:<br/>6 hours at 4 x 24<br/>Start: 20150415 030000<br/>End: 20150415 090000<br/>From Test 2 checkpoints as restarts]
Test3Run --> Test3Save[Save checkpoints:<br/>*.20150415_090000.3<br/>nymde3=20150415 nhmse3=090000]
Test3Save --> Compare1[COMPARE STARTSTOP:<br/>Checkpoints .1 vs .3<br/>Both at 20150415 090000<br/>Should be IDENTICAL<br/>Tests: 12hr straight vs 6hr+6hr]
%% Test 4: Different layout
Compare1 --> CheckLayout{RUN_LAYOUT<br/>== TRUE?}
CheckSS2 -->|No| CheckLayout
CheckLayout -->|Yes| Test4Prep[TEST 4 PREP:<br/>CAP.rc JOB_SGMT → 00000000 060000<br/>AGCM.rc: NX → 4, NY → 12<br/>Update MOM layout to 4 x 12<br/>cap_restart: 20150414 210000<br/>Restore HISTORY.rc<br/>Use Initial Restarts from EXPDIR]
Test4Prep --> Test4Run[RUN TEST 4:<br/>6 hours at 4 x 12<br/>Start: 20150414 210000<br/>End: 20150415 030000<br/>Use Initial Restarts<br/>HALVE THE NY LAYOUT]
Test4Run --> Test4Save[Save checkpoints:<br/>*.20150415_030000.4<br/>nymde4=20150415 nhmse4=030000]
Test4Save --> Compare2[COMPARE LAYOUT:<br/>Checkpoints .2 vs .4<br/>Both at 20150415 030000<br/>Should be IDENTICAL<br/>Tests: layout independence]
%% Test 5: OpenMP test
Compare2 --> CheckOpenMP{RUN_OPENMP<br/>== TRUE?}
CheckLayout -->|No| CheckOpenMP
CheckOpenMP -->|Yes| Test5Prep[TEST 5 PREP:<br/>CAP.rc JOB_SGMT → 00000000 060000<br/>AGCM.rc: NX → 4, NY → 24<br/>Set OMP_NUM_THREADS = 2<br/>cap_restart: 20150414 210000<br/>Restore HISTORY.rc<br/>Use Initial Restarts from EXPDIR]
Test5Prep --> Test5Run[RUN TEST 5:<br/>6 hours at 4 x 24<br/>Start: 20150414 210000<br/>End: 20150415 030000<br/>Use Initial Restarts<br/>with OpenMP:2]
Test5Run --> Test5Save[Save checkpoints:<br/>*.20150415_030000.5<br/>nymde5=20150415 nhmse5=030000]
Test5Save --> Compare3[COMPARE OPENMP:<br/>Checkpoints .2 vs .5<br/>Both at 20150415 030000<br/>Should be IDENTICAL<br/>Tests: OpenMP thread-safety]
Compare3 --> End([End])
CheckOpenMP -->|No| End
style Start fill:#90EE90
style InitRestarts fill:#E6E6FA
style End fill:#FFB6C1
style Test1Run fill:#87CEEB
style Test2Run fill:#90EE90,stroke:#006400,stroke-width:3px
style Test3Run fill:#87CEEB
style Test4Run fill:#DDA0DD
style Test5Run fill:#FFB347
style MoveToInput fill:#FFA07A
style Compare1 fill:#FFD700
style Compare2 fill:#FFD700
style Compare3 fill:#FFD700
style CheckStartStop fill:#FFE4B5
style CheckSS2 fill:#FFE4B5
style CheckLayout fill:#FFE4B5
style CheckOpenMP fill:#FFE4B5