It doesn't have the answer to the question, though. Because the answer is 'um, we don't know'.
First how are you defining concurrent users - they are not really concurrent, and if all those 500 people make a request literally at the same time, there is probably no moodle setup on earth that will handle it promptly. Instead of concurrent users if you can get to a 'expected peak page requests per second' or something, that would be useful in estimating what hardware you need. Unfortunately you probably cannot because it depends entirely on exactly how your users use a system that doesn't exist yet, which you can't possibly know.
At the OU we have >100,000 active students and our moodle installation typically sees >30,000 of those students each day. Typically the daily peak would be ~1,000 different users within a five minute period. These are 'concurrent user' type figures, and not very useful.
However, we also use 'Moodle log table entries per 10 minutes' as an approximate measure of moodle load, and this (again, daily peak) is typically in the <10,000 range.
I could say what hardware our system uses (roughly), but this won't help because if you have an imaginary moodle system, you don't know what your load levels will be.
I would recommend you try to do a gradual launch (eg one department at a time) on whatever hardware, monitor performance; if it's too slow, expand/upgrade the system before you stick another department on. If you really want to throw everything on at once and hope it works, you had probably better overspecify the hardware.
--sam
Edit: 'per 10 minutes' might be too large a range and I realised it was easy to work this out. For yesterday, our peak mdl_logged page requests per second over the period...
individual seconds: 44
avg over 10 seconds: 25.7
avg over 1 minute: 14.3
avg over 10 minutes: 8.2 (oh, so it looks like sunday is less busy)
what's the best one to use, I guess maybe the 1 minute or 10 second figures?
Here's the query
btw (for 10 seconds, hardcoded to yesterday GMT)...
select time/10, count(1) from mdl_log where time >= 1278806400 and time < 1278892800 group by time/10 order by 2 desc
Again, I don't think this is any help to somebody who doesn't already have a working moodle system, but I tihnk this is the type of metric that is probably useful in determining what level of hardware you need. Just a shame you can't do it until you're already running the system by which time you probably know.