@@ -42,44 +42,44 @@ def AdvectionRK4_3D_CROCO(particles, fieldset): # pragma: no cover
4242 It also uses linear interpolation of the W field, which gives much better results than the default C-grid interpolation.
4343 """
4444 dt = _constrain_dt_to_within_time_interval (fieldset .time_interval , particles .time , particles .dt )
45- sigma = particles .z / fieldset .h [particles .time , 0 , particles .lat , particles .lon ]
45+ sigma = particles .z / fieldset .h [particles .time , np . zeros_like ( particles . z ) , particles .lat , particles .lon ]
4646
4747 sig = convert_z_to_sigma_croco (fieldset , particles .time , particles .z , particles .lat , particles .lon , particles )
4848 (u1 , v1 ) = fieldset .UV [particles .time , sig , particles .lat , particles .lon , particles ]
4949 w1 = fieldset .W [particles .time , sig , particles .lat , particles .lon , particles ]
50- w1 *= sigma / fieldset .h [particles .time , 0 , particles .lat , particles .lon ]
50+ w1 *= sigma / fieldset .h [particles .time , np . zeros_like ( particles . z ) , particles .lat , particles .lon ]
5151 lon1 = particles .lon + u1 * 0.5 * dt
5252 lat1 = particles .lat + v1 * 0.5 * dt
5353 sig_dep1 = sigma + w1 * 0.5 * dt
54- dep1 = sig_dep1 * fieldset .h [particles .time , 0 , lat1 , lon1 ]
54+ dep1 = sig_dep1 * fieldset .h [particles .time , np . zeros_like ( particles . z ) , lat1 , lon1 ]
5555
5656 sig1 = convert_z_to_sigma_croco (fieldset , particles .time + 0.5 * dt , dep1 , lat1 , lon1 , particles )
5757 (u2 , v2 ) = fieldset .UV [particles .time + 0.5 * dt , sig1 , lat1 , lon1 , particles ]
5858 w2 = fieldset .W [particles .time + 0.5 * dt , sig1 , lat1 , lon1 , particles ]
59- w2 *= sig_dep1 / fieldset .h [particles .time , 0 , lat1 , lon1 ]
59+ w2 *= sig_dep1 / fieldset .h [particles .time , np . zeros_like ( particles . z ) , lat1 , lon1 ]
6060 lon2 = particles .lon + u2 * 0.5 * dt
6161 lat2 = particles .lat + v2 * 0.5 * dt
6262 sig_dep2 = sigma + w2 * 0.5 * dt
63- dep2 = sig_dep2 * fieldset .h [particles .time , 0 , lat2 , lon2 ]
63+ dep2 = sig_dep2 * fieldset .h [particles .time , np . zeros_like ( particles . z ) , lat2 , lon2 ]
6464
6565 sig2 = convert_z_to_sigma_croco (fieldset , particles .time + 0.5 * dt , dep2 , lat2 , lon2 , particles )
6666 (u3 , v3 ) = fieldset .UV [particles .time + 0.5 * dt , sig2 , lat2 , lon2 , particles ]
6767 w3 = fieldset .W [particles .time + 0.5 * dt , sig2 , lat2 , lon2 , particles ]
68- w3 *= sig_dep2 / fieldset .h [particles .time , 0 , lat2 , lon2 ]
68+ w3 *= sig_dep2 / fieldset .h [particles .time , np . zeros_like ( particles . z ) , lat2 , lon2 ]
6969 lon3 = particles .lon + u3 * dt
7070 lat3 = particles .lat + v3 * dt
7171 sig_dep3 = sigma + w3 * dt
72- dep3 = sig_dep3 * fieldset .h [particles .time , 0 , lat3 , lon3 ]
72+ dep3 = sig_dep3 * fieldset .h [particles .time , np . zeros_like ( particles . z ) , lat3 , lon3 ]
7373
7474 sig3 = convert_z_to_sigma_croco (fieldset , particles .time + dt , dep3 , lat3 , lon3 , particles )
7575 (u4 , v4 ) = fieldset .UV [particles .time + dt , sig3 , lat3 , lon3 , particles ]
7676 w4 = fieldset .W [particles .time + dt , sig3 , lat3 , lon3 , particles ]
77- w4 *= sig_dep3 / fieldset .h [particles .time , 0 , lat3 , lon3 ]
77+ w4 *= sig_dep3 / fieldset .h [particles .time , np . zeros_like ( particles . z ) , lat3 , lon3 ]
7878 lon4 = particles .lon + u4 * dt
7979 lat4 = particles .lat + v4 * dt
8080 sig_dep4 = sigma + w4 * dt
8181
82- dep4 = sig_dep4 * fieldset .h [particles .time , 0 , lat4 , lon4 ]
82+ dep4 = sig_dep4 * fieldset .h [particles .time , np . zeros_like ( particles . z ) , lat4 , lon4 ]
8383 particles .dlon += (u1 + 2 * u2 + 2 * u3 + u4 ) / 6 * dt
8484 particles .dlat += (v1 + 2 * v2 + 2 * v3 + v4 ) / 6 * dt
8585 particles .dz += (
0 commit comments