Hello everybody/reader,(adsbygoogle = window.adsbygoogle || []).push({});

Thank you for reading my post, i have been known to be long winded but i put a abridged version of my question and sectional labels so it can be skimmed easily for relevant information.

note: I Wrote a very explanatory post, which had sections and was written very nicely but i lost it because when i went to post it i put int he wrong password and when i went back it was gone and it didn't save in a draft somewhere(or did it?). This is a bit lazier and more poorly written but the question is this:

I am coding in Fortran 95

THE SHORT VERSION:

Can i assign the value of a single element from a rank 1 array to be the value of a rank zero variable.

Such as: Alpha = Z(1:1), Beta = Z(1:2)

Can i re-define the structure of an array to an equivalent array

Such as: A(n:1) --> A(n) or A(1:n) ---> A(n)

THE LONG VERSION/THE SET UP AND CONTEXT

Using a chebyshev routine i acquired the zero values for a function which plots the trajectories of a mass. the functions do loop ends when (f(1) >= xfinal) and gives as the result the difference between the y(3) value and the desired y(3) value(y(3) is the y axis value, y(1) is the x axis value). It is a boundary value problem, given v0, x0, y0, xfinal, and yfinal find the angle which makes this true. The chebyshev yields the zero values in the form z0(1:iz0) where z0 is the array of the angles which are solutions to the problem, and iz0 is an integer for the number of solutions(which is 2).

I want to extract the values from z0 and assign them to a variable and run the rk4step function to plot the trajectories which solve the problem. I have technically completed the assignment of finding the zero values using the "shoot" method. But, i want to plot them and i could only do it by using human power to read the printed values and manually put them into a new program. There must be a way to do this else it could become very annoying/cumbersome in a more complex problem.

I tried to do

Alpha = zo(1:1)

alpha2 = zo(1:2)

But it says the ranks don't match so it won't compile

I tried

Alpha(1) = zo(1:1)

same thing

i tried

Alpha(1:1) = z0(1:1)

but then it fails when

y(2) = mass*v0*cos(alpha(1:1)

because the ranks don't match again

THE QUESTIONS

Can i extract the value from the array z0 and assign it to a variable defined in a different way(rank 0) or do i have to change all my variables to match?

Can I re-define my z0(1:iz0) to be some new array formatted as z02(iz0) so that it matches the format of y(n_eq)?

THE RANT:

What if this program had multiple subroutines which had variables defined differently, and they are interconnected, and i couldn't use the value from one routine in the other routine just because one can not extract the values from a rank 2 array and put them into a rank 1 array, or from a rank 1 array into a rank 0 array.

This seems like a very limiting thing, I have heard of something called a "leading dimensional array" when we did matrices, must i use the highest dimensional array throughout all the program or is there a way to split the arrays, or down-rank the values in them for use in simpler/lower dimensional programs?

so far, for the most part, online i have read the answer is NO, i cannot assign values to differently ranked variables. But i did find something called "array slicing"??? but i couldn't figure out how to apply it to my problem as the examples it gave seemed irrelevant.

**Physics Forums - The Fusion of Science and Community**

The friendliest, high quality science and math community on the planet! Everyone who loves science is here!

# Assignments of Elements between differently ranked arrays (fortran95)

Loading...

Similar Threads - Assignments Elements between | Date |
---|---|

How, exactly, are chained assignments processed? | Jan 2, 2018 |

Reading matrix elements from a file in Fortran77 | Sep 18, 2017 |

C/++/# Copy and assignment operator | Apr 15, 2017 |

C/++/# Assignment Operator Overloading Question | Mar 30, 2017 |

Fortran Integer overflow on assignment | Dec 26, 2016 |

**Physics Forums - The Fusion of Science and Community**