Skip to content
Snippets Groups Projects
Commit 7398d80e authored by Antoine Cyril David Hoffmann's avatar Antoine Cyril David Hoffmann
Browse files

implicit, lighter writing of loops

parent d047f336
No related merge requests found
...@@ -14,6 +14,49 @@ CONTAINS ...@@ -14,6 +14,49 @@ CONTAINS
CALL set_updatetlevel(mod(updatetlevel,ntimelevel)+1) CALL set_updatetlevel(mod(updatetlevel,ntimelevel)+1)
END SUBROUTINE advance_time_level END SUBROUTINE advance_time_level
SUBROUTINE advance_moments_explicit
USE basic
USE time_integration
USE grid
use prec_const
use fields, ONLY: moments_e, moments_i
use array, ONLY: moments_rhs_e, moments_rhs_i
IMPLICIT NONE
INTEGER :: istage
! Execution time start
CALL cpu_time(t0_adv_field)
SELECT CASE (updatetlevel)
CASE(1)
DO istage=1,ntimelevel
moments_e(ips_e:ipe_e,ijs_e:ije_e,:,:,1) = moments_e(ips_e:ipe_e,ijs_e:ije_e,:,:,1) &
+ dt*b_E(istage)*moments_rhs_e(ips_e:ipe_e,ijs_e:ije_e,:,:,istage)
END DO
! Advance ions
DO istage=1,ntimelevel
moments_i(ips_i:ipe_i,ijs_i:ije_i,:,:,1) = moments_i(ips_i:ipe_i,ijs_i:ije_i,:,:,1) &
+ dt*b_E(istage)*moments_rhs_i(ips_i:ipe_i,ijs_i:ije_i,:,:,istage)
END DO
CASE DEFAULT
! Advance electrons
moments_e(ips_e:ipe_e,ijs_e:ije_e,:,:,updatetlevel) = moments_e(ips_e:ipe_e,ijs_e:ije_e,:,:,1);
DO istage=1,updatetlevel-1
moments_e(ips_e:ipe_e,ijs_e:ije_e,:,:,updatetlevel) = moments_e(ips_e:ipe_e,ijs_e:ije_e,:,:,updatetlevel) &
+ dt*A_E(updatetlevel,istage)*moments_rhs_e(ips_e:ipe_e,ijs_e:ije_e,:,:,istage)
END DO
! Advance ions
moments_i(ips_i:ipe_i,ijs_i:ije_i,:,:,updatetlevel) = moments_i(ips_i:ipe_i,ijs_i:ije_i,:,:,1);
DO istage=1,updatetlevel-1
moments_i(ips_i:ipe_i,ijs_i:ije_i,:,:,updatetlevel) = moments_i(ips_i:ipe_i,ijs_i:ije_i,:,:,updatetlevel) &
+ dt*A_E(updatetlevel,istage)*moments_rhs_i(ips_i:ipe_i,ijs_i:ije_i,:,:,istage)
END DO
END SELECT
! Execution time end
CALL cpu_time(t1_adv_field)
tc_adv_field = tc_adv_field + (t1_adv_field - t0_adv_field)
END SUBROUTINE advance_moments_explicit
SUBROUTINE advance_field( f, f_rhs ) SUBROUTINE advance_field( f, f_rhs )
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment