New Reply

Modifying iteration of DO-loop dynamically

 
Share Thread Thread Tools
Jan23-11, 12:53 AM   #1
 

Modifying iteration of DO-loop dynamically


I would like to change the start integer for a DO-loop each time the DO runs as a result of the calculations of the previous iteration. For example the first time the DO runs it should start at 1, the second time at 33, the third time at 60. The numerical value for the end of the loop stays the same. I have tried to change the iterator dynamically as can be seen in the code below, but the g77 gives an error.

ACS = 1
NUME = 0
DO 12, AC = ACS,NH

IF (VI(AC) .NE. 100.0) THEN
VF(AC) = VI(AC)
GOTO 12

ELSEIF (VI(AC) .EQ. 100.0) THEN
DO 80,AB = AC,AC+24
IF (VI(AB) .EQ. 100) NUME = NUME + 1
IF (VI(AB) .NE. 100) GOTO 81

80 CONTINUE
81 IF ((VI(AC-1)- VI(AC+NUME)) .GT. 0.0) THEN
DO 77, VAL = AC,AC+NUME+1
VF(VAL)=VI(AC)-((VI(AC-1)-VI(AC+NUME))/(NUME+1))

77 CONTINUE

ELSEIF ((VI(AC-1)- VI(AC+NUME)) .LT. 0.0) THEN
NUM = 0
DO 99, VAL = AC,AC+NUME-1
NUM = NUM + 1
VF(VAL)=VF(AC+NUM-2)+((VI(AC+NUME)-VI(AC-1))/(NUME+1))
AC = VAL -1 <=== compiler error
99 CONTINUE

How can I modify AC without getting a compiler error or is an alernative logic necessary??
PhysOrg.com
PhysOrg
science news on PhysOrg.com

>> Bird's playlist could signal mental strengths and weaknesses
>> Minus environment, patterns still emerge: Computational study tracks E. coli cells' regulatory mechanisms
>> Bacterium uses natural 'thermometer' to trigger diarrheal disease, scientists find
Jan23-11, 01:02 AM   #2
 
You cannot do it with a do loop. You must construct one out of goto and if statements. You are then free to modify the dummy variable any way you like.
Jan23-11, 07:27 AM   #3
 
Mentor
Or use a DO WHILE loop. The following two loops are equivalent:

Code:
      do 99 k = start, stop
          print *, k
99    continue
Code:
      k = start
      do 99 while (k .le. stop)
          print *, k
          k = k + 1
99    continue
except that with the DO WHILE loop you can modify the loop index variable inside the loop (in fact, that's what this example does!) whereas with the regular DO loop you can't.
New Reply

Tags
do-loop, iteration, modify
Thread Tools


Similar Threads for: Modifying iteration of DO-loop dynamically
Thread Forum Replies
[SOLVED] Riding a Loop the Loop (velocity at the bottom of the loop) Introductory Physics Homework 13
Special relativity - dynamically impossible process of a photon to electron+positron Advanced Physics Homework 1
dynamically tuned gyro(DTG) Mechanical Engineering 1
Does the PA show that DM/DE is dynamically important in the outer solar system? Astrophysics 18
Dynamically Triangulating Gravity hep-th/0105267 Beyond the Standard Model 3