mirror of
https://github.com/JHUAPL/kaiju.git
synced 2026-01-09 18:57:53 -05:00
Fixing race conditions and uninitialized memory issues with raiju
This commit is contained in:
@@ -106,7 +106,7 @@ module shellInterp
|
||||
case(SHGR_CC)
|
||||
!$OMP PARALLEL DO default(shared) &
|
||||
!$OMP schedule(dynamic) &
|
||||
!$OMP private(i,j)
|
||||
!$OMP private(i,j,goodInterp)
|
||||
do j=sgDest%jsg,sgDest%jeg
|
||||
do i=sgDest%isg,sgDest%ieg
|
||||
if (.not. varOut%mask(i,j)) cycle
|
||||
@@ -125,7 +125,7 @@ module shellInterp
|
||||
case(SHGR_CORNER)
|
||||
!$OMP PARALLEL DO default(shared) &
|
||||
!$OMP schedule(dynamic) &
|
||||
!$OMP private(i,j)
|
||||
!$OMP private(i,j,goodinterp)
|
||||
do j=sgDest%jsg,sgDest%jeg+1
|
||||
do i=sgDest%isg,sgDest%ieg+1
|
||||
if (.not. varOut%mask(i,j)) cycle
|
||||
@@ -142,7 +142,7 @@ module shellInterp
|
||||
case(SHGR_FACE_THETA)
|
||||
!$OMP PARALLEL DO default(shared) &
|
||||
!$OMP schedule(dynamic) &
|
||||
!$OMP private(i,j)
|
||||
!$OMP private(i,j,goodInterp)
|
||||
do j=sgDest%jsg,sgDest%jeg
|
||||
do i=sgDest%isg,sgDest%ieg+1
|
||||
if (.not. varOut%mask(i,j)) cycle
|
||||
@@ -159,7 +159,7 @@ module shellInterp
|
||||
case(SHGR_FACE_PHI)
|
||||
!$OMP PARALLEL DO default(shared) &
|
||||
!$OMP schedule(dynamic) &
|
||||
!$OMP private(i,j)
|
||||
!$OMP private(i,j,goodInterp)
|
||||
do j=sgDest%jsg,sgDest%jeg+1
|
||||
do i=sgDest%isg,sgDest%ieg
|
||||
if (.not. varOut%mask(i,j)) cycle
|
||||
|
||||
@@ -119,7 +119,7 @@ module raijuBCs
|
||||
eleIdx = spcIdx(Grid, F_HOTE)
|
||||
!$OMP PARALLEL DO default(shared) &
|
||||
!$OMP schedule(dynamic) &
|
||||
!$OMP private(i,j,s,fIdx,fm,vm,kT,etaBelow,tmp_kti,tmp_kte,tmp_D,tmp_P)
|
||||
!$OMP private(i,j,s,fIdx,fm,vm,kT,etaBelow,tmp_kti,tmp_kte,eMin,tmp_D,tmp_P)
|
||||
do j=Grid%shGrid%jsg,Grid%shGrid%jeg
|
||||
do i=Grid%shGrid%isg,Grid%shGrid%ieg
|
||||
if (State%active(i,j) .eq. RAIJUINACTIVE) then
|
||||
@@ -309,4 +309,4 @@ module raijuBCs
|
||||
end subroutine setActiveShellsByContribution
|
||||
|
||||
|
||||
end module raijuBCs
|
||||
end module raijuBCs
|
||||
|
||||
@@ -5,6 +5,7 @@ module raijustarter
|
||||
use shellgrid
|
||||
use xml_input
|
||||
use planethelper
|
||||
use arrayutil
|
||||
|
||||
! Raiju
|
||||
use raijudefs
|
||||
@@ -382,71 +383,116 @@ module raijustarter
|
||||
|
||||
! dt for every lambda channel
|
||||
allocate( State%dtk (Grid%Nk) )
|
||||
call fillArray(State%dtk, 0.0_rp)
|
||||
! nSteps for each channel
|
||||
allocate( State%nStepk(Grid%Nk) )
|
||||
call fillArray(State%nStepk, 0)
|
||||
! Where we keep all our stuff
|
||||
allocate( State%eta (sh%isg:sh%ieg, sh%jsg:sh%jeg, Grid%Nk) )
|
||||
call fillArray(State%eta, 0.0_rp)
|
||||
! Where we keep all our stuff but a half-step ahead of now
|
||||
allocate( State%eta_half (sh%isg:sh%ieg, sh%jsg:sh%jeg, Grid%Nk) )
|
||||
call fillArray(State%eta_half, 0.0_rp)
|
||||
! Where we kept all our stuff one step ago
|
||||
allocate( State%eta_last (sh%isg:sh%ieg, sh%jsg:sh%jeg, Grid%Nk) )
|
||||
call fillArray(State%eta_last, 0.0_rp)
|
||||
! Where all the stuff sorta was over the last State%dt
|
||||
allocate( State%eta_avg (sh%isg:sh%ieg, sh%jsg:sh%jeg, Grid%Nk) )
|
||||
call fillArray(State%eta_avg, 0.0_rp)
|
||||
! I shells shat should be evolved for each k
|
||||
allocate( State%activeShells (sh%isg:sh%ieg, Grid%Nk) )
|
||||
State%activeShells = .false.
|
||||
! Effective potential (used for output only)
|
||||
allocate( State%pEff(sh%isg:sh%ieg+1, sh%jsg:sh%jeg+1, Grid%Nk) )
|
||||
call fillArray(State%pEff, 0.0_rp)
|
||||
! Gradient of ionspheric potential
|
||||
allocate( State%gradPotE (sh%isg:sh%ieg+1, sh%jsg:sh%jeg+1, 2) )
|
||||
call fillArray(State%gradPotE, 0.0_rp)
|
||||
! Gradient of corotation potential
|
||||
allocate( State%gradPotCorot (sh%isg:sh%ieg+1, sh%jsg:sh%jeg+1, 2) )
|
||||
call fillArray(State%gradPotCorot, 0.0_rp)
|
||||
! Gradient of (flux tube volume ^ -2/3)
|
||||
allocate( State%gradVM (sh%isg:sh%ieg+1, sh%jsg:sh%jeg+1, 2) )
|
||||
call fillArray(State%gradVM, 0.0_rp)
|
||||
! Interface and cell velocities
|
||||
allocate( State%gradPotE_cc (sh%isg:sh%ieg, sh%jsg:sh%jeg, 2) )
|
||||
call fillArray(State%gradPotE_cc, 0.0_rp)
|
||||
allocate( State%gradPotCorot_cc(sh%isg:sh%ieg, sh%jsg:sh%jeg, 2) )
|
||||
call fillArray(State%gradPotCorot_cc, 0.0_rp)
|
||||
allocate( State%gradVM_cc (sh%isg:sh%ieg, sh%jsg:sh%jeg, 2) )
|
||||
call fillArray(State%gradVM_cc, 0.0_rp)
|
||||
allocate( State%iVel (sh%isg:sh%ieg+1, sh%jsg:sh%jeg+1, Grid%Nk, 2) )
|
||||
call fillArray(State%iVel, 0.0_rp)
|
||||
allocate( State%iVelL(sh%isg:sh%ieg+1, sh%jsg:sh%jeg+1, Grid%Nk, 2) )
|
||||
call fillArray(State%iVelL, 0.0_rp)
|
||||
allocate( State%iVelR(sh%isg:sh%ieg+1, sh%jsg:sh%jeg+1, Grid%Nk, 2) )
|
||||
call fillArray(State%iVelR, 0.0_rp)
|
||||
allocate( State%cVel (sh%isg:sh%ieg , sh%jsg:sh%jeg , Grid%Nk, 2) )
|
||||
call fillArray(State%cVel, 0.0_rp)
|
||||
|
||||
! Coupling input moments
|
||||
allocate( State%Pavg(sh%isg:sh%ieg , sh%jsg:sh%jeg, 0:Grid%nFluidIn) )
|
||||
call fillArray(State%Pavg, 0.0_rp)
|
||||
allocate( State%Davg(sh%isg:sh%ieg , sh%jsg:sh%jeg, 0:Grid%nFluidIn) )
|
||||
call fillArray(State%Davg, 0.0_rp)
|
||||
allocate( State%Pstd(sh%isg:sh%ieg , sh%jsg:sh%jeg, 0:Grid%nFluidIn) )
|
||||
call fillArray(State%Pstd, 0.0_rp)
|
||||
allocate( State%Dstd(sh%isg:sh%ieg , sh%jsg:sh%jeg, 0:Grid%nFluidIn) )
|
||||
call fillArray(State%Dstd, 0.0_rp)
|
||||
allocate( State%domWeights(sh%isg:sh%ieg , sh%jsg:sh%jeg) )
|
||||
call fillArray(State%domWeights, 0.0_rp)
|
||||
allocate( State%tiote(sh%isg:sh%ieg , sh%jsg:sh%jeg) )
|
||||
call fillArray(State%tiote, 0.0_rp)
|
||||
call initShellVar(Grid%shGrid, SHGR_CC, State%Tb)
|
||||
State%Tb%data = 0.0
|
||||
State%Tb%mask = .false.
|
||||
! Bmin surface
|
||||
allocate( State%Bmin (sh%isg:sh%ieg+1, sh%jsg:sh%jeg+1, 3 ) )
|
||||
call fillArray(State%Bmin, 0.0_rp)
|
||||
allocate( State%xyzMin (sh%isg:sh%ieg+1, sh%jsg:sh%jeg+1, 3 ) )
|
||||
call fillArray(State%xyzMin, 0.0_rp)
|
||||
allocate( State%xyzMincc(sh%isg:sh%ieg , sh%jsg:sh%jeg , 3 ) )
|
||||
call fillArray(State%xyzMincc, 0.0_rp)
|
||||
allocate( State%thcon (sh%isg:sh%ieg+1, sh%jsg:sh%jeg+1 ) )
|
||||
call fillArray(State%thcon, 0.0_rp)
|
||||
allocate( State%phcon (sh%isg:sh%ieg+1, sh%jsg:sh%jeg+1 ) )
|
||||
call fillArray(State%phcon, 0.0_rp)
|
||||
! 2D corner quantities
|
||||
allocate( State%topo (sh%isg:sh%ieg+1, sh%jsg:sh%jeg+1) )
|
||||
call fillArray(State%topo, 0)
|
||||
allocate( State%espot (sh%isg:sh%ieg+1, sh%jsg:sh%jeg+1) )
|
||||
call fillArray(State%espot, 0.0_rp)
|
||||
allocate( State%pot_corot(sh%isg:sh%ieg+1, sh%jsg:sh%jeg+1) )
|
||||
call fillArray(State%pot_corot, 0.0_rp)
|
||||
allocate( State%bvol (sh%isg:sh%ieg+1, sh%jsg:sh%jeg+1) )
|
||||
call fillArray(State%bvol, 0.0_rp)
|
||||
allocate( State%bvol_cc (sh%isg:sh%ieg , sh%jsg:sh%jeg ) )
|
||||
call fillArray(State%bvol_cc, 0.0_rp)
|
||||
allocate( State%vaFrac (sh%isg:sh%ieg+1, sh%jsg:sh%jeg+1) )
|
||||
call fillArray(State%vaFrac, 0.0_rp)
|
||||
! 1D cell-centered quantities
|
||||
allocate( State%bndLoc(sh%jsg:sh%jeg) )
|
||||
call fillArray(State%bndLoc, 0)
|
||||
! 2D cell-centered quantities
|
||||
allocate( State%active (sh%isg:sh%ieg, sh%jsg:sh%jeg) )
|
||||
call fillArray(State%active, 0)
|
||||
allocate( State%active_last (sh%isg:sh%ieg, sh%jsg:sh%jeg) )
|
||||
call fillArray(State%active_last, 0)
|
||||
allocate( State%OCBDist(sh%isg:sh%ieg, sh%jsg:sh%jeg) )
|
||||
|
||||
call fillArray(State%OCBDist, 0)
|
||||
|
||||
allocate( State%lossRates (sh%isg:sh%ieg, sh%jsg:sh%jeg, Grid%Nk) )
|
||||
call fillArray(State%lossRates, 0.0_rp)
|
||||
allocate( State%precipType_ele (sh%isg:sh%ieg, sh%jsg:sh%jeg, Grid%Nk) )
|
||||
call fillArray(State%precipType_ele, 0.0_rp)
|
||||
allocate( State%lossRatesPrecip(sh%isg:sh%ieg, sh%jsg:sh%jeg, Grid%Nk) )
|
||||
call fillArray(State%lossRatesPrecip, 0.0_rp)
|
||||
!allocate( State%precipNFlux (sh%isg:sh%ieg, sh%jsg:sh%jeg, Grid%Nk) )
|
||||
!allocate( State%precipEFlux (sh%isg:sh%ieg, sh%jsg:sh%jeg, Grid%Nk) )
|
||||
allocate( State%dEta_dt (sh%isg:sh%ieg, sh%jsg:sh%jeg, Grid%Nk) )
|
||||
call fillArray(State%dEta_dt, 0.0_rp)
|
||||
allocate( State%CCHeatFlux (sh%isg:sh%ieg, sh%jsg:sh%jeg, Grid%Nk) )
|
||||
call fillArray(State%CCHeatFlux, 0.0_rp)
|
||||
! Coupling output data
|
||||
allocate(State%Den (0:Model%nSpc))
|
||||
allocate(State%Press(0:Model%nSpc))
|
||||
@@ -481,10 +527,15 @@ module raijustarter
|
||||
! Only bother allocating persistent versions of debug stuff if we need them
|
||||
if (Model%doOutput_debug) then
|
||||
allocate( State%etaFaceReconL(sh%isg:sh%ieg+1, sh%jsg:sh%jeg+1, Grid%Nk, 2) )
|
||||
call fillArray(State%etaFaceReconL, 0.0_rp)
|
||||
allocate( State%etaFaceReconR(sh%isg:sh%ieg+1, sh%jsg:sh%jeg+1, Grid%Nk, 2) )
|
||||
call fillArray(State%etaFaceReconR, 0.0_rp)
|
||||
allocate( State%etaFacePDML (sh%isg:sh%ieg+1, sh%jsg:sh%jeg+1, Grid%Nk, 2) )
|
||||
call fillArray(State%etaFacePDML, 0.0_rp)
|
||||
allocate( State%etaFacePDMR (sh%isg:sh%ieg+1, sh%jsg:sh%jeg+1, Grid%Nk, 2) )
|
||||
call fillArray(State%etaFacePDMR, 0.0_rp)
|
||||
allocate( State%etaFlux (sh%isg:sh%ieg+1, sh%jsg:sh%jeg+1, Grid%Nk, 2) )
|
||||
call fillArray(State%etaFlux, 0.0_rp)
|
||||
endif
|
||||
|
||||
State%KpTS%wID = Model%tsF
|
||||
@@ -492,7 +543,6 @@ module raijustarter
|
||||
|
||||
end associate
|
||||
|
||||
|
||||
! For now, just set t to tStart and ts to 0
|
||||
State%t = Model%t0
|
||||
State%ts = 0
|
||||
|
||||
@@ -293,10 +293,11 @@ module imag2mhd_interface
|
||||
do i=Gr%isg,Gr%ieg
|
||||
isActive = (j >= Gr%js) .and. (j <= Gr%je) .and. &
|
||||
(k >= Gr%ks) .and. (k <= Gr%ks)
|
||||
if (isActive) cycle
|
||||
!If still here map this ghost to active and set value based on active
|
||||
call lfmIJKcc(Model,Gr,i,j,k,ip,jp,kp)
|
||||
Q(i,j,k) = Q(ip,jp,kp)
|
||||
if(.not. isActive) then
|
||||
!If still here map this ghost to active and set value based on active
|
||||
call lfmIJKcc(Model,Gr,i,j,k,ip,jp,kp)
|
||||
Q(i,j,k) = Q(ip,jp,kp)
|
||||
endif
|
||||
enddo
|
||||
enddo !j
|
||||
enddo !k
|
||||
|
||||
@@ -360,7 +360,12 @@ def main():
|
||||
)
|
||||
if debug:
|
||||
print(f"slack_response_summary = {slack_response_summary}")
|
||||
|
||||
|
||||
# Also write a summary file to the root folder of this test
|
||||
with open(os.path.join(MAGE_TEST_SET_ROOT,'testSummary.out'), 'w', encoding='utf-8') as f:
|
||||
f.write(test_report_details_string)
|
||||
f.write('\n')
|
||||
|
||||
# ------------------------------------------------------------------------
|
||||
|
||||
if debug:
|
||||
|
||||
@@ -378,7 +378,12 @@ def main():
|
||||
)
|
||||
if debug:
|
||||
print(f"slack_response_summary = {slack_response_summary}")
|
||||
|
||||
|
||||
# Also write a summary file to the root folder of this test
|
||||
with open(os.path.join(MAGE_TEST_SET_ROOT,'testSummary.out'), 'w', encoding='utf-8') as f:
|
||||
f.write(test_report_details_string)
|
||||
f.write('\n')
|
||||
|
||||
# ------------------------------------------------------------------------
|
||||
|
||||
if debug:
|
||||
|
||||
@@ -52,6 +52,7 @@ export TMPDIR={{ tmpdir }}
|
||||
export SLACK_BOT_TOKEN={{ slack_bot_token }}
|
||||
export DERECHO_TESTING_ACCOUNT={{ account }}
|
||||
export BRANCH_OR_COMMIT={{ branch_or_commit }}
|
||||
export MAGE_TEST_SET_ROOT={{ mage_test_set_root }}
|
||||
echo 'The active environment variables are:'
|
||||
printenv
|
||||
|
||||
|
||||
@@ -378,6 +378,8 @@ def intelChecks(args: dict):
|
||||
pbs_options["slack_bot_token"] = os.environ["SLACK_BOT_TOKEN"]
|
||||
pbs_options["mage_test_root"] = os.environ["MAGE_TEST_ROOT"]
|
||||
pbs_options["branch_or_commit"] = BRANCH_OR_COMMIT
|
||||
pbs_options["mage_test_set_root"] = os.environ["MAGE_TEST_SET_ROOT"]
|
||||
pbs_options["conda_environment"] = os.environ["CONDA_ENVIRONMENT"]
|
||||
|
||||
# Set options specific to the memory check, then render the template.
|
||||
pbs_options["job_name"] = "mage_intelCheckSubmitMem"
|
||||
|
||||
@@ -35,6 +35,9 @@ DESCRIPTION = 'Create report for Intel Inspector tests.'
|
||||
# Branch or commit (or tag) used for testing.
|
||||
BRANCH_OR_COMMIT = os.environ['BRANCH_OR_COMMIT']
|
||||
|
||||
# Root of directory tree for this set of tests.
|
||||
MAGE_TEST_SET_ROOT = os.environ["MAGE_TEST_SET_ROOT"]
|
||||
|
||||
|
||||
def main():
|
||||
"""Begin main program.
|
||||
@@ -255,7 +258,12 @@ def main():
|
||||
)
|
||||
if debug:
|
||||
print(f"slack_response_summary = {slack_response_summary}")
|
||||
|
||||
|
||||
# Also write a summary file to the root folder of this test
|
||||
with open(os.path.join(MAGE_TEST_SET_ROOT,'testSummary.out'), 'w', encoding='utf-8') as f:
|
||||
f.write(test_report_details_string)
|
||||
f.write('\n')
|
||||
|
||||
# ------------------------------------------------------------------------
|
||||
|
||||
if debug:
|
||||
|
||||
@@ -56,5 +56,8 @@ printenv
|
||||
# Process the data and generate the output video
|
||||
python $KAIPYHOME/kaipy/scripts/quicklook/gamerrVid.py -d1 {{ case1F }} -id1 {{ case1id }} -d2 {{ case2F }} -id2 {{ case2id }} -o {{ frameFolder }}/{{ caseName }} -ts {{ ts }} -te {{ te }} -dt {{ dt }} -Nth 9 >& {{ caseName }}.out
|
||||
|
||||
# copy output video to test root folder
|
||||
cp {{ frameFolder }}/{{ caseName }}.mp4 $MAGE_TEST_SET_ROOT/.
|
||||
|
||||
echo "Job $PBS_JOBID ended at `date` on `hostname` in directory `pwd`."
|
||||
|
||||
|
||||
@@ -234,7 +234,12 @@ def main():
|
||||
)
|
||||
if debug:
|
||||
print(f"slack_response_summary = {slack_response_summary}")
|
||||
|
||||
|
||||
# Also write a summary file to the root folder of this test
|
||||
with open(os.path.join(MAGE_TEST_SET_ROOT,'testSummary.out'), 'w', encoding='utf-8') as f:
|
||||
f.write(test_report_details_string)
|
||||
f.write('\n')
|
||||
|
||||
# ------------------------------------------------------------------------
|
||||
|
||||
if debug:
|
||||
|
||||
Reference in New Issue
Block a user